系统信息函数
会话信息函数
- SYS_CONTEXT()
描述:返回当前时刻与上下文命名空间'namespace'关联的参数'parameter'的值,该函数功能在第一个入参为'userenv'时与USERENV()功能一致。
当前支持的第二个入参参数:
'current_edition_name'、'current_schema'、'current_sql'、'current_user'、'current_userid'、'database_role'、'ip_address'、'is_apply_server'、'isdba'、'nls_currency'、'nls_date_format'、'nls_date_language'、'server_host'、'service_name'、'session_user'、'session_userid'、'db_name'、'db_unique_name'、'instance'、'instance_name'、'current_edition_id'、'current_schemaid'、'lang'、'language'、'sid'
返回值类型:text
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
SELECT SYS_CONTEXT('userenv','NLS_CURRENCY'); sys_context ------------- $ (1 row) SELECT SYS_CONTEXT('userenv','NLS_DATE_FORMAT'); sys_context --------------- ISO, MDY (1 row) SELECT SYS_CONTEXT('userenv','NLS_DATE_LANGUAGE'); sys_context ------------- en_US.UTF-8 (1 row)
- USERENV()
描述:返回当前时刻与上下文命名空间'namespace'关联的参数'parameter'的值,该函数功能与SYS_CONTEXT()在第一个入参为'userenv'时功能一致。
当前支持的入参:
'current_edition_name'、'current_schema'、'current_sql'、'current_user'、'current_userid'、'database_role'、'ip_address'、'is_apply_server'、'isdba'、'nls_currency'、'nls_date_format'、'nls_date_language'、'server_host'、'service_name'、'session_user'、'session_userid'、'db_name'、'db_unique_name'、'instance'、'instance_name'、'current_edition_id'、'current_schemaid'、'lang'、'language'、'sid'
当前不支持的入参:
'action'、'is_application_root'、'is_application_pdb'、'audited_cursorid'、'authenticated_identity'、'authentication_data'、'authentication_method'、'cdb_domain'、'cdb_name'、'client_identifier'、'con_id'、'con_name'、'current_sql_length'、'db_domain'、'db_supplemental_log_level'、'dblink_info'、'drain_status'、'entryid'、'enterprise_identity'、'fg_job_id'、'global_uid'、'identification_type'、'is_dg_rolling_upgrade'、'ldap_server_type'、'module'、'network_protocol'、'nls_calendar'、'nls_sort'、'nls_territory'、'oracle_home'、'os_user'、'platform_slash'、'policy_invoker'、'proxy_enterprise_identity'、'proxy_user'、'proxy_userid'、'scheduler_job'、'session_edition_id'、'session_edition_name'、'sessionid'、'statementid'、'terminal'、'unified_audit_sessionid'、'session_default_collation'、'client_info'、'bg_job_id'、'client_program_name'、'current_bind'、'global_context_memory'、'host'、'current_sqln'
返回值类型:text
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
SELECT USERENV('sid'); userenv --------- 955 (1 row) SELECT USERENV('instance'); userenv --------- 14524 (1 row) SELECT USERENV('action'); userenv --------- (1 row) SELECT USERENV('actijj'); ERROR: unrecognized configuration parameter "actijj" CONTEXT: PL/pgSQL function userenv(text) line 114 at RETURN referenced column: userenv
当入参为当前不支持的入参时,则返回NULL;入参为非法入参时报错。
- current_catalog()
描述:当前数据库的名称(在标准SQL中称"catalog")。
返回值类型:name
示例:
1 2 3 4 5
testdb=# SELECT current_catalog; current_database ------------------ testdb (1 row)
- current_database()
返回值类型:name
示例:
1 2 3 4 5
testdb=# SELECT current_database(); current_database ------------------ testdb (1 row)
- current_query()
返回值类型:text
示例:
1 2 3 4 5
gaussdb=# SELECT current_query(); current_query ------------------------- SELECT current_query(); (1 row)
- current_schema[()]
返回值类型:name
示例:
1 2 3 4 5
gaussdb=# SELECT current_schema(); current_schema ---------------- public (1 row)
备注:current_schema返回在搜索路径中第一个顺位有效的模式名。(如果搜索路径为空则返回NULL,没有有效的模式名也返回NULL)。如果创建表或者其他命名对象时没有声明目标模式,则将使用这些对象的模式。
- current_schemas(Boolean)
描述:搜索路径中的模式名称。
返回值类型:name[]
示例:
1 2 3 4 5
gaussdb=# SELECT current_schemas(true); current_schemas --------------------- {pg_catalog,public} (1 row)
备注:
current_schemas(Boolean)返回搜索路径中所有模式名称的数组。布尔选项决定像pg_catalog这样隐含包含的系统模式是否包含在返回的搜索路径中。
搜索路径可以通过运行时设置更改。命令是:
1
SET search_path TO schema [, schema, ...]
- database()
参数:无
返回值类型:name
示例:
1 2 3 4 5
gaussdb=# SELECT database(); database ---------- public (1 row)
此函数在MYSQL模式数据库中,且GUC参数b_format_version = '5.7'和b_format_dev_version = 's1'时生效。
- current_user()
返回值类型:name
示例:
1 2 3 4 5
gaussdb=# SELECT current_user; current_user -------------- omm (1 row)
备注:current_user用于权限检查的用户标识。通常表示会话用户,可以通过SET ROLE进行修改。在函数执行的过程中,受SECURITY DEFINER属性影响。
- definer_current_user
返回值类型:name
示例:
1 2 3 4 5
gaussdb=# SELECT definer_current_user(); definer_current_user ---------------------- omm (1 row)
备注:通常definer_current_user和current_user结果相同,但在存储过程中执行该函数会返回定义当前存储过程的用户名。
- pg_current_sessionid()
返回值类型:text
示例:
1 2 3 4 5
gaussdb=# SELECT pg_current_sessionid(); pg_current_sessionid ---------------------------- 1579228402.140190434944768 (1 row)
备注:pg_current_sessionid()是用于获取当前执行环境下的会话ID。其组成结构为:时间戳.会话ID,当线程池模式开启(enable_thread_pool=on)时,会话ID为SessionID;而线程池模式关闭时,会话ID实际为线程ID。
- pg_current_sessid()
返回值类型:text
示例:
gaussdb=# select pg_current_sessid(); pg_current_sessid ------------------- 140308875015936 (1 row)
备注:在线程池模式下获得当前会话的会话ID,非线程池模式下获得当前会话对应的后台线程ID。
- pg_current_userid()
返回值类型:text
示例:
gaussdb=# SELECT pg_current_userid(); pg_current_userid ------------------- 10 (1 row)
- tablespace_oid_name(oid)
返回值类型:text
示例:
1 2 3 4 5
gaussdb=# select tablespace_oid_name(1663); tablespace_oid_name --------------------- pg_default (1 row)
- inet_client_addr()
描述:连接的远端地址。inet_client_addr返回当前客户端的IP地址。
此函数只有在远程连接模式下有效。
返回值类型:inet
示例:
1 2 3 4 5
gaussdb=# SELECT inet_client_addr(); inet_client_addr ------------------ 10.10.0.50 (1 row)
- inet_client_port()
描述:连接的远端端口。inet_client_port返回当前客户端的端口号。
此函数只有在远程连接模式下有效。
返回值类型:int
示例:
1 2 3 4 5
gaussdb=# SELECT inet_client_port(); inet_client_port ------------------ 33143 (1 row)
- inet_server_addr()
描述:连接的本地地址。inet_server_addr返回服务器接收当前连接用的IP地址。
此函数只有在远程连接模式下有效。
返回值类型:inet
示例:
1 2 3 4 5
gaussdb=# SELECT inet_server_addr(); inet_server_addr ------------------ 10.10.0.13 (1 row)
- inet_server_port()
描述:连接的本地端口。inet_server_port返回接收当前连接的端口号。如果是通过Unix-domain socket连接的,则所有这些函数都返回NULL。
此函数只有在远程连接模式下有效。
返回值类型:int
示例:
1 2 3 4 5
gaussdb=# SELECT inet_server_port(); inet_server_port ------------------ 8000 (1 row)
- pg_backend_pid()
返回值类型:int
示例:
1 2 3 4 5
gaussdb=# SELECT pg_backend_pid(); pg_backend_pid ----------------- 140229352617744 (1 row)
- pg_conf_load_time()
描述:配置加载时间。pg_conf_load_time返回最后加载服务器配置文件的时间戳。
返回值类型:timestamp with time zone
示例:
1 2 3 4 5
gaussdb=# SELECT pg_conf_load_time(); pg_conf_load_time ------------------------------ 2017-09-01 16:05:23.89868+08 (1 row)
- pg_my_temp_schema()
返回值类型:oid
示例:
1 2 3 4 5
gaussdb=# SELECT pg_my_temp_schema(); pg_my_temp_schema ------------------- 0 (1 row)
备注:pg_my_temp_schema返回当前会话中临时模式的OID,如果不存在(没有创建临时表)的话则返回0。如果给定的OID是其它会话中临时模式的OID,pg_is_other_temp_schema则返回true。
- pg_is_other_temp_schema(oid)
返回值类型:Boolean
示例:
1 2 3 4 5
gaussdb=# SELECT pg_is_other_temp_schema(25356); pg_is_other_temp_schema ------------------------- f (1 row)
- pg_listening_channels()
返回值类型:setof text
示例:
1 2 3 4
gaussdb=# SELECT pg_listening_channels(); pg_listening_channels ----------------------- (0 rows)
备注:pg_listening_channels返回当前会话正在侦听的一组信道名称。
- pg_postmaster_start_time()
描述:服务器启动时间。pg_postmaster_start_time返回服务器启动时的timestamp with time zone。
返回值类型:timestamp with time zone
示例:
1 2 3 4 5
gaussdb=# SELECT pg_postmaster_start_time(); pg_postmaster_start_time ------------------------------ 2017-08-30 16:02:54.99854+08 (1 row)
- sessionid2pid()
描述:从sessionid中得到pid信息(如: pv_session_stat中sessid列)。
返回值类型:int8
示例:
1 2 3 4 5 6
gaussdb=# select sessionid2pid(sessid::cstring) from pv_session_stat limit 2; sessionid2pid ----------------- 139973107902208 139973107902208 (2 rows)
- session_context( 'namespace' , 'parameter')
描述:获取并返回指定namespace下参数parameter的值。
返回值类型:VARCHAR
示例:
1 2 3 4 5
gaussdb=# SELECT session_context('USERENV', 'CURRENT_SCHEMA'); session_context ------------- public (1 row)
根据当前所在的实际schema而变化。
备注:目前仅支持SESSION_CONTEXT('USERENV', 'CURRENT_SCHEMA') 和SESSION_CONTEXT('USERENV', 'CURRENT_USER')两种格式。
- pg_trigger_depth()
返回值类型:int
示例:
1 2 3 4 5
gaussdb=# SELECT pg_trigger_depth(); pg_trigger_depth ------------------ 0 (1 row)
- opengauss_version()
返回值类型:text
使用示例如下,查询结果中的x.x.x请以实际输出为准:
1 2 3 4 5
gaussdb=# SELECT opengauss_version(); opengauss_version ------------------- x.x.x (1 row)
- gs_deployment()
描述:当前系统的部署形态信息,对于分布式系统来说返回的是“Distribute”。
返回值类型:text
示例:
1 2 3 4 5
gaussdb=# SELECT gs_deployment(); gs_deployment --------------- Distribute (1 row)
- session_user
返回值类型:name
示例:
1 2 3 4 5
gaussdb=# SELECT session_user; session_user -------------- omm (1 row)
备注:session_user通常是连接当前数据库的初始用户,不过系统管理员可以用SET SESSION AUTHORIZATION修改这个设置。
- user
返回值类型:name
示例:
1 2 3 4 5
gaussdb=# SELECT user; current_user -------------- omm (1 row)
- get_shard_oids_byname()
返回值类型:oid
示例:
1 2 3 4 5
gaussdb=# SELECT get_shard_oids_byname('datanode1'); get_shard_oids_byname ----------------------- {16385} (1 row)
- getpgusername()
返回值类型:name
示例:
1 2 3 4 5
gaussdb=# SELECT getpgusername(); getpgusername --------------- GaussDB_userna (1 row)
- getdatabaseencoding()
返回值类型:name
示例:
1 2 3 4 5
gaussdb=# SELECT getdatabaseencoding(); getdatabaseencoding --------------------- SQL_ASCII (1 row)
- version()
描述:版本信息。version返回一个描述服务器版本信息的字符串。
返回值类型:text
示例:
1 2 3 4 5
gaussdb=# SELECT version(); version ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- gaussdb (GaussDB XXX.XXX.XXX build f521c606) compiled at 2021-09-16 14:55:22 commit 2935 last mr 6385 release (1 row)
- working_version_num()
返回值类型:int
示例:
1 2 3 4 5
gaussdb=# SELECT working_version_num(); working_version_num --------------------- 92231 (1 row)
- get_hostname()
返回值类型:text
示例:
1 2 3 4 5
gaussdb=# SELECT get_hostname(); get_hostname -------------- linux-user (1 row)
- get_nodename()
返回值类型:text
示例:
1 2 3 4 5
gaussdb=# SELECT get_nodename(); get_nodename -------------- coordinator1 (1 row)
- get_nodeinfo(text)
描述:根据检索的属性返回对应的节点信息的值,可检索属性目前包括node_name和node_type。
返回值类型:text
示例:
1 2 3 4 5 6 7 8 9 10
gaussdb=# SELECT get_nodeinfo('node_type'); get_nodeinfo -------------- DIS_CN (1 row) gaussdb=# SELECT get_nodeinfo('node_name'); get_nodeinfo -------------- coordinator1 (1 row)
- get_schema_oid(cstring)
返回值类型:oid
示例:
1 2 3 4 5
gaussdb=# SELECT get_schema_oid('public'); get_schema_oid ---------------- 2200 (1 row)
- pgxc_parse_clog(OUT xid int8, OUT nodename text, OUT status text)
返回值类型:set of record
示例:
1 2 3 4 5 6 7
gaussdb=# SELECT pgxc_parse_clog(); pgxc_parse_clog ---------------- (0,dn_6004_6005_6006,INPROGRESS) (1,dn_6004_6005_6006,COMMITTED) (2,dn_6004_6005_6006,INPROGRESS) (3 row)
- pgxc_parse_clog(IN int2 bucketid, OUT xid int8, OUT nodename text, OUT status text)
描述:返回当前集群中指定bucketid的所有事务的状态,入参是hash bucket表bucketid,取值范围[-1,1023],普通表取值-1。
返回值类型:set of record
示例:
1 2 3 4 5 6 7
gaussdb=# SELECT pgxc_parse_clog('-1'); pgxc_parse_clog ---------------- (0,dn_6004_6005_6006,INPROGRESS) (1,dn_6004_6005_6006,COMMITTED) (2,dn_6004_6005_6006,INPROGRESS) (3 row)
- pgxc_prepared_xact()
返回值类型:set of text
示例:
1 2 3 4
gaussdb=# SELECT pgxc_prepared_xact(); pgxc_prepared_xact -------------------- (0 row)
- pgxc_xacts_iscommitted()
描述:返回集群中指定事务xid的事务的状态。t代表committed;f代表aborted;null代表others。需要sysadmin或者monadmin权限执行。
返回值类型:set of record
示例:
1 2 3 4 5 6 7 8
gaussdb=# SELECT pgxc_xacts_iscommitted(1); pgxc_xacts_iscommitted -------------------- (dn_6004_6005_6006,t) (cn_5001,t) (cn_5002,t) (dn_6001_6002_6003,t) (4 row)
- pgxc_total_memory_detail()
描述:显示集群内存使用情况。需要sysadmin或者monadmin权限执行。
若GUC参数enable_memory_limit=off,该函数不能使用。
返回值类型:set of pv_total_memory_detail
示例:
1 2 3 4 5 6 7 8
gaussdb=# SELECT pgxc_total_memory_detail(); pgxc_total_memory_detail -------------------- (dn_6004_6005_6006,max_process_memory,81920) (dn_6004_6005_6006,process_used_memory,72747) (dn_6004_6005_6006,max_dynamic_memory,12096) (dn_6004_6005_6006,dynamic_used_memory,1530) (4 row)
- pv_total_memory_detail()
若GUC参数enable_memory_limit=off,该函数不能使用。
返回值类型:record
表1 返回值说明 名称
类型
描述
nodename
text
节点名称。
memorytype
text
内存类型,包括以下几种:- max_process_memory:GaussDB集群实例所占用的内存大小。
- process_used_memory:GaussDB线程所使用的内存大小。
- max_dynamic_memory:最大动态内存。
- dynamic_used_memory:已使用的动态内存。
- dynamic_peak_memory:内存的动态峰值。
- dynamic_used_shrctx:最大动态共享内存上下文。
- dynamic_peak_shrctx:共享内存上下文的动态峰值。
- max_shared_memory:最大共享内存。
- shared_used_memory:已使用的共享内存。
- max_sctpcomm_memory:通信库所允许使用的最大内存。
- sctpcomm_used_memory:通信库已使用的内存大小。
- sctpcomm_peak_memory:通信库的内存峰值。
- other_used_memory:其他已使用的内存大小。
memorymbytes
integer
内存类型分配内存的大小。
- get_client_info()
返回值类型:record
- pv_session_memory_detail()
描述:返回会话的内存使用情况,以MemoryContext节点来统计。
返回值类型:record
表2 返回值说明 名称
类型
描述
sessid
text
- 关闭线程池(enable_thread_pool = off)时该字段表示线程启动时间+session标识(字符串信息为timestamp.sessionid)。
- 开启线程池(enable_thread_pool = on)时,内存上下文是线程级别的,则对应的该字段表示线程启动时间+线程标识(字符串信息为timestamp.threadid),内存上下文是session级别的,则对应的该字段表示线程启动时间+session标识(字符串信息为timestamp.sessionid)。
threadid
bigint
会话绑定的线程标识。
contextname
text
内存上下文名称。
level
smallint
当前上下文在整体内存上下文中的层级。
parent
text
父内存上下文名称。
totalsize
bigint
当前内存上下文的内存总数,单位Byte。
freesize
bigint
当前内存上下文中已释放的内存总数,单位Byte。
usedsize
bigint
当前内存上下文中已使用的内存总数,单位Byte;“TempSmallContextGroup”内存上下文中该字段含义为统计计数。
访问权限查询函数
DDL类权限ALTER、DROP、COMMENT、INDEX、VACUUM属于所有者固有的权限,隐式拥有。
以下访问权限查询函数仅表示用户是否具有某对象上的某种对象权限,即返回记录在系统表acl字段中的对象权限拥有情况。
- has_any_column_privilege(user, table, privilege)
表3 参数类型说明 参数名
合法入参类型
描述
取值范围
user
name,oid
用户
用户名字或id。
table
text,oid
表
表名称或表id。
privilege
text
权限
- SELECT:允许对指定表任何列执行SELECT语句。
- INSERT:允许对指定表任何列执行INSERT语句。
- UPDATE:允许对指定表任何列任意字段执行UPDATE语句。
- REFERENCES:允许创建一个外键约束(分布式场景暂不支持)。
- COMMENT:允许对指定表任何列执行COMMENT语句。
返回类型:Boolean
- has_any_column_privilege(table, privilege)
描述:当前用户是否有访问表任何列的权限,合法参数类型见表3。
返回类型:Boolean
备注:has_any_column_privilege检查用户是否以特定方式访问表的任何列。其参数可能与has_table_privilege类似,除了访问权限类型必须是SELECT、INSERT、UPDATE或REFERENCES的一些组合。
拥有表的表级别权限则隐含的拥有该表每列的列级权限,因此如果与has_table_privilege参数相同,has_any_column_privilege总是返回true。但是如果授予至少一列的列级权限也返回成功。
- has_column_privilege(user, table, column, privilege)
表4 参数类型说明 参数名
合法入参类型
描述
取值范围
user
name,oid
用户
用户名字或者id。
table
text,oid
表名
表的名字或id。
column
text,smallint
列名
列的名字或属性号。
privilege
text
权限
- SELECT:允许对表的指定列执行SELECT语句。
- INSERT:允许对表的指定列执行INSERT语句。
- UPDATE:允许对表的指定列执行UPDATE语句。
- REFERENCES:允许创建一个外键约束(分布式场景暂不支持)。
- COMMENT:允许对表的指定列执行COMMENT语句。
返回类型:Boolean
- has_column_privilege(table, column, privilege)
描述:当前用户是否有访问列的权限,合法参数类型见表4。
返回类型:Boolean
备注:has_column_privilege检查用户是否以特定方式访问一列。其参数类似于has_table_privilege,可以通过列名或属性号添加列。想要的访问权限类型必须是SELECT、INSERT、UPDATE或REFERENCES的一些组合。
拥有表的表级别权限则隐含的拥有该表每列的列级权限。
- has_cek_privilege(user, cek, privilege)
表5 参数类型说明 参数名
合法入参类型
描述
取值范围
user
name,oid
用户
用户名字或id。
cek
text,oid
列加密密钥
列加密密钥名称或id。
privilege
text
权限
- USAGE:允许使用指定列加密密钥。
- DROP:允许删除指定列加密密钥。
返回类型:Boolean
- has_cmk_privilege(user, cmk, privilege)
表6 参数类型说明 参数名
合法入参类型
描述
取值范围
user
name,oid
用户
用户名字或id。
cmk
text,oid
客户端加密主密钥
客户端加密主密钥名称或id。
privilege
text
权限
- USAGE:允许使用指定客户端加密主密钥。
- DROP:允许删除指定客户端加密主密钥。
返回类型:Boolean
- has_database_privilege(user, database, privilege)
表7 参数类型说明 参数名
合法入参类型
描述
取值范围
user
name,oid
用户
用户名字或id。
database
text,oid
数据库
数据库名字或id。
privilege
text
权限
- CREATE:对于数据库,允许在数据库里创建新的模式。
- TEMPORARY:允许在使用数据库的时候创建临时表。
- TEMP:允许在使用数据库的时候创建临时表。
- CONNECT:允许用户连接到指定的数据库。
- ALTER:允许用户修改指定对象的属性。
- DROP:允许用户删除指定的对象。
- COMMENT:允许用户定义或修改指定对象的注释。
返回类型:Boolean
- has_database_privilege(database, privilege)
描述:当前用户是否有访问数据库的权限,合法参数类型见表7。
返回类型:Boolean
备注:has_database_privilege检查用户是否能以在特定方式访问数据库。其参数类似has_table_privilege。访问权限类型必须是CREATE、CONNECT、TEMPORARY或TEMP(等价于TEMPORARY)的一些组合。
- has_directory_privilege(user, directory, privilege)
表8 参数类型说明 参数名
合法入参类型
描述
取值范围
user
name,oid
用户
用户名字或id。
directory
text,oid
目录
目录名字或者oid。
privilege
text
权限
- READ:允许对该目录进行读操作。
- WRITE:允许对该目录进行写操作。
描述:指定用户是否有访问directory的权限。
返回类型:Boolean
- has_directory_privilege(directory, privilege)
描述:当前用户是否有访问directory的权限,合法参数类型见表8。
返回类型:Boolean
- has_foreign_data_wrapper_privilege(user, fdw, privilege)
表9 参数类型说明 参数名
合法入参类型
描述
取值范围
user
name,oid
用户
用户名字或者id。
fdw
text,oid
外部数据封装器
外部数据封装器名字或id。
privilege
text
权限
USAGE:允许访问外部数据封装器。
描述:指定用户是否有访问外部数据封装器的权限。
返回类型:Boolean
- has_foreign_data_wrapper_privilege(fdw, privilege)
描述:当前用户是否有访问外部数据封装器的权限,合法参数类型见表9。
返回类型:Boolean
备注:has_foreign_data_wrapper_privilege检查用户是否能以特定方式访问外部数据封装器。其参数类似has_table_privilege。访问权限类型必须是USAGE。
- has_function_privilege(user, function, privilege)
表10 参数类型说明 参数名
合法入参类型
描述
取值范围
user
name,oid
用户
用户名字或者id
function
text,oid
函数
函数名称或id
privilege
text
权限
EXECUTE:允许使用指定的函数,以及利用这些函数实现的操作符。
- ALTER:允许用户修改指定对象的属性。
- DROP:允许用户删除指定的对象。
- COMMENT:允许用户定义或修改指定对象的注释。
描述:指定用户是否有访问函数的权限。
返回类型:Boolean
- has_function_privilege(function, privilege)
描述:当前用户是否有访问函数的权限。合法参数类型见表10。
返回类型:Boolean
备注:has_function_privilege检查一个用户是否能以指定方式访问一个函数。其参数类似has_table_privilege。使用文本字符而不是OID声明一个函数时,允许输入的类型和regprocedure数据类型一样(请参考对象标识符类型)。访问权限类型必须是EXECUTE。
- has_language_privilege(user, language, privilege)
表11 参数类型说明 参数名
合法入参类型
描述
取值范围
user
name,oid
用户
用户名字或id。
language
text,oid
语言
语言名称或id。
privilege
text
权限
USAG:对于过程语言,允许用户在创建函数的时候指定过程语言。
描述:指定用户是否有访问语言的权限。
返回类型:Boolean
- has_language_privilege(language, privilege)
描述:当前用户是否有访问语言的权限。合法参数类型见表11。
返回类型:Boolean
备注:has_language_privilege检查用户是否能以特定方式访问一个过程语言。其参数类似has_table_privilege。访问权限类型必须是USAGE。
- has_nodegroup_privilege(user, nodegroup, privilege)
返回类型:Boolean
表12 参数类型说明 参数名
合法入参类型
描述
取值范围
user
name,oid
用户
已存在用户名称或id。
nodegroup
text,oid
集群节点
已存在的集群节点。
privilege
text
权限
- USAGE:对于子集群,对包含在指定模式中的对象有访问权限时,USAGE允许访问指定子集群下的表对象。
- CREATE:对于子集群,允许在子集群中创建表对象。
- COMPUTE:针对计算子集群,允许用户在具有compute权限的计算子集群上进行弹性计算。
- ALTER:允许用户修改指定对象的属性。
- DROP:允许用户删除指定的对象。
- has_nodegroup_privilege(nodegroup, privilege)
返回类型:Boolean
- has_schema_privilege(user, schema, privilege)
返回类型:Boolean
- has_schema_privilege(schema, privilege)
返回类型:Boolean
备注:has_schema_privilege检查用户是否能以特定方式访问一个模式。其参数类似has_table_privilege。访问权限类型必须是CREATE、USAGE、ALTER、DROP或COMMENT的一些组合。当检查类型里包含CREATE权限且被检查的Schema是用户同名的Schema时,由于同名Schema的特殊约束,必须拥有Schema的OWNER权限,该函数才会返回TRUE。
- has_sequence_privilege(user, sequence, privilege)
返回类型:Boolean
表13 参数类型说明 参数名
合法入参类型
描述
取值范围
user
name,oid
用户
已存在用户名称或id。
sequence
text,oid
序列
已存在序列名称或id。
privilege
text
权限
- USAGE:对于序列,USAGE允许使用nextval函数。
- SELECT:允许创建序列。
- UPDATE:允许执行UPDATE语句。
- ALTER:允许用户修改指定对象的属性。
- DROP:允许用户删除指定的对象。
- COMMENT:允许用户定义或修改指定对象的注释。
- has_sequence_privilege(sequence, privilege)
返回类型:Boolean
- has_server_privilege(user, server, privilege)
返回类型:Boolean
- has_server_privilege(server, privilege)
返回类型:Boolean
备注:has_server_privilege检查用户是否能以指定方式访问一个外部服务器。其参数类似has_table_privilege。访问权限类型必须是USAGE、ALTER、DROP或COMMENT之一的值。
- has_table_privilege(user, table, privilege)
返回类型:Boolean
- has_table_privilege(table, privilege)
返回类型:Boolean
备注:has_table_privilege检查用户是否以特定方式访问表。用户可以通过名称或OID(pg_authid.oid)来指定,public表示为PUBLIC角色,或如果缺省该参数,则使用current_user。该表可以通过名称或者OID声明。如果用名称声明,则在必要时可以用模式进行修饰。如果使用文本字符串来声明所希望的权限类型,这个文本字符串必须是SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCESTRIGGER、ALTER、DROP、COMMENT、INDEX或VACUUM之一的值。可以给权限类型添加WITH GRANT OPTION,用来测试权限是否拥有授权选项。也可以用逗号分隔列出的多个权限类型,如果拥有任何所列出的权限,则结果为true。
示例:
1 2 3 4 5 6 7 8 9 10 11
gaussdb=# SELECT has_table_privilege('tpcds.web_site', 'select'); has_table_privilege --------------------- t (1 row) gaussdb=# SELECT has_table_privilege('omm', 'tpcds.web_site', 'select,INSERT WITH GRANT OPTION '); has_table_privilege --------------------- t (1 row)
- has_tablespace_privilege(user, tablespace, privilege)
返回类型:Boolean
- has_tablespace_privilege(tablespace, privilege)
返回类型:Boolean
备注:has_tablespace_privilege检查用户是否能以特定方式访问一个表空间。其参数类似has_table_privilege。访问权限类型必须是CREATE、ALTER、DROP或COMMENT之一的值。
- pg_has_role(user, role, privilege)
返回类型:Boolean
- pg_has_role(role, privilege)
返回类型:Boolean
备注:pg_has_role检查用户是否能以特定方式访问一个角色。其参数类似has_table_privilege,除了public不能用做用户名。访问权限类型必须是MEMBER或USAGE的一些组合。 MEMBER表示的是角色中的直接或间接成员关系(也就是SET ROLE的权限),而USAGE表示无需通过SET ROLE也直接拥有角色的使用权限。
- has_any_privilege(user, privilege)
描述:指定用户是否有某项ANY权限,若同时查询多个权限,只要具有其中一个则返回true。
返回类型:Boolean
表14 参数类型说明 参数名
合法入参类型
描述
取值范围
user
name
用户
已存在的用户名。
privilege
text
ANY权限
可选取值:
- CREATE ANY TABLE [WITH ADMIN OPTION]
- ALTER ANY TABLE [WITH ADMIN OPTION]
- DROP ANY TABLE [WITH ADMIN OPTION]
- SELECT ANY TABLE [WITH ADMIN OPTION]
- INSERT ANY TABLE [WITH ADMIN OPTION]
- UPDATE ANY TABLE [WITH ADMIN OPTION]
- DELETE ANY TABLE [WITH ADMIN OPTION]
- CREATE ANY SEQUENCE [WITH ADMIN OPTION]
- CREATE ANY INDEX [WITH ADMIN OPTION]
- CREATE ANY FUNCTION [WITH ADMIN OPTION]
- EXECUTE ANY FUNCTION [WITH ADMIN OPTION]
- CREATE ANY PACKAGE [WITH ADMIN OPTION]
- EXECUTE ANY PACKAGE [WITH ADMIN OPTION]
- CREATE ANY TYPE [WITH ADMIN OPTION]
模式可见性查询函数
每个函数执行检查数据库对象类型的可见性。对于函数和操作符,如果在前面的搜索路径中没有相同的对象名称和参数的数据类型,则此对象是可见的。对于操作符类,则要同时考虑名称和相关索引的访问方法。
所有这些函数都需要使用OID来标识需要检查的对象。如果用户想通过名称测试对象,则使用OID别名类型(regclass、regtype、regprocedure、regoperator、regconfig或regdictionary)将会很方便。
比如,如果一个表所在的模式在搜索路径中,并且在前面的搜索路径中没有同名的表,则这个表是可见的。它等效于表可以不带明确模式修饰进行引用。比如,要列出所有可见表的名称:
1
|
gaussdb=# SELECT relname FROM pg_class WHERE pg_table_is_visible(oid); |
- pg_collation_is_visible(collation_oid)
返回类型:Boolean
- pg_conversion_is_visible(conversion_oid)
返回类型:Boolean
- pg_function_is_visible(function_oid)
返回类型:Boolean
- pg_opclass_is_visible(opclass_oid)
返回类型:Boolean
- pg_operator_is_visible(operator_oid)
返回类型:Boolean
- pg_opfamily_is_visible(opclass_oid)
返回类型:Boolean
- pg_table_is_visible(table_oid)
返回类型:Boolean
- pg_ts_config_is_visible(config_oid)
返回类型:Boolean
- pg_ts_dict_is_visible(dict_oid)
返回类型:Boolean
- pg_ts_parser_is_visible(parser_oid)
返回类型:Boolean
- pg_ts_template_is_visible(template_oid)
返回类型:Boolean
- pg_type_is_visible(type_oid)
返回类型:Boolean
系统表信息函数
- format_type(type_oid, typemod)
返回类型:text
备注:format_type通过某个数据类型的OID以及可能的修饰词,返回其SQL名称。如果不知道具体的修饰词,则在修饰词的位置传入NULL。修饰词一般只对有长度限制的数据类型有意义。format_type所返回的SQL名称中包含数据类型的长度值,其大小是:实际存储长度len - sizeof(int32),单位字节。原因是数据存储时需要32位的空间来存储用户对数据类型的自定义长度信息,即实际存储长度要比用户定义长度多4个字节。在下例中,format_type返回的SQL名称为“character varying(6)”,6表示varchar类型的长度值是6字节,因此该类型的实际存储长度为10字节。
1 2 3 4 5
gaussdb=# SELECT format_type((SELECT oid FROM pg_type WHERE typname='varchar'), 10); format_type ---------------------- character varying(6) (1 row)
- pg_check_authid(role_oid)
返回类型:Boolean
gaussdb=# select pg_check_authid(1); pg_check_authid ----------------- f (1 row)
- pg_describe_object(catalog_id, object_id, object_sub_id)
返回类型:text
备注:pg_describe_object返回由目录OID,对象OID和一个(或许0个)子对象ID指定的数据库对象的描述。这有助于确认存储在pg_depend系统表中对象的身份。
- pg_get_constraintdef(constraint_oid)
返回类型:text
- pg_get_constraintdef(constraint_oid, pretty_bool)
返回类型:text
备注:pg_get_constraintdef和pg_get_indexdef分别从约束或索引上使用创建命令进行重构。
- pg_get_expr(pg_node_tree, relation_oid)
描述:反编译表达式的内部形式,假设其中的任何Vars都引用第二个参数指定的关系。
返回类型:text
- pg_get_expr(pg_node_tree, relation_oid, pretty_bool)
描述:反编译表达式的内部形式,假设其中的任何Vars都引用第二个参数指定的关系。
返回类型:text
备注:pg_get_expr反编译一个独立表达式的内部形式,比如一个字段的缺省值。便于检查系统表的内容。如果表达式可能包含关键字,则指定关键字引用相关的OID作为第二个参数;如果没有关键字,用零表示即可。
- pg_get_functiondef(func_oid)
返回类型:text
示例:gaussdb=# SELECT * FROM pg_get_functiondef(598); headerlines | definition -------------+---------------------------------------------------- 4 | CREATE OR REPLACE FUNCTION pg_catalog.abbrev(inet)+ | RETURNS text + | LANGUAGE internal + | IMMUTABLE STRICT NOT FENCED NOT SHIPPABLE + | AS $function$inet_abbrev$function$ + | (1 row)
- pg_get_function_arguments(func_oid)
返回类型:text
备注:pg_get_function_arguments返回一个函数的参数列表,需要在CREATE FUNCTION中使用这种格式。
- pg_get_function_identity_arguments(func_oid)
返回类型:text
备注:pg_get_function_identity_arguments返回需要的参数列表用来标识函数,这种形式需要在ALTER FUNCTION中使用,并且这种形式省略了默认值。
- pg_get_function_result(func_oid)
返回类型:text
备注:pg_get_function_result为函数返回适当的RETURNS子句。
- pg_get_indexdef(index_oid)
返回类型:text
示例:gaussdb=# SELECT * FROM pg_get_indexdef(16416); pg_get_indexdef ------------------------------------------------------------------------- CREATE INDEX test3_b_idx ON test3 USING btree (b) TABLESPACE pg_default (1 row)
- pg_get_indexdef(index_oid, dump_schema_only)
描述:获取索引的CREATE INDEX命令,仅用于dump场景。当前版本dump_schema_only参数取值对函数输出结果无影响。
返回类型:text
示例:gaussdb=# SELECT * FROM pg_get_indexdef(16416, true); pg_get_indexdef ------------------------------------------------------------------------- CREATE INDEX test3_b_idx ON test3 USING btree (b) TABLESPACE pg_default (1 row)
- pg_get_indexdef(index_oid, column_no, pretty_bool)
描述:获取索引的CREATE INDEX命令,或者如果column_no不为零,则只获取一个索引字段的定义。
返回类型:text
示例:gaussdb=# SELECT * FROM pg_get_indexdef(16416, 0, false); pg_get_indexdef ------------------------------------------------------------------------- CREATE INDEX test3_b_idx ON test3 USING btree (b) TABLESPACE pg_default (1 row) gaussdb=# SELECT * FROM pg_get_indexdef(16416, 1, false); pg_get_indexdef ----------------- b (1 row)
备注:pg_get_functiondef为函数返回一个完整的CREATE OR REPLACE FUNCTION语句。
- pg_get_keywords()
返回类型:setof record
备注:pg_get_keywords返回一组关于描述服务器识别SQL关键字的记录。word列包含关键字。catcode列包含一个分类代码:U表示通用的、C表示列名、T表示类型或函数名、R表示保留。catdesc列包含了一个可能本地化描述分类的字符串。
- pg_get_ruledef(rule_oid)
返回类型:text
- pg_get_ruledef(rule_oid, pretty_bool)
返回类型:text
- pg_get_userbyid(role_oid)
返回类型:name
备注:pg_get_userbyid通过角色的OID抽取对应的用户名。
- pg_check_authid(role_id)
返回类型:text
gaussdb=# SELECT pg_check_authid(20); pg_check_authid ----------------- f (1 row)
- pg_get_viewdef(view_name)
返回类型:text
- pg_get_viewdef(view_name, pretty_bool)
描述:为视图获取底层的SELECT命令,如果pretty_bool为true,行字段可以包含80列。
返回类型:text
备注:pg_get_viewdef重构出定义视图的SELECT查询。这些函数通常都有两种形式,其中带有pretty_bool参数且参数为true时,是“适合打印”的结果,这种格式更容易读。另一种是缺省的格式,更有可能被将来的不同版本用同样的方法解释。如果是用于转储,那么尽可能避免使用适合打印的格式。给pretty-print参数传递false生成的结果和没有这个参数的变种生成的结果完全一样。
- pg_get_viewdef(view_oid)
返回类型:text
- pg_get_viewdef(view_oid, pretty_bool)
描述:为视图获取底层的SELECT命令,如果pretty_bool为true,行字段可以包含80列。
返回类型:text
- pg_get_viewdef(view_oid, wrap_column_int)
描述:为视图获取底层的SELECT命令;行字段被换到指定的列数,打印是隐含的。
返回类型:text
- pg_get_tabledef(table_oid)
返回类型:text
示例:gaussdb=# SELECT * FROM pg_get_tabledef(16384); pg_get_tabledef ----------------------------------------------------------------------------------------------- SET search_path = public; + CREATE TABLE t1 ( + c1 bigint DEFAULT nextval('serial'::regclass) + ) + WITH (orientation=row, compression=no) + DISTRIBUTE BY HASH(c1) + TO GROUP group1; + ALTER TABLE t1 ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER 1 DAYS OF NO MODIFICATION; (1 row)
- pg_get_tabledef(table_name)
返回类型:text
示例:gaussdb=# SELECT * FROM pg_get_tabledef('t1'); pg_get_tabledef ----------------------------------------------------------------------------------------------- SET search_path = public; + CREATE TABLE t1 ( + c1 bigint DEFAULT nextval('serial'::regclass) + ) + WITH (orientation=row, compression=no) + DISTRIBUTE BY HASH(c1) + TO GROUP group1; + ALTER TABLE t1 ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER 1 DAYS OF NO MODIFICATION; (1 row)
备注:pg_get_tabledef重构出表定义的CREATE语句,包含了表定义本身、索引信息、comments和ilm策略信息。对于表对象依赖的group、schema、tablespace、server等信息,需要用户自己创建。如果ilm策略信息是继承自父对象,pg_get_tabledef不会返回该数据对象的ilm策略信息创建语句。
- pg_options_to_table(reloptions)
返回类型:setof record
备注:pg_options_to_table当通过pg_class.reloptions或pg_attribute.attoptions时返回存储选项名称/值对(option_name/option_value)的集合。
- pg_tablespace_databases(tablespace_oid)
返回类型:setof oid
备注:pg_tablespace_databases允许检查表空间的状况,返回在该表空间中保存了对象的数据库OID集合。如果这个函数返回数据行,则该表空间就是非空的,因此不能删除。要显示该表空间中的特定对象,用户需要连接pg_tablespace_databases标识的数据库与查询pg_class系统表。
- pg_tablespace_location(tablespace_oid)
返回类型:text
- pg_typeof(any)
返回类型:regtype
备注:pg_typeof返回传递给他的值的数据类型OID。这可能有助于故障排除或动态构造SQL查询。声明此函数返回regtype,这是一个OID别名类型(请参考对象标识符类型);这意味着它是一个为了比较而显示类型名称的OID。
示例:
1 2 3 4 5 6 7 8 9 10 11
gaussdb=# SELECT pg_typeof(33); pg_typeof ----------- integer (1 row) gaussdb=# SELECT typlen FROM pg_type WHERE oid = pg_typeof(33); typlen -------- 4 (1 row)
- collation for (any)
返回类型:text
备注:表达式collation for返回传递给他的值的排序。示例:
1 2 3 4 5
gaussdb=# SELECT collation for (description) FROM pg_description LIMIT 1; pg_collation_for ------------------ "default" (1 row)
值可能是引号括起来的并且模式限制的。如果没有为参数表达式排序,则返回一个null值。如果参数不是排序的类型,则提示一个错误。
- getdistributekey(table_name)
返回类型:text
示例:
1 2 3 4 5
gaussdb=# SELECT getdistributekey('item'); getdistributekey ------------------ i_item_sk (1 row)
- pg_extension_update_paths(name)
描述:返回指定扩展的版本更新路径,本函数仅系统管理员可调用。
返回类型:text(source text), text(target text), text(path text)
- pg_get_serial_sequence(tablename, colname)
返回类型:text
示例:gaussdb=# SELECT * FROM pg_get_serial_sequence('t1', 'c1'); pg_get_serial_sequence ------------------------ public.serial (1 row)
- pg_sequence_parameters(sequence_oid)
描述:获取指定sequence的参数,包含起始值、最小值、最大值、递增值等。
返回类型:int16,int16,int16,int16,Boolean
示例:gaussdb=# SELECT * FROM pg_sequence_parameters(16420); start_value | minimum_value | maximum_value | increment | cycle_option -------------+---------------+---------------------+-----------+-------------- 101 | 1 | 9223372036854775807 | 1 | f (1 row)
- pgxc_get_variable_info( )
描述:获取节点上的变量值,包括nodeName、nextOid、nextXid、oldestXid、xidVacLimit、oldestXidDB、lastExtendCSNLogpage、startExtendCSNLogpage、nextCommitSeqNo、latestCompleteXid,startupMaxXid。
返回类型:set of pg_variable_info
示例:gaussdb=# SELECT pgxc_get_variable_info( ); pgxc_get_variable_info ------------------------------------------------------------------------- (dn_6004_6005_6006,25617,141396349,2073,20000002073,15808,138111,0,127154152,141396348,104433004) (1 row)
- gs_get_index_status(schema_name, index_name)
描述:获取所有节点上的索引状态信息,包括索引是否可插入以及索引是否可用,主要用于在线创建索引过程中或者构建失败的情况下,确认索引状态。返回值包括节点名称node_name、索引是否可插入状态indisready、索引是否可以用状态indisvalid,只有当所有节点上索引的indisready和indisvalid状态均为true,且索引状态没有被修改为unusable的情况下,当前索引才可用。
返回类型:text,boolean,boolean
示例:gaussdb=# SELECT * FROM gs_get_index_status('public', 'index1'); node_name | indisready | indisvalid ----------------+------------+----------- datanode1 | t | t datanode2 | t | t coordinator1 | t | t (3 row)
注释信息函数
- col_description(table_oid, column_number)
返回类型:text
备注:col_description返回一个表中字段的注释,通过表OID和字段号来声明。
- obj_description(object_oid, catalog_name)
返回类型:text
备注:带有两个参数的obj_description返回一个数据库对象的注释,该对象是通过其OID和其所属的系统表名称声明。比如,obj_description(123456,'pg_class')将返回OID为123456的表的注释。只带一个参数的obj_description只要求对象OID。
obj_description不能用于表字段,因为字段没有自己的OID。
- obj_description(object_oid)
返回类型:text
- shobj_description(object_oid, catalog_name)
返回类型:text
备注:shobj_description和obj_description差不多,不同之处仅在于前者用于共享对象。一些系统表是通用于集群中所有数据库的全局表,因此这些表的注释也是全局存储的。
事务ID和快照
txid_snapshot的文本表示为:xmin:xmax:xip_list。
示例:10:20:10,14,15意思为:xmin=10, xmax=20, xip_list=10, 14, 15。
以下的函数在一个输出形式中提供服务器事务信息。这些函数的主要用途是为了确定在两个快照之间有哪些事务提交。
- pgxc_is_committed(transaction_id)
描述:如果普通表提交或忽略给定的XID(gxid)。NULL表示的状态是未知的(运行、准备、冻结等)。如果在维护模式(GUC参数xc_maintenance_mode为on时)下,会遍历所有bucketid和普通表对应的xid状态,如果有状态冲突,例如同一个xid,在bucket1状态为提交,在bucket2为回滚则报错。该模式谨慎打开,一般供维护人员排查问题使用,一般用户不应使用该模式。
返回类型:Boolean
- pgxc_is_committed(transaction_id, bucketid)
描述:如果指定bucketid提交或忽略给定的XID(gxid)。NULL表示的状态是未知的(运行、准备、冻结等), bucketid是hash bucket表的物理bucketid,普通表为-1。如果在维护模式(GUC参数xc_maintenance_mode为on时)下,指定bucketid为-1,会遍历所有bucketid和普通表对应的xid状态,如果有状态冲突,例如同一个xid,在bucket1状态为提交,在bucket2为回滚则报错。该模式谨慎打开,一般供维护人员排查问题使用,一般用户不应使用该模式。
返回类型:Boolean
- txid_current()
返回类型:bigint
- gs_txid_oldestxmin()
返回类型:bigint
- txid_current_snapshot()
返回类型:txid_snapshot
- txid_snapshot_xip(txid_snapshot)
返回类型:setof bigint
- txid_snapshot_xmax(txid_snapshot)
返回类型:bigint
- txid_snapshot_xmin(txid_snapshot)
返回类型:bigint
- txid_visible_in_snapshot(bigint, txid_snapshot)
返回类型:Boolean
- get_local_prepared_xact()
描述:获取当前节点两阶段残留事务信息,包括事务id,两阶段gid名称,prepared的时间,owner的oid,database的oid及当前节点的node_name。
返回类型:xid, text, timestamptz, oid, text
- get_remote_prepared_xacts()
描述:获取所有远程节点两阶段残留事务信息,包括事务id,两阶段gid名称,prepared的时间,owner的名称,database的名称及node_name。
返回类型:xid, text, timestamptz, name, text
- global_clean_prepared_xacts(text, text)
描述:并发清理两阶段残留事务,仅gs_clean工具调用该函数进行清理,其他情况下调用均返回false。
返回类型:Boolean
- pgxc_stat_get_wal_senders()
描述:返回集群中所有主DN的发送日志的信息和其对应的备DN的接收日志的信息。仅支持system admin或monitor admin权限用户使用。
返回值如表16所示。表16 pgxc_stat_get_wal_senders返回参数说明 字段名
描述
nodename
实例名。
sender_pid
发送日志的线程pid。
local_role
实例角色。
peer_role
接收端的实例的角色。
peer_state
接收端的实例的状态。
state
实例间同步的状态。
sender_sent_location
发送端发送日志的位置。
sender_write_location
发送端写日志的位置。
sender_flush_location
发送端刷盘日志的位置。
sender_replay_location
当前实例的日志位置。如果是主DN,则该位置和
sender_flush_location相同;否则该位置为当前实例日志回放到的位置。
receiver_received_location
接收端日志接收到的位置。
receiver_write_location
接收端日志写的位置。
receiver_flush_location
接收端日志刷盘的位置。
receiver_replay_location
接收端日志回放的位置。
- pgxc_stat_get_wal_senders_status()
描述:返回所有节点事务日志接收状态。仅支持system admin或monitor admin权限用户使用。
返回值如表17所示。
表17 pgxc_stat_get_wal_senders_status返回参数说明 字段名
描述
nodename
主节点名。
source_ip
主节点IP。
source_port
主节点端口。
dest_ip
备节点IP。
dest_port
备节点端口。
sender_pid
发送线程PID。
local_role
主节点类型。
peer_role
备节点类型。
peer_state
备节点状态。
state
wal sender状态。
sender_sent_location
主节点发送位置。
sender_write_location
主节点落盘位置。
sender_replay_location
主节点redo位置。
receiver_received_location
备节点接收位置。
receiver_write_location
备节点落盘位置。
receiver_flush_location
备节点flush磁盘位置。
receiver_replay_location
备节点redo位置。
- gs_get_next_xid_csn()
描述:返回全局所有节点上的next_xid和next_csn值。
返回值如:表18所示。
- pg_control_system()
返回类型:SETOF record
- pg_control_checkpoint()
返回类型:SETOF record
- get_prepared_pending_xid()
参数:nan
返回值类型:text
- pg_clean_region_info()
参数:nan
返回值类型:character varying
- pg_get_replication_slot_name()
参数:nan
返回值类型:text
- pg_get_running_xacts()
参数:nan
返回值类型:handle integer, gxid xid, state tinyint, node text, xmin xid, vacuum boolean, timeline bigint, prepare_xid xid, pid bigint, next_xid xid,dbid oid。
- pg_get_variable_info()
参数:nan
返回值类型:node_name text, nextOid oid, nextXid xid, oldestXid xid, xidVacLimit xid, oldestXidDB oid, lastExtendCSNLogpage xid, startExtendCSNLogpage xid, nextCommitSeqNo xid, latestCompletedXid xid, startupMaxXid xid
- pg_get_xidlimit()
参数:nan
返回值类型:nextXid xid, oldestXid xid, xidVacLimit xid, xidWarnLimit xid, xidStopLimit xid, xidWrapLimit xid, oldestXidDB oid
- pg_relation_compression_ratio()
参数:text
返回值类型:real
- pg_relation_with_compression()
参数:text
返回值类型:boolean
- pg_stat_file_recursive()
参数:location text
返回值类型:path text, filename text, size bigint, isdir boolean
- pg_stat_get_activity_for_temptable()
参数:nan
返回值类型:datid oid, timelineid integer, tempid integer, sessionid bigint
- pg_stat_get_activity_ng()
参数:pid bigint
返回值类型:datid oid, pid bigint, sessionid bigint, node_group text
- pg_stat_get_cgroup_info()
参数:nan
返回值类型:cgroup_name text, percent integer, usage_percent integer, shares bigint, usage bigint, cpuset text, relpath text, valid text, node_group text
- pg_stat_get_realtime_info_internal()
描述:返回实时信息,当前该接口已不可用,返回FailedToGetSessionInfo。
参数:oid, oid, bigint, cstring, oid
返回值类型:text
- pg_stat_get_wlm_session_iostat_info()
参数:nan
返回值类型:threadid bigint, maxcurr_iops integer, mincurr_iops integer, maxpeak_iops integer, minpeak_iops integer, iops_limits integer, io_priority integer, curr_io_limits integer
- pg_test_err_contain_err()
参数:integer
返回值类型:void
- pv_session_memory_detail_tp()
描述:返回会话的内存使用情况,参考pv_session_memory_detail。
参数:nan
返回值类型:sessid text, sesstype text, contextname text, level smallint, parent text, totalsize bigint, freesize bigint, usedsize bigint
- gs_get_table_distribution()
参数:table_name text, schema_name text
返回值类型:text
- pv_builtin_functions()
参数:nan
返回值类型:proname name, pronamespace oid, proowner oid, prolang oid, procost real, prorows real, provariadic oid, protransform regproc, proisagg boolean, proiswindow boolean, prosecdef boolean, proleakproof boolean, proisstrict boolean, proretset boolean, provolatile "char", pronargs smallint, pronargdefaults smallint, prorettype oid, proargtypes oidvector, proallargtypes integer[], proargmodes "char"[], proargnames text[], proargdefaults pg_node_tree, prosrc text, probin text, proconfig text[], proacl aclitem[], prodefaultargpos int2vector, fencedmode boolean, proshippable boolean, propackage boolean, oid oid
- pv_thread_memory_detail()
参数:nan
返回值类型:threadid text, tid bigint, thrdtype text, contextname text, level smallint, parent text, totalsize bigint, freesize bigint, usedsize bigint
- pg_shared_memory_detail()
描述:返回所有已产生的共享内存上下文的使用信息,各列描述请参考SHARED_MEMORY_DETAIL。
参数:nan
返回值类型:contextname text, level smallint, parent text, totalsize bigint, freesize bigint, usedsize bigint
- pgxc_get_running_xacts()
描述:返回集群中各个节点运行事务的信息,字段内容和PGXC_RUNNING_XACTS相同。只有system admin和monitor admin用户有权限查看。
参数:nan
返回值类型:setof record
- pgxc_snapshot_status()
描述:在GTM模式下,返回GTM中关键内存信息状态,用来支持问题定位,GTM-Free、GTM-Lite不支持本函数。
参数:nan
返回值类型:xmin xid, xmax xid, xcnt int, oldestxmin xid, next_xid xid, timeline int, active_thread_num int, max_active_thread_num int, snapshot_num int, snapshot_totalsize bigint
返回值描述如:表19所示。
表19 get_gtm_lite_status返回参数说明 字段名
描述
xmin
GTM上当前最小的活跃事务id。
xmax
GTM上当前提交的最大的事务id + 1,大于等于该值的事务id是活跃的。
xcnt
GTM上当前活跃事务个数。
oldestxmin
GTM上最老被访问的事务id号。
next_xid
GTM上下一个分配的事务id号。
timeline
GTM上当前的时间线。
active_thread_num
GTM上当前活跃的工作线程数。
max_active_thread_num
GTM上1分钟内工作线程数峰值。
snapshot_num
GTM上1分钟内下发的快照个数。
snapshot_totalsize
GTM上1分钟内下发快照总大小。
- get_gtm_lite_status()
描述:返回GTM上的backupXid和csn号,用来支持问题定位,GTM-FREE模式下不支持使用本系统函数。
返回值如表20所示。 - adm_hist_snapshot_func()
描述:返回快照执行时间相关信息,访问该函数需要打开enable_wdr_snapshot参数,并且需要snapshot schema, snapshot表和tables_snap_timestamp表的访问权限。
参数:nan
返回值类型:snap_id bigint, dbid oid, begin_interval_time timestamp(3), end_interval_time timestamp(3), flush_elapsed interval day(5) to second(1), begin_interval_time_tz timestamp(3) with time zone, end_interval_time_tz timestamp(3) with time zone
- global_sql_patch_func()
描述:全局各个节点上的SQL PATCH信息,用于返回global_sql_patch视图的结果。
返回值如表21所示。
表21 global_sql_patch_func返回参数说明 名称
类型
描述
node_name
text
SQLpatch所在节点名。
patch_name
name
PATCH名称。
unique_sql_id
bigint
查询全局唯一ID。
owner
oid
PATCH的创建用户ID。
enable
boolean
PATCH是否生效。
status
"char"
PATCH的状态(预留字段)。
abort
boolean
是否是AbortHint。
hint_string
text
Hint文本。
description
text
PATCH的备注。
parent_unique_sql_id
bigint
PATCH生效的SQL语句的外层语句的全局唯一ID,存储过程外的语句该值为0,存储过程内的语句该值为调用该存储过程语句的全局唯一ID。
- gs_get_current_version()
参数:nan
返回值类型:char
- gs_get_kernel_info()
返回值如表22所示。
表22 gs_get_kernel_info返回参数说明 名称
类型
描述
node_name
text
节点名。
module
text
模块名。包括:
- XACT(事务模块)。
- STANDBY(备机模块)。
- UNDO(undo模块)。
- HOTPATH(热补丁模块)。
name
text
探查内存态关键数据名字。包括:
- startup_max_xid(线程启动时最大的xid值)。
- recent_local_xmin(本地活跃事务最小xid值)recent_global_xmin(全局活跃事务最小xid值)。
- standby_xmin(备机活跃事务最小xid值)。
- standby_redo_cleanup_xmin(备机redo时cleanup日志最小xid值)。
- standby_redo_cleanup_xmin_lsn(备机redo时cleanup日志最小xid的LSN值)。
- local_csn_min(本地活跃事务最小CSN值)。
- replication_slot_xmin(复制槽的最小xid值)。
- replication_slot_catalog_xmin(catalog复制槽最小xid值)。
- global_recycle_xid(全局undo回收事务的最小xid值)。
- global_frozen_xid(全局冻结事务的最小的xid值)。
- recent_xmin(当前会话活跃事务最小xid值)。
- next_csn(下一个事务的CSN值)。
- hotpatch_additional_info(热补丁预留字段)。
- stmt_session_discard_records(内核支持全量SQL因slot满丢弃数据量)。
- stmt_shm_flush_discard_records(内核支持全量SQL因ringbuf满丢弃数据量)。
- idle_in_trans_timeout_records(内核支持空闲事务超时次数累计数据量)。
value
text
探查内存态关键数据值。
示例:
gaussdb=# SELECT * FROM gs_get_kernel_info(); node_name | module | name | value --------------+---------+-------------------------------+--------- coordinator1 | XACT | startup_max_xid | 16488 coordinator1 | XACT | recent_local_xmin | 16504 coordinator1 | XACT | recent_global_xmin | 16503 coordinator1 | STANDBY | standby_xmin | 0 coordinator1 | STANDBY | standby_redo_cleanup_xmin | 0 coordinator1 | STANDBY | standby_redo_cleanup_xmin_lsn | 0/0 coordinator1 | XACT | local_csn_min | 6014225 coordinator1 | XACT | replication_slot_xmin | 0 coordinator1 | XACT | replication_slot_catalog_xmin | 0 coordinator1 | UNDO | global_recycle_xid | 16501 coordinator1 | XACT | global_frozen_xid | 0 coordinator1 | XACT | recent_xmin | 16504 coordinator1 | XACT | next_csn | 6014226 coordinator1 | HOTPATH | hotpatch_additional_info | coordinator1 | FULL_SQL| stmt_session_discard_records | 0 coordinator1 | FULL_SQL| stmt_shm_flush_discard_records| 0 coordinator1 | XACT | idle_in_trans_timeout_records | 0 datanode1 | XACT | startup_max_xid | 16488 datanode1 | XACT | recent_local_xmin | 15805 datanode1 | XACT | recent_global_xmin | 15805 datanode1 | STANDBY | standby_xmin | 0 datanode1 | STANDBY | standby_redo_cleanup_xmin | 0 datanode1 | STANDBY | standby_redo_cleanup_xmin_lsn | 0/0 datanode1 | XACT | local_csn_min | 6014225 datanode1 | XACT | replication_slot_xmin | 0 datanode1 | XACT | replication_slot_catalog_xmin | 0 datanode1 | UNDO | global_recycle_xid | 15805 datanode1 | XACT | global_frozen_xid | 0 datanode1 | XACT | recent_xmin | 15805 datanode1 | XACT | next_csn | 6014226 datanode1 | HOTPATH | hotpatch_additional_info | datanode1 | FULL_SQL| stmt_session_discard_records | 0 datanode1 | FULL_SQL| stmt_shm_flush_discard_records| 0 datanode1 | XACT | idle_in_trans_timeout_records | 0 (34 row)