华为云用户手册

  • 事务相关SQL 表1 事务相关SQL 功能 相关SQL 回滚当前事务并且撤销所有当前事务中所做的更改。 ABORT ROLLBACK 开始一个事务/启动事务。 BEGIN SET TRANSACTION START TRANSACTION 设置事务日志检查点。 CHECKPOINT 提交当前事务。 COMMIT | END 提交一个早先为两阶段提交准备好的事务。 COMMIT PREPARED 为当前事务做两阶段提交的准备。 PREPARE TRANSACTION 删除一个当前事务先前定义的保存点。 RELEASE SAVEPOINT 取消一个先前为两阶段提交准备好的事务。 ROLLBACK PREPARED 回滚到一个保存点。 ROLLBACK TO SAVEPOINT 在当前事务里建立一个新的保存点。 SAVEPOINT 设置当前事务检查行为的约束条件。 SET CONSTRAINTS
  • GLOBAL_BGWRITER_STAT GLOBAL_BGWRITER_STAT视图显示所有实例关于后端写线程活动的统计信息,如表1所示。多租场景下,non-PDB访问该视图时正常返回全部信息,PDB访问该视图时返回默认值0(若是时间戳,则是0s对应的时间戳)。 表1 GLOBAL_BGWRITER_STAT字段 名称 类型 描述 node_name name 实例名称。 checkpoints_timed bigint 执行的定期检查点数。 checkpoints_req bigint 执行的需求检查点数。 checkpoint_write_time double precision 在检查点处理过程中执行写入操作所花费的总时间,单位为毫秒。 checkpoint_sync_time double precision 在检查点处理过程中执行同步(sync)操作所花费的总时间,单位为毫秒。 buffers_checkpoint bigint 检查点写缓冲区的数量。 buffers_clean bigint BGWRITER线程写缓冲区的数量。 maxwritten_clean bigint BGWRITER线程停止清理扫描过程的次数(由于单次扫描刷页数量过多导致)。 buffers_backend bigint 后端直接写缓冲区的数量。 buffers_backend_fsync bigint 后端线程自行执行fsync的次数(通常情况下fsync调用由BGWRITER线程执行)。 buffers_alloc bigint 分配的缓冲区数量。 stats_reset timestamp with time zone 本行统计信息上次被重置的时间。 父主题: Utility
  • DB_OBJE CTS DB_OBJECTS视图显示当前用户可访问的数据库对象的信息。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 DB_OBJECTS字段 名称 类型 描述 owner name 对象的所有者。 object_name name 对象的名称。 object_id oid 对象的OID。 object_type name 对象的类型。 namespace oid 对象所在的命名空间的ID。 temporary character(1) 对象是否为临时对象。 status character varying(7) 对象的状态。 valid:有效。 invalid:已失效。 subobject_name name 对象的子对象名称。 generated character(1) 对象名称是否是系统生成。 created timestamp with time zone 对象的创建时间。 last_ddl_time timestamp with time zone 对象的最后修改时间。 default_collation character varying(100) 对象的默认排序规则。 data_object_id numeric 暂不支持,值为NULL。 timestamp character varying(19) 暂不支持,值为NULL。 secondary character varying(1) 暂不支持,值为NULL。 edition_name character varying(128) 暂不支持,值为NULL。 sharing character varying(18) 暂不支持,值为NULL。 editionable character varying(1) 暂不支持,值为NULL。 oracle_maintained character varying(1) 暂不支持,值为NULL。 application character varying(1) 暂不支持,值为NULL。 duplicated character varying(1) 暂不支持,值为NULL。 sharded character varying(1) 暂不支持,值为NULL。 created_appid numeric 暂不支持,值为NULL。 modified_appid numeric 暂不支持,值为NULL。 created_vsnid numeric 暂不支持,值为NULL。 modified_vsnid numeric 暂不支持,值为NULL。 created和last_ddl_time支持的范围请参见PG_OBJECT中的记录范围。 父主题: 其他系统视图
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 --建表并插入数据。 gaussdb=# CREATE TABLE tbl_test(c1 int); gaussdb=# INSERT INTO tbl_test VALUES (generate_series(1,20)); --建立一个名为cursor1的游标。 gaussdb=# BEGIN; gaussdb=# CURSOR cursor1 FOR SELECT * FROM tbl_test ORDER BY 1; --使用MOVE命令使游标向后移动5行,不返回结果。 gaussdb=# MOVE FORWARD 5 FROM cursor1; MOVE 5 --使用FETCH命令检索两行数据。 gaussdb=# FETCH FORWARD 2 FROM cursor1; c1 ---- 6 7 (2 rows) --关闭游标并结束事务。 gaussdb=# CLOSE cursor1; gaussdb=# END; --删除。 gaussdb=# DROP TABLE tbl_test;
  • 语法格式 1 MOVE [ direction [ FROM | IN ] ] cursor_name; 其中direction子句为可选参数。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 NEXT | PRIOR | FIRST | LAST | ABSOLUTE count | RELATIVE count | count | ALL | FORWARD | FORWARD count | FORWARD ALL | BACKWARD | BACKWARD count | BACKWARD ALL
  • GS_SPM_EVOLUTION GS_SPM_EVOLUTION是SPM计划管理特性中的系统表,当前该特性在分布式中不支持。它用于存储计划演进结果的系统表,具备sysadmin权限的用户可以对该系统表进行读操作,但只有初始用户才可以对该系统表进行写的操作。 表1 GS_SPM_EVOLTOIN字段 名称 类型 描述 sql_namespace oid schema oid。 sql_hash bigint SPM中SQL的唯一标识。 plan_hash bigint plan id。 better boolean 是否是正向收益演进: t表示正向收益演进。 f表示负向收益演进。 refer_plan bigint 报告生成主要参考的plan hash。 status integer 演进过程中是否出现异常: 0表示没有发生异常。 1表示有异常发生。 reason text 演进报告的内容。 user oid 生成演进结果的用户。 creation_time timestamp with time zone 创建演进结果的时间。 父主题: SPM计划管理
  • 简化版查询 --创建表。 gaussdb=# CREATE TABLE t1(c1 int, c2 int, c3 int); --插入数据。 gaussdb=# INSERT INTO t1 VALUES (1,2,3); c1 | c2 | c3 ----+----+---- 1 | 2 | 3 (1 row) --查询表的数据。 gaussdb=# TABLE t1; c1 | c2 | c3 ----+----+---- 1 | 2 | 3 (1 row) --删除。 gaussdb=# DROP TABLE t1; 父主题: SELECT
  • GS_PDB GS_PDB系统表存储关于PDB的信息。 字段名称 字段类型 说明 id oid PDB的逻辑ID。 name name PDB名称,与其对应的database同名。 is_opened boolean PDB的开启状态。 true:表示开启。 false:表示关闭。 grp_respool_oid oid PDB对应的资源池ID。 acl aclitem[] 访问权限。 父主题: 多租数据库
  • DBE_PLDEBUGGER.attach server端执行存储过程,停在第一条语句前,等待debug端关联。debug端调用attach,传入nodename和port,关联到该存储过程上,如表1所示。 如果调试过程中报错,attach会自动失效;如果调试过程中attach到其他存储过程上,当前attach的调试也会失效;重复attach会导致当前存储过程断联。 表1 attach 入参和返回值列表 名称 类型 描述 nodename IN text 节点名称。 port IN integer 连接端口号。 funcoid OUT oid 函数id。 funcname OUT text 函数名。 lineno OUT integer 当前调试运行的下一行行号。 query OUT text 当前调试的下一行函数源码。 父主题: DBE_PLDEBUGGER Schema
  • 参数说明 参数 参数说明 ctx 表示给定的上下文。 query 被执行的SQL语句。 args 被执行SQL语句需要绑定的参数。支持按位置绑定和按名称绑定,详情见DB类型中的示例。 Query类接口Query()、QueryContext()、QueryRow()、QueryRowContext()通常用于查询语句,如SELECT语句。操作语句使用Exec()接口执行,若非查询语句通过Query类接口执行,则执行结果可能与预期不符,因此不建议使用Query类接口执行非查询语句,例如UPDATE/INSERT等。 使用Query类接口执行查询语句的结果需要通过type Rows中Next()接口获取,若不通过Next()接口获取,可能会产生不可预期的错误。
  • 列级字符集字符序 每个字符串类型(即类型为CHAR 、VARCHAR、 TEXT等字符串类型)的列都可以设置列的字符集和列的字符序。 CREATE TABLE table_name ( column_name data_type [ CHARACTER SET | CHARSET charset ] [ COLLATE collation ] ); 语法说明: table_name 表名称。 data_type 字段的数据类型,字符串类型支持字符集、字符序语法。 CHARACTER SET | CHARSET charset 指定表字段的字符集,单独指定时会将字段的字符序设置为指定字符集的默认字符序。 COLLATE collation COLLATE子句指定列的字符序(该列的数据类型必须支持字符序)。如果没有指定,则使用默认的排序规则。 GaussDB 通过以下方式选择表字段的字符集和字符序: 如果同时指定了charset和collation,则使用字符集charset和字符序collation ,且charset和collation需要对应,不对应会产生报错。 如果仅指定了charset,则使用字符集 charset 及其默认字符序。 如果仅指定了collation,则使用与collation关联的字符集和指定的字符序。 如果既不指定charset也不指定collation,则使用表的默认字符集和默认字符序。 default_charset仅支持指定为带有默认字符序的字符集,如果指定的字符集没有默认字符序则报错。 default_collation仅支持指定为MYSQL模式下的字符序,指定其他字符序报错。 如果表字段为文本类型且指定的字符序为binary ,则文本类型会转换为对应的二进制类型,字符序为指定的binary字符序。 分区表的分区键的字符集必须与数据库字符集相同。 暂不支持设置表字段的默认字符集和默认字符序与数据库字符集server_encoding不同。 示例: 1 2 3 4 5 6 7 8 -- 仅设置字符集,字符序为字符集的默认字符序 gaussdb=# CREATE TABLE test(c1 text CHARSET utf8); -- 仅设置字符序,字符集为字符序关联的字符集 gaussdb=# CREATE TABLE test(c1 text COLLATE utf8_bin); -- 同时设置字符集与字符序,字符集和字符序需对应 gaussdb=# CREATE TABLE test(c1 text CHARSET utf8 COLLATE utf8_bin); 父主题: 字符集与字符序
  • _PG_FOREIGN_SERVERS 显示外部服务器的信息,如表1所示。该视图只有sysadmin权限可以查看。 表1 _PG_FOREIGN_SERVERS字段 名称 类型 描述 oid oid 外部服务器的oid。 srvoptions text[] 外部服务器指定选项,使用“keyword=value”格式的字符串。 foreign_server_catalog information_schema.sql_identifier 外部服务器所在database名称(永远为当前数据库)。 foreign_server_name information_schema.sql_identifier 外部服务器名称。 foreign_data_wrapper_catalog information_schema.sql_identifier 外部数据封装器所在database名称(永远为当前数据库)。 foreign_data_wrapper_name information_schema.sql_identifier 外部数据封装器名称。 foreign_server_type information_schema.character_data 外部服务器的类型。 foreign_server_version information_schema.character_data 外部服务器的版本。 authorization_identifier information_schema.sql_identifier 外部服务器的所有者的角色名称。 父主题: Information Schema
  • 原型 1 2 3 4 5 6 7 SQLRETURN SQLConnect(SQLHDBC ConnectionHandle, SQLCHAR *ServerName, SQLSMALLINT NameLength1, SQLCHAR *UserName, SQLSMALLINT NameLength2, SQLCHAR *Authentication, SQLSMALLINT NameLength3);
  • 参数 表1 SQLConnect参数 关键字 参数说明 ConnectionHandle 连接句柄,通过SQLAllocHandle获得。 ServerName 要连接数据源的名称。 NameLength1 ServerName的长度。 UserName 数据源中数据库用户名。 NameLength2 UserName的长度。 Authentication 数据源中数据库用户密码。 NameLength3 Authentication的长度。
  • GS_SQLAPPLY_SKIP GS_SQLAPPLY_SKIP系统表存储逻辑回放可跳过执行的规则。 表1 GS_SQLAPPLY_SKIP字段 字段名称 字段类型 说明 createtime timestamp 新建时间戳。 originid int4 复制源标识。 skiptype int4 SKIP类型: 1:SKIP OBJ 2:SKIP TXN 3:SKIP ERR dumpcontext char 转储事务到文件: 'a':转储整个事务。 'n':不转储。 's':仅转储事务跳过的变更。 param1 text 参考表2表3中的字段说明。 param2 text 参考表2表3中的字段说明。 param3 text 参考表2中的字段说明。 param4 text 参考表2中的字段说明。 param5 text 预留字段。 表2 SKIP OBJ或SKIP ERR时,param1-4的字段 字段名称 字段类型 说明 db_name text 数据库名称。 schema_name text 模式名称。 object_name text 对象名称。 stmt_type text SQL语句类型。 表3 SKIP TXN时,param1-2字段 字段名称 字段类型 说明 csn text 事务序列号。 xid text 事务ID。 父主题: 逻辑解码
  • 列级字符集字符序 每个字符串类型(即类型为CHAR 、VARCHAR、 TEXT等字符串类型)的列都可以设置列的字符集和列的字符序。 CREATE TABLE table_name ( column_name data_type [ CHARACTER SET | CHARSET charset ] [ COLLATE collation ] ); 语法说明: table_name 表名称。 data_type 字段的数据类型,字符串类型支持字符集、字符序语法。 CHARACTER SET | CHARSET charset 指定表字段的字符集,单独指定时会将字段的字符序设置为指定的字符集的默认字符序。 COLLATE collation COLLATE子句指定列的字符序(该列的数据类型必须支持字符序)。如果没有指定,则使用默认的排序规则。 GaussDB通过以下方式选择表字段的字符集和字符序: 如果同时指定了charset和collation ,则使用字符集charset和字符序collation,且charset和collation需要对应,不对应会产生报错。 如果仅指定了charset,则使用字符集charset及其默认字符序。 如果仅指定了collation,则使用与collation关联的字符集和指定的字符序。 如果既不指定charset也不指定collation,则使用表的默认字符集和默认字符序。 default_charset仅支持指定为带有默认字符序的字符集,如果指定的字符集没有默认字符序则报错。 default_collation仅支持指定为B模式下的字符序,指定其他字符序报错。 如果表字段为文本类型且指定的字符序为binary,则文本类型会转换为对应的二进制类型,字符序为指定的binary 字符序。 分区表的分区键的字符集必须与数据库字符集相同。 暂不支持设置表字段的默认字符集与数据库字符集server_encoding不同。 示例: 1 2 3 4 5 6 7 8 -- 仅设置字符集,字符序为字符集的默认字符序。 gaussdb=# CREATE TABLE test(c1 text CHARSET utf8); -- 仅设置字符序,字符集为字符序关联的字符集。 gaussdb=# CREATE TABLE test(c1 text COLLATE utf8_bin); -- 同时设置字符集与字符序,字符集和字符序需对应。 gaussdb=# CREATE TABLE test(c1 text CHARSET utf8 COLLATE utf8_bin); 父主题: 字符集与字符序
  • 参数说明 UNLOGGED 指定表为非日志表。在非日志表中写入的数据不会被写入到预写日志中,这样就会比普通表快很多。但是,非日志表在冲突或异常关机后会被自动删截,非日志表中的内容也不会被复制到备用服务器中,在该类表中创建的索引也不会被自动记录。 使用场景:非日志表不能保证数据的安全性,用户应该在确保数据已经做好备份的前提下使用,例如系统升级时进行数据的备份。 故障处理:当异常关机等操作导致非日志表上的索引发生数据丢失时,用户应该对发生错误的索引进行重建。 GLOBAL | LOCAL 创建临时表时可以在TEMP或TEMPORARY前指定GLOBAL或LOCAL关键字。目前这两个关键字的设立,仅是为了兼容SQL标准,实际上无论指定GLOBAL还是LOCAL,GaussDB都会创建本地临时表。 TEMPORARY | TEMP 如果指定TEMP或TEMPORARY关键字,则创建的表为临时表。临时表只在当前会话可见,当前会话结束后会自动删除。因此,若当前会话连接的CN以外的其他CN故障时,仍然可以在当前会话上创建和使用临时表。由于临时表只在当前会话创建,对于涉及对临时表操作的DDL语句,会产生DDL失败的报错。因此,建议DDL语句中不要对临时表进行操作。TEMP和TEMPORARY等价。 临时表通过每个会话独立的以pg_temp开头的SCHEMA来保证只对当前会话可见,因此,不建议用户在日常操作中手动删除以pg_temp,pg_toast_temp开头的SCHEMA。 如果建表时不指定TEMPORARY/TEMP关键字,而指定表的Schema为当前会话的pg_temp开头的Schema,则该表会被创建为临时表。 临时表只对当前会话可见,因此不支持与\parallel on并行执行一起使用。 临时表不支持DN故障或者主备切换。 IF NOT EXISTS 如果指定IF NOT EXISTS关键字,创建表前会在当前Schema中查找是否已有名字相同的relation。若已有同名relation存在,则不会新建,返回NOTICE提示。未指定IF NOT EXISTS关键字时,若Schema中存在同名relation,返回ERROR告警。 table_name 要创建的表名。 取值范围:字符串,要符合标识符命名规范。 column_name 可选。新表中要创建的字段名。如果没有指定字段名,那么新表的字段名和SELECT语句输入的字段名一致。 取值范围:字符串,要符合标识符命名规范。 ENGINE MYSQL模式下支持,仅语法适配,且只支持设置InnoDB,无实际效果。 WITH ( storage_parameter [= value] [, ... ] ) 这个子句为表或索引指定一个可选的存储参数。参数的详细说明如下所示。 FILLFACTOR 一个表的填充因子(fillfactor)是一个介于10和100之间的百分数。在Ustore存储引擎下,该值的默认值为92。100(完全填充)是默认值。如果指定了较小的填充因子,INSERT操作仅按照填充因子指定的百分率填充表页。每个页上的剩余空间将用于在该页上更新行,这就使得UPDATE有机会在同一页上放置同一条记录的新版本,这比把新版本放置在其他页上更有效。对于一个从不更新的表将填充因子设为100是最佳选择,但是对于频繁更新的表,选择较小的填充因子则更加合适。该参数只对行存表有效。 取值范围:10~100 ORIENTATION 取值范围: ROW(缺省值):表的数据将以行式存储。 COMPRESSION 指定表数据的压缩级别,它决定了表数据的压缩比以及压缩时间。一般来讲,压缩级别越高,压缩比也越大,压缩时间也越长;反之亦然。实际压缩比取决于加载的表数据的分布特征。 取值范围: 该参数仅支持列存压缩。 autovacuum_enabled 自动清理功能是否对该表启用。 取值范围:on/off 默认值:on autovacuum_vacuum_threshold 自动清理功能中,指定在该表中触发VACUUM所需的更新或删除的最小元组数(仅对Astore表生效)。 取值范围:0~2147483647 默认值:-1,缺省时与GUC参数autovacuum_vacuum_threshold一致。 autovacuum_analyze_threshold 自动清理功能中,指定在该表中触发ANALYZE所需的插入、更新或删除的最小元组数。 取值范围:0~2147483647 默认值:-1,缺省时与GUC参数autovacuum_analyze_threshold一致。 autovacuum_vacuum_scale_factor 自动清理功能中,指定在该表中触发VACUUM所需的插入、更新或删除元组的比例(仅对Astore表生效)。 取值范围:0.0~100.0 默认值:-1,缺省时与GUC参数autovacuum_vacuum_scale_factor一致。 autovacuum_analyze_scale_factor 自动清理功能中,指定在该表中触发ANALYZE所需的插入、更新或删除元组的比例。 取值范围:0.0~100.0 默认值:-1,缺省时与GUC参数autovacuum_analyze_scale_factor一致。 autovacuum_freeze_min_age 自动清理功能中,在该表参数指定了一个行版本的最小年龄,超过这个年龄的行才会被冻结。 取值范围:0~1000000000 默认值:-1,缺省时与GUC参数vacuum_freeze_min_age一致。 autovacuum_freeze_max_age 自动清理功能中,该表pg_class.relfrozenxid字段在超过多少个事务后,就会强制执行VACUUM操作。即使自动清理被禁用,系统也会启动AUTOVACUUM进程。清理操作还允许从pg_clog/子目录中删除旧文件(仅对Astore表生效)。 取值范围:100000~2000000000 默认值:-1,缺省时与GUC参数autovacuum_freeze_max_age一致。 autovacuum_freeze_table_age 自动清理功能中,该表被标记为不需要自动清理时,将保持不变的时间。(仅对Astore表生效)。 取值范围:0~2000000000 默认值:-1,缺省时与GUC参数vacuum_freeze_table_age一致。 hashbucket 创建hash bucket存储。本参数仅支持行存表和行存range表。 取值范围:on/off 默认值:off 当前版本hashbucket表相关DDL操作性能受限,不建议频繁对hashbucket表进行DDL操作。 ON COMMIT { PRESERVE ROWS | DELETE ROWS } ON COMMIT选项决定在事务中执行创建临时表操作,当事务提交时,此临时表的后续操作。当前仅支持PRESERVE ROWS和DELETE ROWS选项。 PRESERVE ROWS(缺省值):提交时不对临时表执行任何操作,临时表及其表数据保持不变。 DELETE ROWS:提交时删除临时表中数据。 [ ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER n { day | month | year } OF NO MODIFICATION [ ON ( EXPR )]] 创建新表时,可以调用ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW给行存添加高级压缩策略。 AFTER n { day | month | year } OF NO MODIFICATION :表示n天/月/年没有修改的行。 ON ( EXPR ):行级表达式,用于判断行的冷热。 TABLESPACE tablespace_name 指定新表将要在tablespace_name表空间内创建。如果没有声明,将使用默认表空间。 DISTRIBUTE BY 详细信息见•DISTRIBUTE BY。 TO { GROUP groupname | NODE ( nodename [, ... ] ) } TO GROUP指定创建表所在的Node Group。TO NODE主要供内部扩容工具使用,一般用户不应该使用。 AS query 一个SELECT VALUES命令或者一个运行预备好的SELECT或VALUES查询的EXECUTE命令。 [ WITH [ NO ] DATA ] 创建表时,是否也插入查询到的数据。默认是要数据,选择“NO”参数时,则不要数据。
  • 语法格式 1 2 3 4 5 6 7 8 9 10 11 CREATE [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name [ (column_name [, ...] ) ] [ { ENGINE [ = ] { InnoDB | 'InnoDB' | "InnoDB" } } [ [ , ] ... ] ] [ WITH ( {storage_parameter = value} [, ... ] ) ] [ ON COMMIT { PRESERVE ROWS | DELETE ROWS } ] [ ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER n { day | month | year } OF NO MODIFICATION [ ON ( EXPR )]] [ TABLESPACE tablespace_name ] [ DISTRIBUTE BY { REPLICATION | { [HASH ] ( column_name ) } } ] [ TO { GROUP groupname | NODE ( nodename [, ... ] ) } ] AS query [ WITH [ NO ] DATA ]; 各个字段详细信息见语法格式。
  • 功能描述 根据查询结果创建表。 CREATE TABLE AS创建一个表并且用来自SELECT命令的结果填充该表。该表的字段和SELECT输出字段的名称及数据类型相关。不过用户可以通过明确地给出一个字段名称列表来覆盖SELECT输出字段的名称。 CREATE TABLE AS和创建视图有些相似,CREATE TABLE AS会创建一个新表并且只计算该查询一次用来将数据写入新表中。这个表之后将不会根据源表变化而改变。相反视图只要被查询,它的定义SELECT语句将会被重新计算。
  • GS_AUDITING_POLICY_FILTERS GS_AUDITING_POLICY_FILTERS系统表记录统一审计相关的过滤策略相关信息,每条记录对应一个设计策略。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 表1 GS_AUDITING_POLICY_FILTERS字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 filtertype name 过滤类型。目前值仅为logical_expr。 labelname name 名称。目前值仅为logical_expr。 policyoid oid 所属审计策略的OID,对应审计策略系统表GS_AUDITING_POLICY中的oid。 modifydate timestamp without time zone 创建或修改的最新时间戳。 logicaloperator text 过滤条件的逻辑字符串。 父主题: 审计
  • GS_SPM_SQL_PA RAM GS_SPM_SQL_PARAM是用于查看当前用户SQL参数信息的视图,普通用户以上权限均可以访问该视图。 表1 GS_SPM_SQL_PARAM字段 名称 类型 描述 sql_namespace oid Schema的OID。 sql_hash bigint 当前Schema中SQL的唯一标识。 sql_text text SQL的文本串。 position integer 参数在SQL中的位置索引,从0开始。 datatype integer 参数类型的OID。 datatype_string text 参数类型的字符串形式。 value_string text 参数值的字符串形式。 is_null boolean 参数值是否是NULL。 hash_value bigint 参数值的哈希值 。 creation_time timestamp with time zone 本记录的创建时间。 父主题: SPM计划管理
  • 参数 表1 SQLBindParameter 关键词 参数说明 StatementHandle 语句句柄。 ParameterNumber 参数序号,起始为1,依次递增。 InputOutputType 输入输出参数类型。可以是SQL_PARAM_INPUT、SQL_PARAM_OUTPUT、SQL_PARAM_INPUT_OUTPUT。 ValueType 参数的C数据类型。可以是SQL_C_CHAR、SQL_C_LONG、SQL_C_DOUBLE等。 ParameterType 参数的SQL数据类型。可以是SQL_CHAR、SQL_INTEGER、SQL_DOUBLE等。 ColumnSize 相应参数标记的列或表达式的大小。 DecimalDigits 相应参数标记的列或表达式的十进制数字。 ParameterValuePtr 指向存储参数数据缓冲区的指针。 BufferLength ParameterValuePtr指向缓冲区的长度,以字节为单位。 StrLen_or_IndPtr 缓冲区的长度或指示器指针。若为空值,则未使用任何长度或指示器值。
  • SUMMARY_WORKLOAD_TRANSACTION 显示集群内汇聚的负载事务信息,如表1所示。 表1 SUMMARY_WORKLOAD_TRANSACTION字段 名称 类型 描述 workload name 负载的名称。 commit_counter numeric 用户事务commit数量。 rollback_counter numeric 用户事务rollback数量。 resp_min bigint 用户事务最小响应时间(单位:微秒)。 resp_max bigint 用户事务最大响应时间(单位:微秒)。 resp_avg bigint 用户事务平均响应时间(单位:微秒)。 resp_total numeric 用户事务总响应时间(单位:微秒)。 bg_commit_counter numeric 后台事务commit数量。 bg_rollback_counter numeric 后台事务rollback数量。 bg_resp_min bigint 后台事务最小响应时间(单位:微秒)。 bg_resp_max bigint 后台事务最大响应时间(单位:微秒)。 bg_resp_avg bigint 后台事务平均响应时间(单位:微秒)。 bg_resp_total numeric 后台事务总响应时间(单位:微秒)。 dbid oid 统计信息所属的数据库id。 父主题: Workload
  • 原型 1 2 3 4 5 6 7 8 9 10 SQLRETURN SQLBindParameter(SQLHSTMT StatementHandle, SQLUSMALLINT ParameterNumber, SQLSMALLINT InputOutputType, SQLSMALLINT ValuetType, SQLSMALLINT ParameterType, SQLULEN ColumnSize, SQLSMALLINT DecimalDigits, SQLPOINTER ParameterValuePtr, SQLLEN BufferLength, SQLLEN *StrLen_or_IndPtr);
  • PG_OBJECT PG_OBJECT系统表存储限定类型对象(普通表,索引,序列,视图,存储过程和函数)的创建用户、创建时间和最后修改时间。 表1 PG_OBJECT字段 名称 类型 描述 object_oid oid 对象标识符。 object_type "char" 对象类型: r :表示普通表 i :表示索引 s :表示序列 v :表示视图 P :表示存储过程和函数 S :表示包头 B :表示包体 creator oid 对象的所有者。 ctime timestamp with time zone 对象的创建时间。 mtime timestamp with time zone 对象的最后修改时间,修改行为包括ALTER操作和GRANT、REVOKE操作。 createcsn bigint 对象创建时的 CS N。 changecsn bigint 对表或索引执行DDL操作时的CSN。 valid boolean 对象的有效性,t为有效,f为无效。 无法记录初始化数据库(initdb)过程中所创建或修改的对象,即PG_OBJECT无法查询到该对象记录。 对于升级前创建的对象,再次修改时会记录其修改时间(mtime),对表或索引执行DDL操作时会记录其所属事务的事务提交序列号(changecsn)。由于无法得知该对象创建时间,因此ctime和createcsn为空。 ctime和mtime所记录的时间为用户当次操作所属事务的起始时间。 由扩容引起的对象修改时间也会被记录。 createcsn和changecsn记录的是用户当次操作所属事务的事务提交序列号。 enable_gtt_concurrent_truncate开启时,truncate全局临时表不会刷新mtime字段。 执行对象创建语句时,存在未定义的对象,或所依赖的对象有修改或删除动作时,对象会为无效状态。 父主题: 其他系统表
  • 参数说明 plan_hint子句 以/*+ */的形式在MERGE关键字后,用于对MERGE对应的语句块生成的计划进行hint调优,详细用法请参见章节使用Plan Hint进行调优。每条语句中只有第一个/*+ plan_hint */注释块会作为hint生效,里面可以写多条hint。 INTO子句 指定正在更新或插入的目标表。目标表为复制表时,暂不支持目标表中某列默认值为volatile函数(如自增列),enable_stream_operator=off时目标表需要包含主键或带有unique not null。 table_name 目标表的表名。 alias 目标表的别名。 取值范围:字符串,符合标识符命名规范。 USING子句 指定源表,源表可以为表、视图或子查询。目标表为复制表时,暂不支持USING子句中包含非复制表。 ON子句 关联条件,用于指定目标表和源表的关联条件。不支持更新关联条件中的字段。 WHEN MATCHED子句 当源表和目标表中数据针对关联条件可以匹配上时,选择WHEN MATCHED子句进行UPDATE操作。 不支持更新分布列。不支持更新系统表、系统列。 WHEN NOT MATCHED子句 当源表和目标表中数据针对关联条件无法匹配时,选择WHEN NOT MATCHED子句进行INSERT操作。 不支持INSERT子句中包含多个VALUES。 WHEN MATCHED和WHEN NOT MATCHED子句顺序可以交换,可以缺省其中一个,但不能同时缺省,不支持同时指定两个WHEN MATCHED或WHEN NOT MATCHED子句。 DEFAULT 用对应字段的缺省值填充该字段。 如果没有缺省值,则为NULL。 WHERE condition UPDATE子句和INSERT子句的条件,只有在条件满足时才进行更新操作,可缺省。不支持WHERE条件中引用系统列。不建议使用int等数值类型作为condition,因为int等数值类型可以隐式转换为bool值(非0值隐式转换为true,0转换为false),可能导致非预期的结果。
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 -- 创建目标表products和源表newproducts,并插入数据 gaussdb=# CREATE TABLE products ( product_id INTEGER, product_name VARCHAR2(60), category VARCHAR2(60) ); gaussdb=# INSERT INTO products VALUES (1501, 'vivitar 35mm', 'electrncs'); gaussdb=# INSERT INTO products VALUES (1502, 'olympus is50', 'electrncs'); gaussdb=# INSERT INTO products VALUES (1600, 'play gym', 'toys'); gaussdb=# INSERT INTO products VALUES (1601, 'lamaze', 'toys'); gaussdb=# INSERT INTO products VALUES (1666, 'harry potter', 'dvd'); gaussdb=# CREATE TABLE newproducts ( product_id INTEGER, product_name VARCHAR2(60), category VARCHAR2(60) ); gaussdb=# INSERT INTO newproducts VALUES (1502, 'olympus camera', 'electrncs'); gaussdb=# INSERT INTO newproducts VALUES (1601, 'lamaze', 'toys'); gaussdb=# INSERT INTO newproducts VALUES (1666, 'harry potter', 'toys'); gaussdb=# INSERT INTO newproducts VALUES (1700, 'wait interface', 'books'); -- 进行MERGE INTO操作 gaussdb=# MERGE INTO products p USING newproducts np ON (p.product_id = np.product_id) WHEN MATCHED THEN UPDATE SET p.product_name = np.product_name, p.category = np.category WHERE p.product_name != 'play gym' WHEN NOT MATCHED THEN INSERT VALUES (np.product_id, np.product_name, np.category) WHERE np.category = 'books'; MERGE 4 -- 查询更新后的结果 gaussdb=# SELECT * FROM products ORDER BY product_id; product_id | product_name | category ------------+----------------+----------- 1501 | vivitar 35mm | electrncs 1502 | olympus camera | electrncs 1600 | play gym | toys 1601 | lamaze | toys 1666 | harry potter | toys 1700 | wait interface | books (6 rows) -- 删除表 gaussdb=# DROP TABLE products; gaussdb=# DROP TABLE newproducts;
  • 语法格式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 MERGE [/*+ plan_hint */] INTO table_name [ [ AS ] alias ] USING { { table_name | view_name } | subquery } [ [ AS ] alias ] ON ( condition ) [ WHEN MATCHED THEN UPDATE SET { column_name = { expression | DEFAULT } | ( column_name [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...] [ WHERE condition ] ] [ WHEN NOT MATCHED THEN INSERT { DEFAULT VALUES | [ ( column_name [, ...] ) ] VALUES ( { expression | DEFAULT } [, ...] ) [, ...] [ WHERE condition ] } ];
  • 参数 表1 SQLGetDiagRec参数 关键字 参数说明 HandleType 句柄类型标识符,它说明诊断所要求的句柄类型。必须为下列值之一: SQL_HANDLE_ENV SQL_HANDLE_DBC SQL_HANDLE_STMT SQL_HANDLE_DESC Handle 诊断数据结构的句柄,其类型由HandleType来指出。如果HandleType是SQL_HANDLE_ENV,Handle可以是共享的或非共享的环境句柄。 RecNumber 指出应用从查找信息的状态记录。状态记录从1开始编号。 SQLState 输出参数:指向缓冲区的指针,该缓冲区存储着有关RecNumber的五字符的SQLSTATE码。 NativeErrorPtr 输出参数:指向缓冲区的指针,该缓冲区存储着本地的错误码。 MessageText 指向缓冲区的指针,该缓冲区存储着诊断信息文本串。 BufferLength MessageText的长度。 TextLengthPtr 输出参数:指向缓冲区的指针,返回MessageText中的字节总数。如果返回字节数大于BufferLength,则MessageText中的诊断信息文本被截断成BufferLength减去NULL结尾字符的长度。
  • 注意事项 SQLGetDiagRec不发布自己的诊断记录。用下列返回值来报告自己的执行结果: SQL_SUC CES S:函数成功返回诊断信息。 SQL_SUCCESS_WITH_INFO:MessageText太小以致不能容纳所请求的诊断信息。没有诊断记录生成。 SQL_INVALID_HANDLE:由HandleType和Handle所指出的句柄是不合法句柄。 SQL_ERROR:RecNumber小于等于0或BufferLength小于0。 如果调用ODBC函数返回SQL_ERROR或SQL_SUCCESS_WITH_INFO,可调用SQLGetDiagRec返回诊断信息SQLSTATE值,如表2所示。 表2 SQLSTATE值 SQLSATATE 错误 描述 HY000 一般错误 未定义特定的SQLSTATE所产生的错误。 HY001 内存分配错误 驱动程序不能分配所需要的内存来支持函数的执行或完成。 HY008 取消操作 调用SQLCancel取消执行语句后,依然在StatementHandle上调用函数。 HY010 函数系列错误 在为执行中的所有数据参数或列发送数据前就调用了执行函数。 HY013 内存管理错误 不能处理函数调用,可能由当前内存条件差引起。 HYT01 连接超时 数据源响应请求之前,连接超时。 IM001 驱动程序不支持此函数 调用了StatementHandle相关的驱动程序不支持的函数。
共100000条