华为云用户手册

  • pg_get_indexdef(index_oid) 描述:获取索引的CREATE INDEX命令。 返回类型:text index_oid为索引的OID,可以通过PG_STATIO_ALL_INDEXES系统视图查询。 示例:查询索引ds_ship_mode_t1_index1的OID及其创建命令。 1 2 3 4 5 6 7 8 9 10 SELECT indexrelid FROM PG_STATIO_ALL_INDEXES WHERE indexrelname = 'ds_ship_mode_t1_index1'; indexrelid ------------ 136035 (1 row) SELECT * FROM pg_get_indexdef(136035); pg_get_indexdef --------------------------------------------------------------------------------------------------------------- CREATE INDEX ds_ship_mode_t1_index1 ON tpcds.ship_mode_t1 USING psort (sm_ship_mode_sk) TABLESPACE pg_default (1 row)
  • pg_get_viewdef(viewname text [, pretty bool [, fullflag bool]]) 描述:为视图获取底层的SELECT命令。 返回类型:text 备注: pg_get_viewdef重构定义视图的SELECT查询。pretty bool参数为true时,显示格式“适合打印”,且该格式易读。pretty bool参数缺省值为false,显示格式不易读。如果用于转储,那么尽可能使用缺省格式。pretty bool参数只对有效视图生效。 fullflag bool参数为true时,显示视图的完整定义。其缺省值为false。
  • pg_typeof(any) 描述:获取任何值的数据类型。 返回类型:regtype 备注: pg_typeof返回传递给他的值的数据类型OID。这可能有助于故障排除或动态构造SQL查询。声明此函数返回regtype,这是一个OID别名类型(请参考对象标识符类型);这意味着它是一个为了比较而显示类型名字的OID。 示例: 1 2 3 4 5 6 7 8 9 10 11 SELECT pg_typeof(33); pg_typeof ----------- integer (1 row) SELECT typlen FROM pg_type WHERE oid = pg_typeof(33); typlen -------- 4 (1 row)
  • pg_get_indexdef(index_oid, column_no, pretty_bool) 描述:获取索引的CREATE INDEX命令,或者如果column_no不为零,则只获取一个索引字段的定义。 返回类型:text 1 2 3 4 5 6 7 8 9 10 SELECT * FROM pg_get_indexdef(136035,0,false); pg_get_indexdef --------------------------------------------------------------------------------------------------------------- CREATE INDEX ds_ship_mode_t1_index1 ON tpcds.ship_mode_t1 USING psort (sm_ship_mode_sk) TABLESPACE pg_default (1 row) SELECT * FROM pg_get_indexdef(136035,1,false); pg_get_indexdef ----------------- sm_ship_mode_sk (1 row)
  • pg_get_tabledef(table_oid) 描述:根据table_oid获取表定义。 返回类型:text 示例:先通过系统表pg_class获取表customer_t2的OID,再使用此函数查询表customer_t2的定义,可获取创建表customer_t2时的表字段,表的存储方式(行存或列存)及表的分布方式等信息。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 SELECT oid FROM pg_class WHERE relname ='customer_t2'; oid ------- 17353 (1 row) SELECT * FROM pg_get_tabledef(17353); pg_get_tabledef -------------------------------------------- SET search_path = dbadmin; + CREATE TABLE customer_t2 ( + state_id character(2), + state_name character varying(40), + area_id numeric + ) + WITH (orientation=column, compression=low)+ DISTRIBUTE BY HASH(state_id) + TO GROUP group_version1; (1 row)
  • collation for (any) 描述:获取参数的排序。 返回类型:text 备注: 表达式collation for返回传递给他的值的排序。示例: 1 2 3 4 5 SELECT collation for (description) FROM pg_description LIMIT 1; pg_collation_for ------------------ "default" (1 row) 值可能是引号括起来的并且模式限制的。如果没有为参数表达式排序,则返回一个null值。如果参数不是排序的类型,则抛出一个错误。
  • table_skewness(table_name text, column_name text[, row_num text]) 描述:查看表里某列数据,按hash分布规则,在各节点的占比情况。结果以数据节点上的数据量排序。 参数:table_name为表名;column_name为列名;row_num表示查看当前列所有数据,可缺省,默认为0。非0时,表示抽取指定条数的数据查看占比情况(每次采样结果可能不相同,只保证采集row_num条数据进行占比计算)。 返回值类型:record 示例: 根据tx表中的a列,按hash分布,则在1,2,0编号的DN上分布的数据量分别为7条,2条,1条。 1 2 3 4 5 6 7 SELECT * FROM table_skewness('tx','a'); seqnum | num | ratio --------+-----+---------- 1 | 7 | 70.000% 2 | 2 | 20.000% 0 | 1 | 10.000% (3 row)
  • 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 SELECT format_type((SELECT oid FROM pg_type WHERE typname='varchar'), 10); format_type ---------------------- character varying(6) (1 row)
  • 模式可见性查询函数 每个函数对数据库对象执行可见性检查。对于函数和操作符,如果在前面的搜索路径中没有相同的对象名称和参数的数据类型,则此对象是可见的。对于操作符类,则要同时考虑名字和相关索引的访问方法。 所有这些函数都需要使用OID来标识要需要检查的对象。如果用户想通过名字测试对象,则可使用OID别名类型(regclass、regtype、regprocedure、regoperator、regconfig或regdictionary)。 比如,如果一个表所在的模式在搜索路径中,并且在前面的搜索路径中没有同名的表,那么这个表是可见的。它等效于表可以不带明确模式修饰进行引用。比如,要列出所有可见表的名字: 1 SELECT relname FROM pg_class WHERE pg_table_is_visible(oid);
  • has_foreign_data_wrapper_privilege(fdw, privilege) 描述:当前用户是否有访问外部数据封装器的权限。 参数:fdw表示外部数据封装器,可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串必须是USAGE。 返回类型:boolean 备注:has_foreign_data_wrapper_privilege检查用户是否能以特定方式访问外部数据封装器。其参数类似has_table_privilege。访问权限类型必须是USAGE。
  • has_function_privilege(function, privilege) 描述:当前用户是否有访问函数的权限。 参数:function可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串必须是EXECUTE。 返回类型:boolean 备注:has_function_privilege检查当前用户是否能以指定方式访问指定函数。其参数类似has_table_privilege。使用文本字符而不是OID声明一个函数时,允许输入的类型和regprocedure数据类型一样(请参考对象标识符类型)。访问权限类型必须是EXECUTE。
  • has_schema_privilege(schema, privilege) 描述:当前用户是否有访问模式的权限。 参数:schema可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串可取值CREATE、USAGE,也可以用逗号分隔列出的多个权限类型。 返回类型:boolean 备注:has_schema_privilege检查用户是否能以特定方式访问指定模式。其参数类似has_table_privilege。访问权限类型必须是CREATE或USAGE的一些组合。
  • pg_has_role(role, privilege) 描述:当前用户是否有角色的权限。 参数:role可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串可取值MEMBER、USAGE,也可以用逗号分隔列出的多个权限类型。 返回类型:boolean 备注:pg_has_role检查用户是否能以特定方式访问角色。其参数类似has_table_privilege,除了public不能用做用户名。访问权限类型必须是MEMBER或USAGE的一些组合。 MEMBER表示的是角色中的直接或间接成员关系(也就是SET ROLE的权限),而USAGE表示无需通过SET ROLE也直接拥有角色的使用权限。
  • has_column_privilege(user, table, column, privilege) 描述:指定用户是否有访问列的权限。 参数:user可以通过名字(text类型)或OID来声明。table可以通过名字(text类型)或者OID来声明。column可以通过列名(text类型)或属性号(smallint类型)来声明。privilege使用文本字符串来声明,该文本字符串可取值SELECT、INSERT、UPDATE、REFEREN CES ,也可以用逗号分隔列出的多个权限类型。 返回类型:boolean
  • has_column_privilege(table, column, privilege) 描述:当前用户是否有访问列的权限。 参数:table可以通过名字(text类型)或者OID来声明。column可以通过列名(text类型)或属性号(smallint类型)来声明。privilege使用文本字符串来声明,该文本字符串可取值SELECT、INSERT、UPDATE、REFERENCES,也可以用逗号分隔列出的多个权限类型。 返回类型:boolean 备注:has_column_privilege检查用户是否以特定方式访问一列。其参数类似于has_table_privilege,可以通过列名或属性号添加列。想要的访问权限类型必须是SELECT、INSERT、UPDATE或REFERENCES的一些组合。 拥有表的表级别权限则隐含的拥有该表每列的列级权限。
  • has_database_privilege(database, privilege) 描述:当前用户是否有访问数据库的权限。 参数:database可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串可取值CREATE、CONNECT、TEMPORARY或TEMP,也可以用逗号分隔列出的多个权限类型。 返回类型:boolean 备注:has_database_privilege检查用户是否能以在特定方式访问数据库。其参数类似has_table_privilege。访问权限类型必须是CREATE、CONNECT、TEMPORARY或TEMP(等价于TEMPORARY)的一些组合。
  • has_foreign_data_wrapper_privilege(user, fdw, privilege) 描述:指定用户是否有访问外部数据封装器的权限。 参数:user可以通过名字(text类型)或OID来声明。fdw表示外部数据封装器,可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串必须是USAGE。 参数fdw,表示外部数据封装器,取值范围为外部数据封装器名字或ID。 返回类型:boolean
  • has_server_privilege(server, privilege) 描述:当前用户是否有访问外部服务的权限。 参数:server可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串取值必须是USAGE。 返回类型:boolean 备注:has_server_privilege检查用户是否能以指定方式访问指定外部服务器。其参数类似has_table_privilege。访问权限类型必须是USAGE。
  • has_any_column_privilege(table, privilege) 描述:当前用户是否有访问表任何列的权限。 参数:table可以通过名字(text类型)或者OID来声明。privilege使用文本字符串(text类型)来声明,该文本字符串可取值SELECT、INSERT、UPDATE、REFERENCES,也可以用逗号分隔列出的多个权限类型。 返回类型:boolean 备注:has_any_column_privilege检查用户是否以特定方式访问表的任何列。其参数可能与has_table_privilege类似,除了访问权限类型必须是SELECT、INSERT、UPDATE或REFERENCES的一些组合。 拥有表的表级别权限则隐含的拥有该表每列的列级权限,因此如果与has_table_privilege参数相同,has_any_column_privilege总是返回true。但是如果授予至少一列的列级权限也返回成功。
  • has_database_privilege(user, database, privilege) 描述:指定用户是否有访问数据库的权限。 参数:user可以通过名字(text类型)或OID来声明。database可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串可取值SELECT、INSERT、UPDATE、REFERENCES,也可以用逗号分隔列出的多个权限类型。 返回类型:boolean
  • has_table_privilege(table, privilege) 描述:当前用户是否有访问表的权限。 参数:table可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串可取值SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES或TRIGGER,也可以用逗号分隔列出的多个权限类型。 返回类型:boolean 备注:has_table_privilege检查用户是否以特定方式访问表。用户可以通过名字或OID(pg_authid.oid)来指定,public表明PUBLIC伪角色,如果缺省该参数,则使用current_user。该表可以通过名字或者OID声明。如果用名字声明,则在必要时可以用模式进行修饰。如果使用文本字符串来声明权限类型,可以给权限类型添加WITH GRANT OPTION,用来测试权限是否拥有授权选项。当有多个权限类型时,拥有任何所列出的权限之一,则结果便为true。 示例: 1 2 3 4 5 6 7 8 9 10 11 SELECT has_table_privilege('tpcds.web_site', 'select'); has_table_privilege --------------------- t (1 row) SELECT has_table_privilege('dbadmin', 'tpcds.web_site', 'select,INSERT WITH GRANT OPTION '); has_table_privilege --------------------- t (1 row)
  • has_any_column_privilege(user, table, privilege) 描述:指定用户是否有访问表任何列的权限。 参数:user可以通过名字(text类型)或OID来声明。table可以通过名字(text类型)或者OID来声明。privilege使用文本字符串(text类型)来声明,该文本字符串可取值SELECT、INSERT、UPDATE、REFERENCES,也可以用逗号分隔列出的多个权限类型。 返回类型:boolean
  • has_language_privilege(language, privilege) 描述:当前用户是否有访问语言的权限。 参数:language可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串必须是USAGE。 返回类型:boolean 备注:has_language_privilege检查用户是否能以特定方式访问过程语言。其参数类似has_table_privilege。访问权限类型必须是USAGE。
  • has_table_privilege(user, table, privilege) 描述:指定用户是否有访问表的权限。 参数:user可以通过名字(text类型)或OID来声明。table可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串可取值SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES或TRIGGER,也可以用逗号分隔列出的多个权限类型。 返回类型:boolean
  • version() 描述:版本信息。version返回一个描述服务器版本信息的字符串。 返回值类型:text 示例: 1 2 3 4 5 SELECT version(); version --------------------------------------------------------------------------------------------------------------------------------------- PostgreSQL 9.2.4 gsql (( GaussDB 8.1.3 build 39137c2d) compiled at 2022-04-01 15:43:11 commit 3629 last mr 5138 release) on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 5.4.0, 64-bit (1 row)
  • current_schema[()] 描述:当前模式的名字。current_schema返回在搜索路径中第一个顺位有效的模式名。(如果搜索路径为空则返回NULL,没有有效的模式名也返回NULL)。如果创建表或者其他命名对象时没有声明目标模式,则将使用这些对象的模式。 返回值类型:name 示例: 1 2 3 4 5 SELECT current_schema(); current_schema ---------------- public (1 row)
  • current_schemas(boolean) 描述:current_schemas(boolean)返回搜索路径中所有模式名字的数组。布尔选项决定像pg_catalog这样隐含包含的系统模式是否包含在返回的搜索路径中。 返回值类型:name[] 示例: 1 2 3 4 5 SELECT current_schemas(true); current_schemas --------------------- {pg_catalog,public} (1 row) 搜索路径可以通过运行时设置更改。命令是: 1 SET search_path TO schema [, schema, ...]
  • pg_conf_load_time() 描述:配置加载时间。pg_conf_load_time返回最后加载服务器配置文件的时间戳。 返回值类型:timestamp with time zone 示例: 1 2 3 4 5 SELECT pg_conf_load_time(); pg_conf_load_time ------------------------------ 2017-09-01 16:05:23.89868+08 (1 row)
  • pg_postmaster_start_time() 描述:服务器启动时间。pg_postmaster_start_time返回服务器启动时的timestamp with time zone。 返回值类型:timestamp with time zone 示例: 1 2 3 4 5 SELECT pg_postmaster_start_time(); pg_postmaster_start_time ------------------------------ 2017-08-30 16:02:54.99854+08 (1 row)
  • pg_my_temp_schema() 描述:pg_my_temp_schema返回当前会话中临时模式的OID,如果不存在(没有创建临时表)的话则返回0。如果给定的OID是其它会话中临时模式的OID,pg_is_other_temp_schema则返回true。 返回值类型:oid 示例: 1 2 3 4 5 SELECT pg_my_temp_schema(); pg_my_temp_schema ------------------- 0 (1 row)
共100000条