华为云用户手册

  • 示例 --创建表。 gaussdb=# CREATE TABLE char_type_t1 ( CT_COL1 CHARACTER(4) ); --插入数据。 gaussdb=# INSERT INTO char_type_t1 VALUES ('ok'); --查询表中的数据。 gaussdb=# SELECT ct_col1, char_length(ct_col1) FROM char_type_t1; ct_col1 | char_length ---------+------------- ok | 4 (1 row) --删除表。 gaussdb=# DROP TABLE char_type_t1; --创建表。 gaussdb=# CREATE TABLE char_type_t2 ( CT_COL1 VARCHAR(5) ); --插入数据。 gaussdb=# INSERT INTO char_type_t2 VALUES ('ok'); gaussdb=# INSERT INTO char_type_t2 VALUES ('good'); --插入的数据长度超过类型规定的长度报错。 gaussdb=# INSERT INTO char_type_t2 VALUES ('too long'); ERROR: value too long for type character varying(5) CONTEXT: referenced column: ct_col1 --明确类型的长度,超过数据类型长度后会自动截断。 gaussdb=# INSERT INTO char_type_t2 VALUES ('too long'::varchar(5)); --查询数据。 gaussdb=# SELECT ct_col1, char_length(ct_col1) FROM char_type_t2; ct_col1 | char_length ---------+------------- ok | 2 good | 4 too l | 5 (3 rows) --删除数据。 gaussdb=# DROP TABLE char_type_t2;
  • 语法格式 1 CREATE USER user_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' [EXPIRED] | DISABLE }; 其中option子句用于设置权限及属性等信息。 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 {SYSADMIN | NOSYSADMIN} | {MONADMIN | NOMONADMIN} | {OPRADMIN | NOOPRADMIN} | {POLADMIN | NOPOLADMIN} | {AUDITADMIN | NOAUDITADMIN} | {CREATEDB | NOCREATEDB} | {USEFT | NOUSEFT} | {CREATEROLE | NOCREATEROLE} | {INHERIT | NOINHERIT} | {LOGIN | NOLOGIN} | {REPLICATION | NOREPLICATION} | {VCADMIN | NOVCADMIN} | {PERSISTENCE | NOPERSISTENCE} | CONNECTION LIMIT connlimit | VALID BEGIN 'timestamp' | VALID UNTIL 'timestamp' | USER GROUP 'groupuser' | PERM SPACE 'spacelimit' | TEMP SPACE 'tmpspacelimit' | SPILL SPACE 'spillspacelimit' | NODE GROUP logic_cluster_name | IN ROLE role_name [, ...] | IN GROUP role_name [, ...] | ROLE role_name [, ...] | ADMIN role_name [, ...] | USER role_name [, ...] | SYSID uid | DEFAULT TABLESPACE tablespace_name | PROFILE DEFAULT | PROFILE profile_name | PGUSER
  • 示例 --创建用户jim,登录密码为*******。 gaussdb=# CREATE USER jim PASSWORD '********'; --下面语句与上面的等价。 gaussdb=# CREATE USER kim IDENTIFIED BY '********'; --如果创建有“创建数据库”权限的用户,则需要加CREATEDB关键字。 gaussdb=# CREATE USER dim CREATEDB PASSWORD '********'; --将用户jim的登录密码由********修改为**********。 gaussdb=# ALTER USER jim IDENTIFIED BY '**********' REPLACE '********'; --为用户jim追加CREATEROLE权限。 gaussdb=# ALTER USER jim CREATEROLE; --锁定jim账户。 gaussdb=# ALTER USER jim ACCOUNT LOCK; --删除用户。 gaussdb=# DROP USER kim CASCADE; gaussdb=# DROP USER jim CASCADE; gaussdb=# DROP USER dim CASCADE;
  • 事务管理 在ecpg缺省模式下,语句只有在EXEC SQL COMMIT发出的时候才被提交,嵌入的SQL接口也支持事务的自动提交(通过EXEC SQL SET AUTOCOMMIT TO ON语句设置自动提交)。在自动提交模式下,每条命令都是自动提交的,除非它们包围在一个明确的事务块里。自动提交模式可以用EXEC SQL SET AUTOCOMMIT TO OFF语句关闭。 常见事务管理命令如下: EXEC SQL COMMIT:提交正在进行的事务。 EXEC SQL ROLLBACK:回滚正在进行的事务。 EXEC SQL SET AUTOCOMMIT TO ON:启动自动提交模式。 EXEC SQL SET AUTOCOMMIT TO OFF:关闭自动提交模式,缺省模式。 父主题: 执行SQL命令
  • 参数说明 CHECK 仅在节点列表为TO ALL时可以指定。如果指定该参数,会在清理连接之前检查数据库是否被其他会话连接访问。此参数主要用于DROP DATABASE之前的连接访问检查,如果发现有其他会话连接,则将报错并停止删除数据库。 FORCE 仅在节点列表为TO ALL时可以指定,如果指定该参数,所有和指定dbname和username相关的线程都会收到SIGTERM信号,然后被强制关闭。 COORDINATOR ( nodename [, ... ] ) | NODE ( nodename [, ... ] ) | ALL 仅支持TO ALL,必须指定该参数,节点上的指定连接会被全部删除。 dbname 删除指定数据库上的连接。如果不指定,则删除所有数据库的连接。 取值范围:已存在数据库名。 username 删除指定用户上的连接。如果不指定,则删除所有用户的连接。 取值范围:已存在的用户。
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 --创建jack用户。 CREATE USER jack PASSWORD '********'; --删除用户jack在数据库template1上的所有连接。 CLEAN CONNECTION TO ALL FOR DATABASE template1 TO USER jack; --删除用户jack的所有连接。 CLEAN CONNECTION TO ALL TO USER jack; --删除在数据库gaussdb上的所有连接。 CLEAN CONNECTION TO ALL FORCE FOR DATABASE gaussdb; --删除用户jack。 DROP USER jack;
  • DB_DEPENDENCIES DB_DEPENDENCIES视图显示当前用户可访问的类型、表、视图、存储过程、函数、触发器之间的依赖关系。所有用户都可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 DB_DEPENDENCIES字段 名称 类型 描述 owner name 对象的所有者。 name name 对象的名称。 type character varying(18) 对象的类型。 referenced_owner name 被引用对象的所有者。 referenced_name name 被引用对象的名称。 referenced_type character varying(18) 被引用对象的类型。 referenced_link_name character varying(128) 暂不支持,值为NULL。 dependency_type character varying(4) 暂不支持,值为NULL。 父主题: 系统视图
  • DBE_SQL_UTIL.create_hint_sql_patch create_hint_sql_patch是用于创建调优SQL PATCH的接口函数,返回执行是否成功。本函数是原函数的重载函数,支持通过parent_unique_sql_id值限制hint patch的生效范围。 限制仅初始用户、sysadmin、opradmin、monadmin用户有权限调用。 表1 DBE_SQL_UTIL.create_hint_sql_patch重载函数入参和返回值列表 参数 类型 描述 patch_name IN name PATCH名称。 unique_sql_id IN bigint 查询全局唯一ID。 parent_unique_sql_id IN bigint 标识外层SQL语句的全局唯一ID,值为0时表示限制存储过程外语句SQL PATCH生效;非0值表示限制特定存储过程生效。 hint_string IN text Hint文本。 description IN text PATCH的备注,默认值为NULL。 enabled IN bool PATCH是否生效,默认值为true。 result OUT bool 执行是否成功。 父主题: DBE_SQL_UTIL Schema
  • 功能描述 创建一个预备语句。 预备语句是服务端的对象,可以用于优化性能。在执行PREPARE语句的时候,指定的查询被解析、分析、重写。当随后发出EXECUTE语句的时候,预备语句被规划和执行。这种设计避免了重复解析、分析工作。PREPARE语句创建后在整个数据库会话期间一直存在,一旦创建成功,即便是在事务块中创建,事务回滚,PREPARE也不会删除。只能通过显式调用DEALLOCATE进行删除,会话结束时,PREPARE也会自动删除。
  • PG_STAT_ACTIVITY_NG PG_STAT_ACTIVITY_NG视图显示在当前用户所属的逻辑数据库实例下,所有查询的相关信息。 表1 PG_STAT_ACTIVITY_NG字段 名称 类型 描述 datid oid 用户会话在后台连接到的数据库OID。 datname name 用户会话在后台连接到的数据库名称。 pid bigint 后台线程ID。 sessionid bigint 会话ID。 usesysid oid 登录该后台的用户OID。 usename name 登录该后台的用户名。 application_name text 连接到该后台的应用名。 client_addr inet 连接到该后台的客户端的IP地址。 如果该字段取值是null,表明是通过服务器机器上UNIX套接字连接客户端或者这是内部线程,如autovacuum。 client_hostname text 客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。 client_port integer 客户端用于与后台通讯的TCP端口号,如果使用Unix套接字,则为-1。 backend_start timestamp with time zone 该会话开始的时间,即当客户端连接服务器的时间。 xact_start timestamp with time zone 当前活跃事务开始的时间,如果没有事务是活跃的,则为null。如果当前查询是首个事务,则这列等同于query_start列。 query_start timestamp with time zone 当前活跃查询开始的时间, 如果state的值不是active,则这个值是上一个查询的开始时间。如果是存储过程、函数、package,则显示的是第一个查询时间,不会随着存储过程内语句运行而改变。 state_change timestamp with time zone 上次状态改变的时间。 waiting boolean 如果后台当前正等待锁则为true。否则为false。 enqueue text 语句当前排队状态。可能值是: waiting in queue:表示语句在排队中。 空:表示语句正在运行。 state text 该后台当前总体状态。可能值是: active:后台正在执行一个查询。 idle:后台正在等待一个新的客户端命令。 idle in transaction:后台在事务中,但事务中没有语句在执行。 idle in transaction (aborted):后台在事务中,但事务中有语句执行失败。 fastpath function call:后台正在执行一个fast-path函数。 disabled:如果后台禁用track_activities,则报告这个状态。 说明: 普通用户只能查看到自己账户所对应的会话状态。即其他账户的state信息为空。例如以judy用户连接数据库后,在pg_stat_activity中查看到的普通用户joe及初始用户omm的state信息为空: SELECT datname, usename, usesysid, state,pid FROM pg_stat_activity_ng; datname | usename | usesysid | state | pid ----------+---------+----------+--------+----------------- testdb | omm | 10 | | 139968752121616 testdb | omm | 10 | | 139968903116560 db_tpcds | judy | 16398 | active | 139968391403280 testdb | omm | 10 | | 139968643069712 testdb | omm | 10 | | 139968680818448 testdb | joe | 16390 | | 139968563377936 (6 rows) resource_pool name 用户使用的资源池。 query_id bigint 查询语句的ID。 query text 该后台的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。 node_group text 语句所属用户对应的逻辑数据库实例。 父主题: 系统视图
  • PG_AUTHID PG_AUTHID系统表存储有关数据库认证标识符(角色)的信息。角色把“用户”的概念包含在内。一个用户实际上就是一个rolcanlogin标志被设置的角色。任何角色(不管rolcanlogin设置与否)都能够把其他角色作为成员。 在一个集群中只有一份pg_authid,不是每个数据库有一份。需要有系统管理员权限才可以访问此系统表。 表1 PG_AUTHID字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 rolname name 角色名称。 rolsuper boolean 角色是否是拥有最高权限的初始系统管理员。 t(true):表示是。 f(false):表示不是。 rolinherit boolean 角色是否自动继承其所属角色的权限。 t(true):表示自动继承。 f(false):表示不自动继承。 rolcreaterole boolean 角色是否可以创建更多角色。 t(true):表示可以。 f(false):表示不可以。 rolcreatedb boolean 角色是否可以创建数据库。 t(true):表示可以。 f(false):表示不可以。 rolcatupdate boolean 角色是否可以直接更新系统表。只有usesysid=10的初始系统管理员拥有此权限。其他用户无法获得此权限。 t(true):表示可以。 f(false):表示不可以。 rolcanlogin boolean 角色是否可以登录,也就是说,这个角色可以给予会话认证标识符。 t(true):表示可以。 f(false):表示不可以。 rolreplication boolean 角色是否具有复制权限。 t(true):表示有。 f(false):表示没有。 rolauditadmin boolean 角色是否具有审计管理员权限。 t(true):表示有。 f(false):表示没有。 rolsystemadmin boolean 角色是否具有系统管理员权限。 t(true):表示有。 f(false):表示没有。 rolconnlimit integer 对于可以登录的角色,限制其最大并发连接数量。 -1 表示没有限制。 rolpassword text 口令(可能是加密的),如果没有口令,则为NULL。 rolvalidbegin timestamp with time zone 账户的有效开始时间,如果没有开始时间,则为NULL。 rolvaliduntil timestamp with time zone 账户的有效结束时间,如果没有结束时间,则为NULL。 rolrespool name 用户所能够使用的resource pool。 roluseft boolean 角色是否可以操作外表。 t(true):表示可以。 f(false):表示不可以。 rolparentid oid 用户所在组用户的OID。 roltabspace text 用户数据表的最大空间限额。 rolkind "char" 特殊用户种类。 p:表示永久用户。 n:表示普通用户。 roltempspace text 用户临时表的最大空间限额,单位 KB。 rolspillspace text 用户执行作业时下盘数据的最大空间限额,单位 KB。 rolexcpdata text 用户可以设置的查询规则(当前未使用)。 rolmonitoradmin boolean 角色是否具有监控管理员权限。 t(true):表示有。 f(false):表示没有。 roloperatoradmin boolean 角色是否具有运维管理员权限。 t(true):表示有。 f(false):表示没有。 rolpolicyadmin boolean 角色是否具有安全策略管理员权限。 t(true):表示有。 f(false):表示没有。 父主题: 系统表
  • DBE_SQL_UTIL.enable_sql_patch enable_sql_patch是用于开启SQL PATCH的接口函数,返回执行是否成功。 限制仅初始用户、sysadmin、opradmin、monadmin用户有权限调用。 表1 DBE_SQL_UTIL.enable_sql_patch入参和返回值列表 参数 类型 描述 patch_name IN name PATCH名称。 result OUT bool 执行是否成功。 父主题: DBE_SQL_UTIL Schema
  • TRANSACTIONS_RUNNING_XACTS 显示当前节点运行事务的信息。 表1 TRANSACTIONS_RUNNING_XACTS字段 名称 类型 描述 handle integer 事务在GTM对应的句柄。 gxid xid 事务id号。 state tinyint 事务状态(3:prepared或者0:starting)。 node text 节点名称。 xmin xid 节点上当前数据涉及的最小事务号xmin。 vacuum boolean 标志当前事务是否是lazy vacuum事务。 timeline bigint 标志数据库重启次数。 prepare_xid xid 处于prepared状态的事务的id号,若不在prepared状态,值为0。 pid bigint 事务对应的线程id。 next_xid xid CN传给DN的事务id号。 父主题: Transaction
  • STAT_SYS_INDEXES 显示当前节点pg_catalog、information_schema以及pg_toast模式中所有系统表的索引状态信息。 表1 STAT_SYS_INDEXES字段 名称 类型 描述 relid oid 此索引的表的OID。 indexrelid oid 索引的OID。 schemaname name 索引所在的Schema名。 relname name 索引的表名。 indexrelname name 索引名。 idx_scan bigint 该索引上执行的索引扫描次数。 idx_tup_read bigint 该索引上扫描返回的索引项数。 idx_tup_fetch bigint 使用该索引的简单索引扫描在原表中抓取的活跃行数。 父主题: Object
  • Instance Efficiency Percentages Instance Efficiency Percentages指标名称及描述如下表所示。 表1 Instance Efficiency Percentages报表主要内容 指标名称 描述 Buffer Hit % Buffer Pool命中率。 Effective CPU % CPU time占DB time的比例。 WalWrite NoWait % 访问WAL Buffer的event次数占总wait event的比例。 Soft Parse % 软解析的次数占总的解析次数的比例。 Non-Parse CPU % 非parse的时间占执行总时间的比例。 父主题: WDR报告信息介绍
  • PG_GET_SENDERS_CATCHUP_TIME PG_GET_SENDERS_CATCHUP_TIME视图显示DN上当前活跃的主备发送线程的追赶信息。 表1 PG_GET_SENDERS_CATCHUP_TIME字段 名称 类型 描述 pid bigint 当前sender的线程ID。 lwpid integer 当前sender的lwpid。 local_role text 本地的角色。 peer_role text 对端的角色。 state text 当前sender的复制状态。 Startup:启动状态。 Backup:备份状态。 Catchup:追赶状态,表示备节点正在追赶主节点。 Streaming:流复制状态,当备节点追上主节点后维持Streaming状态。 type text 当前sender的类型。 Wal:预写入日志类型。 Data:数据类型。 catchup_start timestamp with time zone catchup启动的时间。 catchup_end timestamp with time zone catchup结束的时间。 父主题: 系统视图
  • GS_AUDITING_PRIVILEGE GS_AUDITING_PRIVILEGE视图显示对数据库DDL相关操作的所有审计信息。需要有系统管理员或安全策略管理员权限才可以访问此视图。 表1 GS_AUDITING_PRIVILEGE字段 名称 类型 描述 polname name 策略名称,需要唯一,不可重复。 pol_type text 审计策略类型,值为‘privilege’,表示审计DDL操作。 polenabled boolean 策略是否启动。 t(true):表示启动。 f(false):表示不启动。 access_type name DDL数据库操作相关类型。例如CREATE、ALTER、DROP等。 label_name name 资源标签名称。对应系统表gs_auditing_policy中的polname字段。 priv_object text 包含数据库对象的全称域名。 filter_name text 过滤条件的逻辑字符串。 父主题: 系统视图
  • GLOBAL_WLM_WORKLOAD_RUNTIME 显示当前用户在每个CN上执行作业时在CN上的状态信息。需要有监控管理员权限才可以访问。 表1 GLOBAL_WAL_WORKLOAD_RUNTIME字段 名称 类型 描述 node_name text 作业执行所在的CN的名称。 thread_id bigint 后端线程ID。 processid integer 线程的lwpid。 time_stamp bigint 语句执行的开始时间。 username name 登录到该后端的用户名。 memory integer 语句所需的内存大小。 active_points integer 语句在资源池上消耗的资源点数。 max_points integer 资源在资源池上的最大资源数。 priority integer 作业的优先级。 resource_pool text 作业所在资源池。 status text 作业执行的状态,包括: pending: 阻塞状态。 running:执行状态。 finished:结束状态。 aborted:终止状态。 unkown:未知状态。 control_group name 作业所使用的Cgroups。 enqueue text 作业的排队信息,包括: GLOBAL:全局排队。 RESPOOL:资源池排队。 ACTIVE:不排队。 query text 正在执行的语句。 父主题: Workload Manager
  • 示例 --创建表student1。 gaussdb=# CREATE TABLE student1 ( stuno int, classno int ); --插入数据。 gaussdb=# INSERT INTO student1 VALUES(1,1); gaussdb=# INSERT INTO student1 VALUES(2,2); gaussdb=# INSERT INTO student1 VALUES(3,3); --查看数据。 gaussdb=# SELECT * FROM student1; --直接更新所有记录的值。 gaussdb=# UPDATE student1 SET classno = classno*2; --查看数据。 gaussdb=# SELECT * FROM student1; --删除表。 gaussdb=# DROP TABLE student1; --WHERE CURRENT OF cursor_name用例 gaussdb=# create table t1(c1 int, c2 varchar2) with (storage_type = 'ustore', fillfactor=100); -- 创建表 gaussdb=# insert into t1 values(generate_series(1,1000),'abcd'); -- 插入数据 gaussdb=# declare gaussdb-# cursor cur1 is select * from t1 where c1 = 1 for update; gaussdb-# va t1%rowtype; gaussdb-# begin gaussdb$# open cur1; gaussdb$# fetch cur1 into va; gaussdb$# update t1 set c2 = c2 || c2 where current of cur1; -- 使用WHERE CURRENT OF cursor_name更新数据 gaussdb$# close cur1; gaussdb$# commit; gaussdb$# end; gaussdb$# / gaussdb=# select * from t1 where c1 = 1; -- 查询数据 gaussdb=# drop table t1; --删除表
  • 语法格式 单表更新: [ WITH [ RECURSIVE ] with_query [, ...] ] UPDATE [/*+ plan_hint */] [ ONLY ] table_name [ partition_clause ] [ * ] [ [ AS ] alias ] SET {column_name = { expression | DEFAULT } |( column_name [, ...] ) = {( { expression | DEFAULT } [, ...] ) |sub_query }}[, ...] [ FROM from_list] [ WHERE condition | WHERE CURRENT OF cursor_name ] [ ORDER BY {expression [ [ ASC | DESC | USING operator ] [ LIMIT { count } ] [ RETURNING {* | {output_expression [ [ AS ] output_name ]} [, ...] }]; 多表更新: [ WITH [ RECURSIVE ] with_query [, ...] ] UPDATE [/*+ plan_hint */] table_list SET {column_name = { expression | DEFAULT } |( column_name [, ...] ) = {( { expression | DEFAULT } [, ...] ) |sub_query }}[, ...] [ FROM from_list] [ WHERE condition ]; where sub_query can be: SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] { * | {expression [ [ AS ] output_name ]} [, ...] } [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY grouping_element [, ...] ] [ HAVING condition [, ...] ] [ ORDER BY {expression [ [ ASC | DESC | USING operator ] | nlssort_expression_clause ] [ NULLS { FIRST | LAST } ]} [, ...] ] [ LIMIT { [offset,] count | ALL } ]
  • 注意事项 表的所有者、拥有表UPDATE权限的用户或拥有UPDATE ANY TABLE权限的用户,有权更新表中的数据,系统管理员默认拥有此权限。 对expression或condition条件里涉及到的任何表要有SELECT权限。 生成列不能被直接写入。在UPDATE命令中不能为生成列指定值,但是可以指定关键字DEFAULT。 对于多表更新语法,暂时不支持对视图和含有RULE的表进行多表更新。 对于子查询是stream计划的UPDATE语句,不支持并发更新同一行。 不支持用户通过update系统表的方式将数据库编码更改为GB18030_2022字符集或将GB18030_2022字符集数据库更改为其他字符编码,进行更改数据库字符编码的操作会导致存量数据和部分操作异常。若需更改数据库的字符集编码,应当遵循切库流程,进行相关的数据迁移操作。
  • 参数说明 WITH [ RECURSIVE ] with_query [, ...] 用于声明一个或多个可以在主查询中通过名称引用的子查询,相当于临时表。这种子查询语句结构称为CTE(Common Table Expression)结构,应用这种结构时,执行计划中将存在CTE SCAN的内容。 如果声明了RECURSIVE,那么允许SELECT子查询通过名称引用它自己。 其中with_query的详细格式为:with_query_name [ ( column_name [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( {select | values | insert | update | delete} ) with_query_name指定子查询生成的结果集名称,在查询中可使用该名称访问子查询的结果集。 column_name指定子查询结果集中显示的列名。 每个子查询可以是SELECT、VALUES、INSERT、UPDATE或DELETE语句。 用户可以使用MATERIALIZED / NOT MATERIALIZED对CTE进行修饰。 如果声明为MATERIALIZED,WITH查询将被物化,生成一个子查询结果集的拷贝,在引用处直接查询该拷贝,因此WITH子查询无法和主干SELECT语句进行联合优化(如谓词下推、等价类传递等),对于此类场景可以使用NOT MATERIALIZED进行修饰,如果WITH查询语义上可以作为子查询内联执行,则可以进行上述优化。 如果用户没有显示声明物化属性则遵守以下规则:如果CTE只在所属SELECT主干中被引用一次,且语义上支持内联执行,则会被改写为子查询内联执行,否则以CTE Scan的方式物化执行。 plan_hint子句 以/*+ */的形式在UPDATE关键字后,用于对UPDATE对应的语句块生成的计划进行hint调优,详细用法请参见章节使用Plan Hint进行调优。每条语句中只有第一个/*+ plan_hint */注释块会作为hint生效,里面可以写多条hint。 table_name 要更新的表名,可以使用模式修饰。 取值范围:已存在的表名称。 支持使用DATABASE LINK方式对远端表进行操作,使用方式详情请见DATABASE LINK。 partition_clause 指定分区更新操作 PARTITION { ( partition_name ) | FOR ( partition_value [, ...] ) } | SUBPARTITION { ( subpartition_name ) | FOR ( subpartition_value [, ...] ) } 关键字详见SELECT一节介绍 示例详见CREATE TABLE SUBPARTITION alias 目标表的别名。 取值范围:字符串,符合标识符命名规范。 table_list 一个表的表达式列表,与from_list类似,但可以同时声明目标表和关联表,仅在多表更新语法中使用。 column_name 要修改的字段名。 支持使用目标表的别名加字段名来引用这个字段。例如: UPDATE foo AS f SET f.col_name = 'namecol'; 取值范围:已存在的字段名。 expression 赋给字段的值或表达式。 DEFAULT 用对应字段的缺省值填充该字段。 如果没有缺省值,则为NULL。 sub_query 子查询。 使用同一数据库里其他表的信息来更新一个表可以使用子查询的方法。其中SELECT子句具体介绍请参考SELECT。 在UPDATE单列时,支持使用ORDER BY子句与LIMIT子句;而在UPDATE多列时,则不支持使用ORDER BY子句与LIMIT子句。 对于UPDATE t1 SET (c1,c2) = (SELECT c1, c2 FROM t2 ...)形式的UPDATE语句,在执行计划中,对于每一个字段,会生成一个子计划。当更新字段数较多时,子计划数量较多,对性能影响较大。 from_list 一个表的表达式列表,允许在WHERE条件里使用其他表的字段。与在一个SELECT语句的FROM子句里声明表列表类似。 目标表绝对不能出现在from_list里,除非在使用一个自连接(此时它必须以from_list的别名出现)。 condition 一个返回Boolean类型结果的表达式。只有这个表达式返回true的行才会被更新。不建议使用int等数值类型作为condition,因为int等数值类型可以隐式转换为Boolean值(非0值隐式转换为true,0转换为false),可能导致非预期的结果。 WHERE CURRENT OF cursor_name 当cursor指向表的某一行时,可以使用此语法更新cursor当前指向的行。 cursor_name:指定游标的名称。 B兼容模式的数据库不支持使用此语法。 此语法仅支持普通表,不支持分区表。 仅支持在存储过程中使用。 不支持与其他WHERE条件组合使用。 不支持多表更新。 不支持与WITH、USING、ORDER BY、FROM组合使用。 CURSOR对应的SELECT语句必须声明为FOR UPDATE。 CURSOR对应的SELECT语句仅支持单表,不支持LIMIT/OFFSET,不支持带有子查询、子链接。 存储过程中声明为FOR UPDATE的CURSOR,在COMMIT/ROLLBACK后,将无法再次使用。 若CURSOR指向的行已经不存在,在A兼容性模式下将报错指定的行不存在(仅UPDATE时报错,DELETE不报错),其他兼容模式下不报错。 ORDER BY子句 关键字详见SELECT章节介绍。 LIMIT子句 关键字详见SELECT章节介绍。 output_expression 在所有需要更新的行都被更新之后,UPDATE命令用于计算返回值的表达式。 取值范围:使用任何TABLE以及FROM中列出的表的字段。*表示返回所有字段。 output_name 字段的返回名称。
  • 参数 表1 PQsetdbLogin参数 关键字 参数说明 pghost 要连接的主机名,详见连接参数描述的host字段。 pgport 主机服务器的端口号,详见连接参数描述的port字段。 pgoptions 添加命令行选项以在运行时发送到服务器,详见连接参数描述的options字段。 pgtty 忽略(以前该选项声明服务器日志的输出方向) dbName 要连接的数据库名,详见连接参数描述的dbname字段。 login 要连接的用户名,详见连接参数描述的user字段。 pwd 如果服务器要求口令认证,所用的口令,详见连接参数描述的password字段。
  • GS_MODEL_WAREHOUSE GS_MODEL_WAREHOUSE系统表用于存储AI引擎训练模型,其中包含模型,训练过程的详细描述。 表1 GS_MODEL_WAREHOUSE字段 名称 数据类型 描述 oid oid 隐含列。 modelname name 唯一约束。 modelowner oid 模型拥有者的OID。 createtime timestamp without time zone 模型创建的时间。 processedtuples integer 训练涉及的元组数。 discardedtuples integer 未参加训练的不合格元组数。 preprocesstime real 数据预处理时长。 exectime real 训练时长。 iterations integer 迭代轮次。 outputtype oid 模型输出的数据类型OID。 modeltype text AI算子的类型名称。 query text 创建模型所执行的query语句。 modeldata bytea 保存的二进制模型信息。 weight real[] 目前只适用于GD算子模型。 hyperparametersnames text[] 涉及的超参名称。 hyperparametersvalues text[] 超参所对应的取值。 hyperparametersoids oid[] 超参对应的数据类型OID。 coefnames text[] 模型参数名称。 coefvalues text[] 模型参数对应的取值。 coefoids oid[] 模型参数对应的数据类型OID。 trainingscoresname text[] 度量模型性能方法的名称。 trainingscoresvalue real[] 度量模型性能方法的数值。 modeldescribe text[] 模型的描述信息。 父主题: 系统表
  • ADM_AUDIT_OBJECT ADM_AUDIT_OBJECT显示数据库中所有对象的审计跟踪记录,该视图同时存在于pg_catalog和sys schema下。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。GaussDB的action_name字段与ORA数据库审计动作不一致,transactionid字段与ORA数据库中transactionid数据的类型保持一致,GaussDB的sql_text字段为解析后sql描述语句,不完全与执行的sql语句相同。 表1 ADM_AUDIT_OBJECT字段 名称 类型 描述 os_username character varying(255) 暂不支持,值为NULL。 username character varying(128) 操作被审计的用户的名称,不是用户ID。 userhost character varying(128) 暂不支持,值为NULL。 terminal character varying(255) 暂不支持,值为NULL。 timestamp timestamp(0) without time zone 在本地数据库会话时区中创建审计跟踪条目的日期和时间(由审计会话创建的条目的用户登录日期和时间)。 owner character varying(128) 受操作影响的对象的创建者。 obj_name character varying(128) 受操作影响的对象的名称。 action_name character varying(28) DBA_AUDIT_TRAIL中的“操作”列中的数字代码对应的动作类型名称。 new_owner character varying(128) 暂不支持,值为NULL。 new_name character varying(128) 暂不支持,值为NULL。 ses_actions character varying(19) 暂不支持,值为NULL。 comment_text character varying(4000) 暂不支持,值为NULL。 sessionid numeric 暂不支持,值为NULL。 entryid numeric 暂不支持,值为NULL。 statementid numeric 暂不支持,值为NULL。 returncode numeric 暂不支持,值为NULL。 priv_used character varying(40) 暂不支持,值为NULL。 client_id character varying(128) 暂不支持,值为NULL。 econtext_id character varying(64) 暂不支持,值为NULL。 session_cpu numeric 暂不支持,值为NULL。 extended_timestamp timestamp(6) with time zone 在UTC(协调世界时)时区创建审计跟踪条目的时间戳(由审计会话创建的条目的用户登录时间戳) proxy_sessionid numeric 暂不支持,值为NULL global_uid character varying(32) 暂不支持,值为NULL instance_numeric numeric 暂不支持,值为NULL os_process character varying(16) 暂不支持,值为NULL transactionid text 访问或修改对象的事务的事务标识符。 scn numeric 暂不支持,值为NULL sql_bind Ncharacter varying(2000) 暂不支持,值为NULL sql_text Ncharacter varying(2000) 查询的SQL文本 obj_edition_name character varying(128) 暂不支持,值为NULL 父主题: 系统视图
  • 命名SQL描述符区域 一个命名SQL描述符区域由一个头部以及一个或多个条目描述符区域构成。头部包含与整个描述区域相关的信息,而条目描述符区域则描述结果行中的某一列。 在使用SQL描述符区域之前,需要分配一个SQL描述符区域: EXEC SQL ALLOCATE DESCRIPTOR identifier; 当不再需要这个描述符区域时,应及时释放: EXEC SQL DEALLOCATE DESCRIPTOR identifier; 要使用一个描述符区域,需要使用INTO子句声明: EXEC SQL FETCH NEXT FROM mycursor INTO SQL DESCRIPTOR mydesc; 如果结果集为空,该描述符区域仍会包含查询的元数据。 对于还没有执行的预备查询,可以使用DESCRIBE得到其结果集的元数据: EXEC SQL BEGIN DECLARE SECTION; char *sql_stmt = "SELECT * FROM table1"; EXEC SQL END DECLARE SECTION; EXEC SQL PREPARE stmt1 FROM :sql_stmt; EXEC SQL DESCRIBE stmt1 INTO SQL DESCRIPTOR mydesc; 在DESCRIBE和FETCH语句中,INTO和USING关键词的使用相似:它们产生结果集以及一个描述符区域的元数据。 从头部检索一个描述符区域的值并且将其存储到一个宿主变量中: EXEC SQL GET DESCRIPTOR name :hostvar = field; 当前只定义了一个头部描述符区域COUNT,它存放描述符区域的条目(即结果集中包含多少列),宿主变量为一个整数类型,需从条目描述符区域中得到一个具体值: EXEC SQL GET DESCRIPTOR name VALUE num :hostvar = field; num可以是一个字符整数或者一个包含整数的宿主变量。可能的类型如下: CARDINALITY(整数):结果集中的行数 DATA:实际的数据项(这个范围的实际数据类型取决于查询) DATETIME_INTERVAL_CODE(整数):当TYPE是9时,DATETIME_INTERVAL_CODE将具有以下值之一:1表示DATE,2表示TIME,3表示TIMESTAMP,4表示TIME WITH TIME ZONE,5表示TIMESTAMP WITH TIME ZONE。 INDICATOR(整数):指示符(表示一个空值或者一个值截断) LENGTH(整数):以字符计的数据长度 NAME(string):列名 OCTET_LENGTH(整数):以字节计的数据字符表达的长度 PRECISION(整数):精度(用于类型numeric) RETURNED_LENGTH(整数):以字符计的数据长度 RETURNED_OCTET_LENGTH(整数):以字节计的数据字符表达的长度 SCALE(整数):比例(用于类型numeric) TYPE(整数):列的数据类型的数字编码 要检索字段数值并且把它存储到一个宿主变量里,使用如下命令: EXEC SQL GET DESCRIPTOR mydesc VALUE num :hostvar = field num可以是一个字符整数或者一个包含整数的宿主变量。可 能的字段有: DATA 实际数据项(这个字段的数据类型依赖于这个查询) NAME(string) 字段名称 手动建立一个描述符区域为一个查询或游标提供输入参数,使用如下命令: EXEC SQL SET DESCRIPTOR name VALUE numfield = :hostvar; 在一个FETCH语句中检索多行记录且用数组类型的宿主变量来存储数据,示例如下: EXEC SQL BEGIN DECLARE SECTION; int id[5]; EXEC SQL END DECLARE SECTION; EXEC SQL FETCH 5 FROM mycursor INTO SQL DESCRIPTOR mydesc; EXEC SQL GET DESCRIPTOR mydesc VALUE 1 :id = DATA; 父主题: SQL描述符区域
  • STAT_BAD_BLOCK 获得当前节点表、索引等文件的读取失败信息。 表1 STAT_BAD_BLOCK字段 名称 类型 描述 nodename text 节点名称。 databaseid integer database的oid。 tablespaceid integer tablespace的oid。 relfilenode integer relation的file node。 bucketid smallint 一致性hash bucket ID。 forknum integer fork编号。 error_count integer error的数量。 first_time timestamp with time zone 页面损坏第一次出现的时间。 last_time timestamp with time zone 页面损坏最后出现的时间。 父主题: Object
  • delimiter_name 参数说明:保存一个delimiter分隔符名称。 gsql客户端识别到分隔符的时候,会立即将输入的一条或多条SQL语句发送到服务端执行。该用法可以用在输入语句较多,并且语句中存在分号时,指定一个特殊的符号作为结束符。该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 此参数只提供在gsql客户端设置,可以通过DELIMITER命令配置。 取值范围:字符串,长度大于0 默认值:";"
  • PG_STATIO_SYS_TABLES PG_STATIO_SYS_TABLES视图显示命名空间中所有系统表的I/O状态信息。 表1 PG_STATIO_SYS_TABLES字段 名称 类型 描述 relid oid 表OID。 schemaname name 该表的模式名。 relname name 表名。 heap_blks_read bigint 从该表中读取的磁盘块数。 heap_blks_hit bigint 该表命中缓存数。 idx_blks_read bigint 从表中所有索引读取的磁盘块数。 idx_blks_hit bigint 表中所有索引命中缓存数。 toast_blks_read bigint 从该表的TOAST表读取的磁盘块数(如果存在)。 toast_blks_hit bigint 该表的TOAST表命中缓存数(如果存在)。 tidx_blks_read bigint 从该表的TOAST表索引读取的磁盘块数(如果存在)。 tidx_blks_hit bigint 该表的TOAST表索引命中缓存数(如果存在)。 父主题: 系统视图
  • STATIO_SYS_TABLES STATIO_SYS_TABLES视图显示命名空间中所有系统表的I/O状态信息。 表1 STATIO_SYS_TABLES字段 名称 类型 描述 relid oid 表OID。 schemaname name 该表模式名。 relname name 表名。 heap_blks_read bigint 从该表中读取的磁盘块数。 heap_blks_hit bigint 该表缓存命中数。 idx_blks_read bigint 从表中所有索引读取的磁盘块数。 idx_blks_hit bigint 表中所有索引命中缓存数。 toast_blks_read bigint 该表的TOAST表读取的磁盘块数(如果存在)。 toast_blks_hit bigint 该表的TOAST表命中缓冲区数(如果存在)。 tidx_blks_read bigint 该表的TOAST表索引读取的磁盘块数(如果存在)。 tidx_blks_hit bigint 该表的TOAST表索引命中缓冲区数(如果存在)。 父主题: Cache/IO
共100000条