华为云用户手册

  • PG_EXT_STATS PG_EXT_STATS视图可用来访问存储在PG_STATISTIC_EXT表里面的扩展统计信息。扩展统计信息目前包括多列统计信息。 表1 PG_EXT_STATS字段 名称 类型 引用 描述 schemaname name PG_NAMESPACE.nspname 表的模式名。 tablename name PG_CLASS.relname 表名。 attname int2vector PG_STATISTIC_EXT.stakey 统计信息扩展的多列信息。 inherited boolean - 暂不支持继承表,该字段为false。 null_frac real - 记录中字段组合为空的百分比。 avg_width integer - 字段组合记录以字节记的平均宽度。 n_distinct real - 如果大于零,表示字段组合中独立数值的估计数目。 如果小于零,表示独立数值的数目除以行数后乘-1得到的负数。比如,-1表示一个字段组合中独立数值的个数和行数相同。 用负数形式是因为ANALYZE认为独立数值的数目是随着表增长而增长; 正数的形式用于在字段看上去好像有固定的可能值数目的情况下。 如果等于零,表示独立数值的数目未知。 n_dndistinct real - 标识dn1上字段组合中非NULL的独立数值的数目。 如果大于零,表示独立数值的实际数目。 如果小于零,表示独立数值的数目除以行数后乘-1得到的负数。比如,一个字段组合的数值平均出现概率为两次,则可以表示为n_dndistinct=-0.5。 如果等于零,表示独立数值的数目未知。 most_common_vals anyarray - 一个字段组合里最常用数值的列表。如果该字段组合不存在最常用数值,则为NULL。本列保存的多列常用数值均不为NULL。 most_common_freqs real[] - 一个记录字段组合里最常用数值的出现频率的列表,频率由每个数值出现的次数除以行数得到。如果most_common_vals取值为NULL,则该字段取值也为NULL。 most_common_vals_null anyarray - 一个字段组合里最常用数值的列表。如果该字段组合不存在最常用数值,则为NULL。本列保存的多列常用数值中至少有一个值为NULL。 most_common_freqs_null real[] - 一个记录字段组合里最常用数值的出现频率的列表,频率由每个数值出现的次数除以行数得到。如果most_common_vals_null取值为NULL,则该字段取值也为NULL。 histogram_bounds anyarray - 直方图的边界值列表。 父主题: 系统视图
  • GLOBAL_DOUBLE_WRITE_STATUS GLOBAL_DOUBLE_WRITE_STATUS视图显示整个集群所有实例的双写文件的情况。 表1 GLOBAL_DOUBLE_WRITE_STATUS字段 名称 类型 描述 node_name text 实例名称。 curr_dwn bigint 当前双写文件的序列号。 curr_start_page bigint 当前双写文件恢复起始页面。 file_trunc_num bigint 当前双写文件复用的次数。 file_reset_num bigint 当前双写文件写满后发生重置的次数。 total_writes bigint 当前双写文件总的I/O次数。 low_threshold_writes bigint 低效率写双写文件的I/O次数(一次I/O刷页数量少于16页面)。 high_threshold_writes bigint 高效率写双写文件的I/O次数(一次I/O刷页数量多于一批,421个页面)。 total_pages bigint 当前刷页到双写文件区的总的页面个数。 low_threshold_pages bigint 低效率刷页的页面个数。 high_threshold_pages bigint 高效率刷页的页面个数。 file_id bigint 当前双写文件的id号。 父主题: Utility
  • PG_FOREIGN_DATA_WRAPPER PG_FOREIGN_DATA_WRAPPER系统表存储外部数据封装器定义。一个外部数据封装器是在外部服务器上驻留外部数据的机制,是可以访问的。 表1 PG_FOREIGN_DATA_WRAPPER字段 名称 类型 引用 描述 oid oid - 行标识符(隐含字段,必须明确选择)。 fdwname name - 外部数据封装器名。 fdwowner oid PG_AUTHID.oid 外部数据封装器的所有者。 fdwhandler oid PG_PROC.oid 引用一个负责为外部数据封装器提供扩展例程的处理函数。如果没有提供处理函数则为零。 fdwvalidator oid PG_PROC.oid 引用一个验证器函数,这个验证器函数负责验证给予外部数据封装器的选项、外部服务器选项和使用外部数据封装器的用户映射的有效性。如果没有提供验证器函数则为零。 fdwacl aclitem[] - 访问权限。 fdwoptions text[] - 外部数据封装器指定选项,使用“keyword=value”格式的字符串。 父主题: 系统表
  • GET_GLOBAL_PREPARED_XACTS GET_GLOBAL_PREPARED_XACTS视图显示全局所有节点上的两阶段残留事务信息。 表1 GET_GLOBAL_PREPARED_XACTS字段 名称 类型 描述 transaction xid 残留事务的xid。 gid text 残留两阶段事务全局gid。 prepared timestamp with time zone 残留两阶段事务的准备时间。 owner name 残留两阶段事务的所有者。 database name 残留两阶段事务所属的数据库。 node_name text 残留事务所在的节点名称。 父主题: 系统视图
  • 示例 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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 --创建dev_mask和bob_mask用户。 gaussdb=# CREATE USER dev_mask PASSWORD '********'; gaussdb=# CREATE USER bob_mask PASSWORD '********'; --创建一个表tb_for_masking。 gaussdb=# CREATE TABLE tb_for_masking(idx int, col1 text, col2 text, col3 text, col4 text, col5 text, col6 text, col7 text,col8 text); gaussdb=# INSERT INTO tb_for_masking VALUES(1, '9876543210', 'usr321usr', 'abc@huawei.com', 'abc@huawei.com', '1234-4567-7890-0123', 'abcdef 123456 ui 323 jsfd321 j3k2l3', '4880-9898-4545-2525', 'this is a llt case'); gaussdb=# INSERT INTO tb_for_masking VALUES(2, '0123456789', 'lltc123llt', 'abc@gmail.com', 'abc@gmail.com', '9876-5432-1012-3456', '1234 abcd ef 56 gh78ijk90lm', '4856-7654-1234-9865','this,is.a!LLT?case'); --创建资源标签标记敏感列。 gaussdb=# CREATE RESOURCE LABEL mask_lb1 ADD COLUMN(tb_for_masking.col1); gaussdb=# CREATE RESOURCE LABEL mask_lb2 ADD COLUMN(tb_for_masking.col2); gaussdb=# CREATE RESOURCE LABEL mask_lb3 ADD COLUMN(tb_for_masking.col3); gaussdb=# CREATE RESOURCE LABEL mask_lb4 ADD COLUMN(tb_for_masking.col4); gaussdb=# CREATE RESOURCE LABEL mask_lb5 ADD COLUMN(tb_for_masking.col5); gaussdb=# CREATE RESOURCE LABEL mask_lb6 ADD COLUMN(tb_for_masking.col6); gaussdb=# CREATE RESOURCE LABEL mask_lb7 ADD COLUMN(tb_for_masking.col7); gaussdb=# CREATE RESOURCE LABEL mask_lb8 ADD COLUMN(tb_for_masking.col8); --创建脱敏策略。 gaussdb=# CREATE MASKING POLICY maskpol1 maskall ON LABEL(mask_lb1); gaussdb=# CREATE MASKING POLICY maskpol2 alldigitsmasking ON LABEL(mask_lb2); gaussdb=# CREATE MASKING POLICY maskpol3 basicemailmasking ON LABEL(mask_lb3); gaussdb=# CREATE MASKING POLICY maskpol4 fullemailmasking ON LABEL(mask_lb4); gaussdb=# CREATE MASKING POLICY maskpol5 creditcardmasking ON LABEL(mask_lb5); gaussdb=# CREATE MASKING POLICY maskpol6 shufflemasking ON LABEL(mask_lb6); gaussdb=# CREATE MASKING POLICY maskpol7 regexpmasking('[\d+]','*',2, 9) ON LABEL(mask_lb7); --创建仅对用户dev_mask和bob_mask,客户端工具为gsql,IP地址为'10.20.30.40', '127.0.0.0/24'场景下生效的脱敏策略。 gaussdb=# CREATE MASKING POLICY maskpol8 randommasking ON LABEL(mask_lb8) FILTER ON ROLES(dev_mask, bob_mask), APP(gsql), IP('10.20.30.40', '127.0.0.0/24'); --查看脱敏策略生效。 gaussdb=# SELECT * FROM tb_for_masking; idx | col1 | col2 | col3 | col4 | col5 | col6 | col7 | col8 -----+------------+------------+----------------+----------------+---------------------+-------------------------------------+---------------------+-------------------- 1 | xxxxxxxxxx | usr000usr | xxx@huawei.com | xxx@xxxxxx.com | xxxx-xxxx-xxxx-0123 | s 2iju1bcjk243df333d61l 22 53ef3a | 48**-****-*545-2525 | this is a llt case 2 | xxxxxxxxxx | lltc000llt | xxx@gmail.com | xxx@xxxxx.com | xxxx-xxxx-xxxx-3456 | j 71fem0l286dbia543 g k9 ch | 48**-****-*234-9865 | this,is.a!LLT?case (2 rows) --使用gsql工具,IP地址为'10.20.30.40',用户dev_mask查看tb_for_masking。 gaussdb=# GRANT ALL PRIVILEGES TO dev_mask; gaussdb=# GRANT ALL PRIVILEGES TO bob_mask; gaussdb=# SET role dev_mask PASSWORD '********'; --使用maskpol8脱敏,结果随机,每次不同。 gaussdb=# SELECT col8 FROM tb_for_masking; col8 -------------------- 9f1425b3835cc30d99 9585b4ea8ea8ddcc5b (2 rows) gaussdb=# SET role bob_mask PASSWORD '********'; gaussdb=# SELECT col8 FROM tb_for_masking; col8 -------------------- f29ef3a0769a1f417c 806aa46409482d838f (2 rows) --删除脱敏策略。 gaussdb=# DROP MASKING POLICY maskpol1, maskpol2, maskpol3, maskpol4, maskpol5, maskpol6, maskpol7, maskpol8; --删除资源标签。 gaussdb=# DROP RESOURCE LABEL mask_lb1, mask_lb2, mask_lb3, mask_lb4, mask_lb5, mask_lb6, mask_lb7, mask_lb8; --删除表tb_for_masking。 gaussdb=# DROP TABLE tb_for_masking; --删除用户dev_mask和bob_mask。 gaussdb=# DROP USER dev_mask, bob_mask;
  • 语法格式 1 CREATE MASKING POLICY policy_name masking_clause[, ...] [ policy_filter_clause ] [ENABLE | DISABLE]; masking_clause: 1 masking_function ON LABEL(label_name[, ...]) masking_function: maskall不是预置函数,硬编码在代码中,不支持\df展示。 预置八种脱敏方式或者用户自定义的函数。 { maskall | randommasking | creditcardmasking | basicemailmasking | fullemailmasking | shufflemasking | alldigitsmasking | regexpmasking }
  • 参数说明 policy_name 审计策略名称,需要唯一,不可重复。 取值范围:字符串,要符合标识符命名规范。 label_name 资源标签名称。 masking_clause 指出使用何种脱敏函数对被label_name标签标记的数据库资源进行脱敏,支持用schema.function的方式指定脱敏函数。 policy_filter 指出该脱敏策略对何种身份的用户生效,若为空表示对所有用户生效。 FILTER_TYPE 描述策略过滤的条件类型,包括IP | APP | ROLES。 filter_value 指具体过滤信息内容,例如具体的IP,具体的APP名称,具体的用户名。 ENABLE|DISABLE 可以打开或关闭脱敏策略。若不指定ENABLE|DISABLE,语句默认为ENABLE。
  • GLOBAL_MEMORY_NODE_DETAIL 显示当前集群中所有正常节点下的内存使用情况。 表1 GLOBAL_MEMORY_NODE_DETAIL字段 名称 类型 描述 nodename text 节点名称。 memorytype text 内存使用的名称。 max_process_memory:数据库节点可用内存的最大值。 process_used_memory:进程所使用的内存大小。 max_dynamic_memory:最大动态内存。 dynamic_used_memory:已使用的动态内存。 dynamic_peak_memory:内存的动态峰值。 dynamic_used_shrctx:已使用的动态共享内存上下文。 dynamic_peak_shrctx:共享内存上下文的动态峰值。 max_shared_memory:最大共享内存。 shared_used_memory:已使用的共享内存。 max_sctpcomm_memory:TCP代理通信所允许使用的最大内存。 sctpcomm_used_memory:TCP代理通信已使用的内存大小。 sctpcomm_peak_memory:TCP代理通信的内存峰值。 other_used_memory:其他已使用的内存大小。 gpu_max_dynamic_memory:GPU最大动态内存。 gpu_dynamic_used_memory:GPU已使用的动态内存。 gpu_dynamic_peak_memory:GPU内存的动态峰值。 pooler_conn_memory:链接池申请内存计数。 pooler_freeconn_memory:链接池空闲连接的内存计数。 storage_compress_memory:存储模块压缩使用的内存大小。 udf_reserved_memory:UDF预留的内存大小。 memorymbytes integer 内存使用的大小,单位为MB。 父主题: Memory
  • javax.sql.PooledConnection javax.sql.PooledConnection是由连接池创建的连接接口。 表1 对javax.sql.PooledConnection的支持情况 方法名 返回值类型 支持JDBC 4 addConnectionEventListener (ConnectionEventListener listener) void Yes close() void Yes getConnection() Connection Yes removeConnectionEventListener (ConnectionEventListener listener) void Yes 父主题: JDBC接口参考
  • PG_LARGEOBJECT PG_LARGEOBJECT系统表保存那些标记着“大对象”的数据。一个大对象是使用其创建时分配的OID标识的。每个大对象都分解成足够小的小段或者“页面”以便以行的形式存储在PG_LARGEOBJECT里。每页的数据定义为LOBLKSIZE。 需要有系统管理员权限才可以访问此系统表。 表1 PG_LARGEOBJECT字段 名称 类型 引用 描述 loid oid PG_LARGEOBJECT_METADATA.oid 包含本页的大对象的标识符。 pageno integer - 本页在其大对象数据中的页码,从零开始计算。 data bytea - 存储在大对象中的实际数据。这些数据绝不会超过LOBLKSIZE字节,而且可能更少。 PG_LARGEOBJECT的每一行保存一个大对象的一个页面,从该对象内部的字节偏移(pageno * LOBLKSIZE)开始。这种实现允许松散的存储:页面可以丢失,而且可以比LOBLKSIZE字节少(即使它们不是对象的最后一页)。大对象内丢失的部分读做零。 父主题: 系统表
  • ADM_CONS_COLUMNS ADM_CONS_COLUMNS视图显示数据库表中约束的信息。默认只有系统管理员权限才可以访问此系统视图,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_CONS_COLUMNS字段 名称 类型 描述 owner character varying(64) 约束创建者。 constraint_name character varying(64) 约束名。 table_name character varying(64) 约束相关的表名。 column_name character varying(64) 约束相关的列名。 position smallint 表中列的位置。 父主题: 系统视图
  • REPLICATION_STAT REPLICATION_STAT用于描述日志同步状态信息,如发起端发送日志位置,收端接收日志位置等。 表1 REPLICATION_STAT字段 名称 类型 描述 pid bigint 线程的PID。 usesysid oid 用户系统ID。 usename name 用户名。 application_name text 程序名称。 client_addr inet 客户端地址。 client_hostname text 客户端名。 client_port integer 客户端端口。 backend_start timestamp with time zone 程序启动时间。 state text 日志复制的状态(追赶状态,还是一致的流状态)。 sender_sent_location text 发送端发送日志位置。 receiver_write_location text 接收端write日志位置。 receiver_flush_location text 接收端flush日志位置。 receiver_replay_location text 接收端replay日志位置。 sync_priority integer 同步复制的优先级(0表示异步)。 sync_state text 同步状态(异步复制,同步复制,还是潜在同步者)。 父主题: Utility
  • 原型 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);
  • 参数 表1 SQLBindParameter 关键词 参数说明 StatementHandle 语句句柄。 ParameterNumber 参数序号,起始为1,依次递增。 InputOutputType 输入输出参数类型。 ValueType 参数的C数据类型。 ParameterType 参数的SQL数据类型。 ColumnSize 列的大小或相应参数标记的表达式。 DecimalDigits 列的十进制数字或相应参数标记的表达式。 ParameterValuePtr 指向存储参数数据缓冲区的指针。 BufferLength ParameterValuePtr指向缓冲区的长度,以字节为单位。 StrLen_or_IndPtr 缓冲区的长度或指示器指针。若为空值,则未使用任何长度或指示器值。
  • 注意事项 当enable_nonsysadmin_execute_direct=off时,只有系统管理员和监控管理员才能执行EXECUTE DIRECT。 为了各个节点上数据的一致性,SQL语句仅支持SELECT,不允许执行事务语句、DDL、DML。 使用此类型语句在指定的DN执行stddev聚集计算时,返回结果集是以三元数组形式返回,如{3, 8, 30},表示count结果为3,sum结果为8,平方和为30。使用此类型语句在指定的DN执行AVG聚集计算时,返回结果集以二元组形式返回,如{4,2},表示count结果为4,sum结果为2。 当指定多个节点时,不支持agg函数,当query中包含agg函数时,会返回“EXECUTE DIRECT on multinode not support agg functions.” 由于CN节点不存储用户表数据,不允许指定CN节点执行用户表上的SELECT查询。 不允许执行嵌套的EXECUTE DIRECT语句,即执行的SQL语句不能同样是EXECUTE DIRECT语句,此时可直接执行最内层EXECUTE DIRECT语句代替。 agg函数查询结果与直接在CN上查询不一致,会返回多个信息,不支持array_avg函数。 参数为nodeoid或者nodeoid list时,仅支持分布式下参数enable_direct_standby_datanodes成功设置时才生效。实现到指定DN节点查询,不支持无效或重复nodeoid,以及不支持nodeoid和nodename混合使用。
  • 示例 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 --查询当前集群的节点分布状态。 gaussdb=# SELECT * FROM pgxc_node; node_name | node_type | node_port | node_host | node_port1 | node_host1 | hostis_primary | nodeis_primary | nodeis_preferred | node_id | sctp_port | control_port | sctp_port1 | control_port1 --------------+-----------+-----------+----------------+------------+----------------+----------------+----------------+------------------+-------------+-----------+--------------+------------+--------------- cn_5001 | C | 8050 | 10.180.155.74 | 8050 | 10.180.155.74 | t | f | f | 1120683504 | 0 | 0 | 0 | 0 cn_5003 | C | 8050 | 10.180.157.130 | 8050 | 10.180.157.130 | t | f | f | -125853378 | 0 | 0 | 0 | 0 dn_6001_6002 | D | 40050 | 10.180.155.74 | 45050 | 10.146.187.231 | t | f | f | 1644780306 | 40052 | 40052 | 45052 | 45052 dn_6003_6004 | D | 40050 | 10.146.187.231 | 45050 | 10.180.157.130 | t | f | f | -966646068 | 40052 | 40052 | 45052 | 45052 dn_6005_6006 | D | 40050 | 10.180.157.130 | 45050 | 10.180.155.74 | t | f | f | 868850011 | 40052 | 40052 | 45052 | 45052 cn_5002 | C | 8050 | localhost | 8050 | localhost | t | f | f | -1736975100 | 0 | 0 | 0 | 0 (6 rows) --查询dn_6001_6002上tpcds.customer_address记录。 gaussdb=# EXECUTE DIRECT ON(dn_6001_6002) 'select count(*) from tpcds.customer_address'; count ------- 16922 (1 row) --查询tpcds.customer_address所有记录。 gaussdb=# SELECT count(*) FROM tpcds.customer_address; count ------- 50000 (1 row)
  • V_SESSION V_SESSION视图显示当前所有会话的信息,该视图只有管理员可以访问,普通用户需要授权才能访问,该视图同时存在于pg_catalog和sys两种schema下。 表1 V_SESSION字段 名称 类型 描述 saddr raw 暂不支持,值为NULL。 sid bigint 会话ID。 serial# integer 当前活动的后台线程的序号,在GaussDB中为0。 audsid numeric 暂不支持,值为NULL。 paddr raw 暂不支持,值为NULL。 schema# numeric 暂不支持,值为NULL。 schemaname name 登录该后台的用户名。 user# oid 登录此后台线程的用户的OID。oid 为0表示此后台线程为全局辅助线程(auxiliary)。 username name 登录此后台线程的用户名。username为空表示此后台线程为全局辅助线程(auxiliary)。 command numeric 暂不支持,值为NULL。 ownerid numeric 暂不支持,值为NULL。 taddr character varying(16) 暂不支持,值为NULL。 lockwait character varying(16) 暂不支持,值为NULL。 machine text 客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。 sql_id bigint 查询语句的ID。 client_info text 客户端信息。 event text 语句当前排队状态。可能值是: waiting in queue:表示语句在排队中。 空:表示语句正在运行。 sql_exec_start timestamp with time zone 开始当前活跃查询的时间,如果state的值不是active,则这个值是上一个查询的开始时间。 program text 连接到该后台的应用名。 status text 该后台当前总体状态。可能值是: active:后台正在执行一个查询。 idle:后台正在等待一个新的客户端命令。 idle in transaction:后台在事务中,但事务中没有语句在执行。 idle in transaction (aborted):后台在事务中,但事务中有语句执行失败。 fastpath function call:后台正在执行一个fast-path函数。 disabled:如果后台禁用track_activities,则报告这个状态。 server character varying(9) 暂不支持,值为NULL。 pdml_status character varying(8) 当前会话是否启用DML的并行执行。 port numeric 当前会话的端口号。 process character varying(24) 当前会话的进程号。 logon_time date 当前会话的登入时间。 last_call_et integer 当前会话上次状态发生改变的时长。 osuser character varying(128) 暂不支持,值为NULL。 terminal character varying(30) 暂不支持,值为NULL。 type character varying(10) 暂不支持,值为NULL。 sql_address raw 暂不支持,值为NULL。 sql_hash_value numeric 暂不支持,值为NULL。 sql_child_number numeric 暂不支持,值为NULL。 sql_exec_id numeric 暂不支持,值为NULL。 prev_sql_addr raw 暂不支持,值为NULL。 prev_hash_value numeric 暂不支持,值为NULL。 prev_sql_id character varying(13) 暂不支持,值为NULL。 prev_child_number numeric 暂不支持,值为NULL。 prev_exec_start date 暂不支持,值为NULL。 prev_exec_id numeric 暂不支持,值为NULL。 plsql_entry_object_id numeric 暂不支持,值为NULL。 plsql_entry_subprogram_id numeric 暂不支持,值为NULL。 plsql_object_id numeric 暂不支持,值为NULL。 plsql_subprogram_id numeric 暂不支持,值为NULL。 module character varying(64) 暂不支持,值为NULL。 module_hash numeric 暂不支持,值为NULL。 action character varying(64) 暂不支持,值为NULL。 action_hash numeric 暂不支持,值为NULL。 fixed_table_sequence numeric 暂不支持,值为NULL。 row_wait_obj# numeric 暂不支持,值为NULL。 row_wait_file# numeric 暂不支持,值为NULL。 row_wait_block# numeric 暂不支持,值为NULL。 row_wait_row# numeric 暂不支持,值为NULL。 top_level_call# numeric 暂不支持,值为NULL。 pdml_enabled character varying(3) 暂不支持,值为NULL。 failover_type character varying(13) 暂不支持,值为NULL。 failover_method character varying(10) 暂不支持,值为NULL。 failed_over character varying(3) 暂不支持,值为NULL。 resource_consumer_group character varying(32) 暂不支持,值为NULL。 pddl_status character varying(8) 暂不支持,值为NULL。 pq_status character varying(8) 暂不支持,值为NULL。 current_queue_duration numeric 暂不支持,值为NULL。 client_identifier character varying(64) 暂不支持,值为NULL。 blocking_session_status character varying(11) 暂不支持,值为NULL。 blocking_instance numeric 暂不支持,值为NULL。 blocking_session numeric 暂不支持,值为NULL。 final_blocking_session_status character varying(11) 暂不支持,值为NULL。 final_blocking_instance numeric 暂不支持,值为NULL。 final_blocking_session numeric 暂不支持,值为NULL。 seq# numeric 暂不支持,值为NULL。 event# numeric 暂不支持,值为NULL。 p1text character varying(64) 暂不支持,值为NULL。 p1 numeric 暂不支持,值为NULL。 p1raw raw 暂不支持,值为NULL。 p2text character varying(64) 暂不支持,值为NULL。 p2 numeric 暂不支持,值为NULL。 p2raw raw 暂不支持,值为NULL。 p3text character varying(64) 暂不支持,值为NULL。 p3 numeric 暂不支持,值为NULL。 p3raw raw 暂不支持,值为NULL。 wait_class_id numeric 暂不支持,值为NULL。 wait_class# numeric 暂不支持,值为NULL。 wait_class character varying(64) 暂不支持,值为NULL。 wait_time numeric 暂不支持,值为NULL。 seconds_in_wait numeric 暂不支持,值为NULL。 state character varying(19) 暂不支持,值为NULL。 wait_time_micro numeric 暂不支持,值为NULL。 time_remaining_micro numeric 暂不支持,值为NULL。 time_since_last_wait_micro numeric 暂不支持,值为NULL。 service_name character varying(64) 暂不支持,值为NULL。 sql_trace character varying(8) 暂不支持,值为NULL。 sql_trace_waits character varying(5) 暂不支持,值为NULL。 sql_trace_binds character varying(5) 暂不支持,值为NULL。 sql_trace_plan_stats character varying(10) 暂不支持,值为NULL。 session_edition_id numeric 暂不支持,值为NULL。 creator_addr raw 暂不支持,值为NULL。 creator_serial# numeric 暂不支持,值为NULL。 ecid character varying(64) 暂不支持,值为NULL。 sql_translation_profile_id numeric 暂不支持,值为NULL。 pga_tunable_mem numeric 暂不支持,值为NULL。 shard_ddl_status character varying(8) 暂不支持,值为NULL。 con_id numeric 暂不支持,值为NULL。 external_name character varying(1024) 暂不支持,值为NULL。 plsql_debugger_connected character varying(5) 暂不支持,值为NULL。 父主题: 系统视图
  • 语法格式 格式一:START TRANSACTION格式 1 2 3 4 5 6 7 START TRANSACTION [ { ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE | REPEATABLE READ } | { READ WRITE | READ ONLY } } [...] ]; 格式二:BEGIN格式 1 2 3 4 5 6 7 BEGIN [ WORK | TRANSACTION ] [ { ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE | REPEATABLE READ } | { READ WRITE | READ ONLY } } [...] ];
  • 参数说明 WORK | TRANSACTION BEGIN格式中的可选关键字,没有实际作用。 ISOLATION LEVEL 指定事务隔离级别,它决定当一个事务中存在其他并发运行事务时它能够看到什么数据。 在事务中第一个数据修改语句(INSERT,DELETE,UPDATE,FETCH,COPY)执行之后,事务隔离级别就不能再次设置。 取值范围: READ COMMITTED:读已提交隔离级别,只能读到已经提交的数据,而不会读到未提交的数据。这是缺省值。 REPEATABLE READ: 可重复读隔离级别,仅仅看到事务开始之前提交的数据,它不能看到未提交的数据,以及在事务执行期间由其它并发事务提交的修改。 SERIALIZABLE:GaussDB目前功能上不支持此隔离级别,等价于REPEATABLE READ。 READ WRITE | READ ONLY 指定事务访问模式(读/写或者只读)。
  • 示例 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 --创建SCHEMA。 gaussdb=# CREATE SCHEMA tpcds; --创建表tpcds.reason。 gaussdb=# CREATE TABLE tpcds.reason (c1 int, c2 int); --以默认方式启动事务。 gaussdb=# START TRANSACTION; gaussdb=# SELECT * FROM tpcds.reason; gaussdb=# END; --以默认方式启动事务。 gaussdb=# BEGIN; gaussdb=# SELECT * FROM tpcds.reason; gaussdb=# END; --以隔离级别为READ COMMITTED,读/写方式启动事务。 gaussdb=# START TRANSACTION ISOLATION LEVEL READ COMMITTED READ WRITE; gaussdb=# SELECT * FROM tpcds.reason; gaussdb=# COMMIT; --删除表。 gaussdb=# DROP TABLE tpcds.reason; --删除SCHEMA。 gaussdb=# DROP SCHEMA tpcds CASCADE;
  • 变量作用域 变量的作用域表示变量在代码块中的可访问性和可用性。只有在它的作用域内,变量才有效。 变量必须在declare部分声明,即必须建立BEGIN-END块。块结构也强制变量必须先声明后使用,即变量在过程内有不同作用域、不同的生存期。 同一变量可以在不同的作用域内定义多次,内层的定义会覆盖外层的定义。 在外部块定义的变量,可以在嵌套块中使用。但外部块不能访问嵌套块中的变量。 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# DECLARE emp_id INTEGER :=7788; --定义变量并赋值 outer_var INTEGER :=6688; --定义变量并赋值 BEGIN DECLARE emp_id INTEGER :=7799; --定义变量并赋值 inner_var INTEGER :=6688; --定义变量并赋值 BEGIN dbe_output.print_line('inner emp_id ='||emp_id); --显示值为7799 dbe_output.print_line('outer_var ='||outer_var); --引用外部块的变量 END; dbe_output.print_line('outer emp_id ='||emp_id); --显示值为7788 END; /
  • 变量声明 变量声明语法请参见图1。 图1 declare_variable::= 对以上语法格式的解释如下: variable_name,为变量名。 type,为变量类型。 value,是该变量的初始值(如果不给定初始值,则初始为NULL)。value也可以是表达式。 示例 1 2 3 4 5 6 gaussdb=# DECLARE emp_id INTEGER := 7788; --定义变量并赋值 BEGIN emp_id := 5*7784; --变量赋值 END; /
  • ROLE_ROLE_PRIVS ROLE_ROLE_PRIVS视图显示授予其他角色的角色,仅提供用户有权访问的角色的信息。默认所有用户都可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ROLE_ROLE_PRIVS字段 名称 类型 描述 role character varying(128) 角色名称。 granted_role character varying(128) 被授予的角色。 admin_option character varying(3) 表示该授权是否包含ADMIN选项。 YES:表示包含ADMIN选项。 NO:表示不包含ADMIN选项。 common character varying(3) 暂不支持,值为NULL。 inherited character varying(3) 暂不支持,值为NULL。 父主题: 系统视图
  • 参数说明 @queryblock 见指定Hint所处的查询块Queryblock章节,可省略,表示在当前查询块生效。 src, src1, src2表示predpush下推candidates一侧表集合。 dest表示predpush下推所指定的dest表也就是目标表。 predpush如果没有逗号表示所有表都是candidates表, 如果有逗号就说明同时指定了candidates表和dest表。 使用predpush hint将过滤表达式尽可能移至靠近数据源的位置以达到查询优化的目的。 使用predpush hint需要确保rewrite_rule GUC参数包含PREDPUSH|REDPUSHFORCE|PREDPUSHNORMAL选项。 subquery_block也可以是视图/物化视图。
  • GS_COLUMN_KEYS_ARGS GS_COLUMN_KEYS_ARGS系统表记录密态等值特性中客户端加密主密钥相关元数据信息,每条记录对应客户端加密主密钥的一个键值对信息。 表1 GS_COLUMN_KEYS_ARGS字段 名称 类型 描述 oid oid 行标识符(隐含字段)。 column_key_id oid 列加密密钥(cek)oid。 function_name name 值为encryption。 key name 列加密密钥(cek)的元数据信息对应的名称。 value bytea 列加密密钥(cek)的元数据信息名称的值。 父主题: 系统表
  • GLOBAL_BAD_BLOCK_INFO GLOBAL_BAD_BLOCK_INFO视图,在CN上执行,统计所有实例数据页面损坏的情况,查询信息会显示损坏页面的基本信息。在DN上执行结果为空。可根据这些信息利用数据损坏检测修复函数中的页面检测修复函数进行进一步修复操作。默认只有初始用户、具有sysadmin属性的用户、在运维模式下具有运维管理员属性的用户以及监控用户可以查看,其余用户需要赋权后才可以使用。 表1 GLOBAL_BAD_BLOCK_INFO字段 名称 类型 描述 node_name text 当前损坏页面的节点信息。 spc_node oid 当前损坏页面对应的表空间id。 db_node oid 当前损坏页面对应的数据库id。 rel_node oid 当前损坏页面对应的relation的relfilenode。 bucket_node integer 当前损坏页面的bucket_node,页式表显示-1,其他值为预留,暂不支持。 block_num oid 当前损坏页面的页面号。 fork_num integer 当前损坏页面的文件forknum。 file_path text 当前损坏页面的相对路径。 check_time timestamp with time zone 当前损坏页面检测出有问题的时间。 repair_time timestamp with time zone 当前损坏页面被修复的时间。 父主题: 系统视图
  • PG_AUTH_HISTORY PG_AUTH_HISTORY系统表记录了角色的认证历史。需要有系统管理员权限才可以访问此系统表。 表1 PG_AUTH_HISTORY字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 roloid oid 角色标识。 passwordtime timestamp with time zone 创建和修改密码的时间。 rolpassword text 角色密码密文,加密方式由GUC参数password_encryption_type确定。 父主题: 系统表
  • 参数说明 OR REPLACE 如果视图已存在,则重新定义。 TEMP | TEMPORARY 创建临时视图。 view_name 要创建的视图名称。可以用模式修饰。 取值范围:字符串,符合标识符命名规范。 column_name 可选的名称列表,用作视图的字段名。如果没有给出,字段名取自查询中的字段名。 取值范围:字符串,符合标识符命名规范。 view_option_name [= view_option_value] 该子句为视图指定一个可选的参数。 目前view_option_name支持的参数仅有security_barrier,当VIEW试图提供行级安全时,应使用该参数。 取值范围:Boolean类型,TRUE、FALSE query 为视图提供行和列的SELECT或VALUES语句。 若query包含指定分区表分区的子句,创建视图会将所指定分区的OID硬编码到系统表中。如果使用导致指定分区的OID发生变更的分区DDL语法,如DROP/SPLIT/MERGE该分区,则会导致视图不可用。需要重新创建视图。
  • 语法格式 1 2 3 CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW view_name [ ( column_name [, ...] ) ] [ WITH ( {view_option_name [= view_option_value]} [, ... ] ) ] AS query; 创建视图时使用WITH(security_barrier)可以创建一个相对安全的视图,避免攻击者利用低成本函数的RAISE语句打印出基表数据。 当视图创建后,不允许使用REPLACE修改本视图当中的列名,也不允许删除列。
  • 示例 1 2 3 4 5 6 7 8 9 --创建字段spcname为pg_default组成的视图。 gaussdb=# CREATE VIEW myView AS SELECT * FROM pg_tablespace WHERE spcname = 'pg_default'; --查看视图。 gaussdb=# SELECT * FROM myView ; --删除视图myView。 gaussdb=# DROP VIEW myView;
共100000条