系统表信息函数
format_type(type_oid, typemod)
描述:获取数据类型的SQL名称。
返回类型: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)
描述:检查是否存在给定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)
描述:获取函数的RETURNS子句。
返回类型:text
备注:pg_get_function_result为函数返回适当的RETURNS子句。
pg_get_indexdef(index_oid)
描述:获取索引的CREATE INDEX命令。
返回类型: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()
描述:获取SQL关键字和类别列表。函数的返回结果为服务器识别的SQL关键字的记录,具体字段如下:
- word列:包含关键字。
- catcode列:包含一个分类代码,即U表示通用的、C表示列名、T表示类型或函数名、R表示保留。
- catdesc列:包含一个可能本地化描述分类的字符串。
返回类型:setof record
备注:在不同兼容性模式下,由于关键字的范围与类型不完全一致,函数返回结果会有所差异。该函数的返回结果不会包含disable_keyword_options参数中配置的选项,disable_keyword_options参数的详细说明请参见《管理员指南》中”配置运行参数 > GUC参数说明 > 版本和平台兼容性 > 平台和客户端兼容性”章节。
pg_get_ruledef(rule_oid)
描述:获取规则的CREATE RULE命令。
返回类型:text
pg_get_ruledef(rule_oid, pretty_bool)
描述:获取规则的CREATE RULE命令。
返回类型:text
pg_get_userbyid(role_oid)
描述:获取给定OID的角色名。
返回类型:name
备注:pg_get_userbyid通过角色的OID抽取对应的用户名。
pg_check_authid(role_id)
描述:通过role_id检查用户是否存在。
返回类型:text
gaussdb=# SELECT pg_check_authid(20);
pg_check_authid
-----------------
f
(1 row)
pg_get_viewdef(view_name)
描述:为视图获取底层的SELECT命令。
返回类型: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)
描述:为视图获取底层的SELECT命令
返回类型: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)
描述:根据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)
描述:根据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)
描述:获取在指定的表空间中有对象的数据库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)
描述:获取一个hash表的分布列。
返回类型: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)