华为云用户手册

  • 注释信息函数 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差不多,不同之处仅在于前者用于共享对象。一些系统表是通用于GaussDB中所有数据库的全局表,因此这些表的注释也是全局存储的。
  • 模式可见性查询函数 每个函数执行检查数据库对象类型的可见性。对于函数和操作符,如果在前面的搜索路径中没有相同的对象名称和参数的数据类型,则此对象是可见的。对于操作符类,则要同时考虑名称和相关索引的访问方法。 所有这些函数都需要使用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) 描述:获取数据类型的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) getdistributekey(table_name) 描述:获取一个hash表的分布列。单机环境下不支持分布,该函数返回为空。 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场景。对于包含local索引的间隔分区表,当dump_schema_only为true时,返回的创建索引语句中不包含自动创建的分区的local索引信息;当dump_schema_only为false时,返回的创建索引语句中包含自动创建的分区的local索引信息。对于非间隔分区表或者不包含local索引的间隔分区表,dump_schema_only参数取值不影响函数返回结果。 返回类型:text 示例: gaussdb=# CREATE TABLE sales (prod_id NUMBER(6), cust_id NUMBER, time_id DATE, channel_id CHAR(1), promo_id NUMBER(6), quantity_sold NUMBER(3), amount_sold NUMBER(10,2)) PARTITION BY RANGE( time_id) INTERVAL('1 day') (partition p1 VALUES LESS THAN ('2019-02-01 00:00:00'), partition p2 VALUES LESS THAN ('2019-02-02 00:00:00') ); CREATE TABLE gaussdb=# CREATE INDEX index_sales ON sales(prod_id) local (PARTITION idx_p1 ,PARTITION idx_p2); CREATE INDEX gaussdb=# -- 插入数据没有匹配的分区,新创建一个分区,并将数据插入该分区。 gaussdb=# INSERT INTO sales VALUES(1, 12, '2019-02-05 00:00:00', 'a', 1, 1, 1); INSERT 0 1 gaussdb=# SELECT oid FROM pg_class WHERE relname = 'index_sales'; oid ------- 24632 (1 row) gaussdb=# SELECT * FROM pg_get_indexdef(24632, true); pg_get_indexdef -------------------------------------------------------------------------------------------------------------------------- CREATE INDEX index_sales ON sales USING btree (prod_id) LOCAL(PARTITION idx_p1, PARTITION idx_p2) TABLESPACE pg_default (1 row) gaussdb=# SELECT * FROM pg_get_indexdef(24632, false); pg_get_indexdef ------------------------------------------------------------------------------------------------------------------------------------ -------------------- CREATE INDEX index_sales ON sales USING btree (prod_id) LOCAL(PARTITION idx_p1, PARTITION idx_p2, PARTITION sys_p1_prod_id_idx) TA BLESPACE pg_default (1 row pg_get_indexdef(index_oid, column_no, pretty_bool) 描述:获取索引的CREATE INDEX命令,或者如果column_no不为零,则只获取一个索引字段的定义。 示例: 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) 返回类型:text 备注:pg_get_functiondef为函数返回一个完整的CREATE OR REPLACE FUNCTION语句。 pg_get_keywords() 描述:获取SQL关键字和类别列表。 返回类型:setof record 备注:pg_get_keywords返回一组关于描述服务器识别SQL关键字的记录。word列包含关键字。catcode列包含一个分类代码:U表示通用的、C表示列名、T表示类型或函数名、或R表示保留。catdesc列包含了一个可能本地化描述分类的字符串。 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获取表定义。 示例: 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, storage_type=USTORE, segment=off);+ ILM Security Policies: + POLICY "p4" TABLE + ROW STORE COMPRESS ADVANCED ROW AFTER 1 DAYS OF NO MODIFICATION + STATUS: ENABLED DELETED: NO + (1 row) 返回类型:text pg_get_tabledef(table_name) 描述:根据table_name获取表定义 示例: 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, storage_type=USTORE, segment=off);+ ILM Security Policies: + POLICY "p4" TABLE + ROW STORE COMPRESS ADVANCED ROW AFTER 1 DAYS OF NO MODIFICATION + STATUS: ENABLED DELETED: NO + (1 row) 返回类型:text 备注:pg_get_tabledef重构出表定义的CREATE语句,包含了表定义本身、索引信息、comments、ilm策略(若存在)信息。对于表对象依赖的group、schema、tablespace、server等信息,需要单独创建,表定义里不会有这些对象的创建语句。 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返回传递给他的值的排序。 值可能是引号括起来的并且模式限制的。如果没有为参数表达式排序,则返回一个null值。如果参数不是排序的类型,则抛出一个错误。 示例: 1 2 3 4 5 gaussdb=# SELECT collation for (description) FROM pg_description LIMIT 1; pg_collation_for ------------------ "default" (1 row) pg_extension_update_paths(name) 描述:返回指定扩展的版本更新路径。 返回类型:text(source text), text(path text), text(target 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)
  • 访问权限查询函数 DDL类权限ALTER、DROP、COMMENT、INDEX、VACUUM属于所有者固有的权限,隐式拥有。 以下访问权限查询函数仅表示用户是否具有某对象上的某种对象权限,即返回记录在系统表acl字段中的对象权限拥有情况。 has_any_column_privilege(user, table, privilege) 描述:指定用户是否有访问表任何列的权限。 表1 参数类型说明 参数名 合法入参类型 user name, oid table text, oid privilege text 返回类型:Boolean has_any_column_privilege(table, privilege) 描述:当前用户是否有访问表任何列的权限,合法参数类型如表1所示。 返回类型:Boolean 备注:has_any_column_privilege检查用户是否以特定方式访问表的任何列。其参数可能与has_table_privilege类似,除了访问权限类型必须是SELECT、INSERT、UPDATE、COMMENT或REFERENCES的一些组合。 拥有表的表级别权限则隐含的拥有该表每列的列级权限,因此如果与has_table_privilege参数相同,has_any_column_privilege总是返回true。但是如果授予至少一列的列级权限也返回成功。 has_column_privilege(user, table, column, privilege) 描述:指定用户是否有访问列的权限。 表2 参数类型说明 参数名 合法入参类型 user name, oid table text, oid column text, smallint privilege text 返回类型:Boolean has_column_privilege(table, column, privilege) 描述:当前用户是否有访问列的权限,合法参数类型如表2所示。 返回类型:Boolean 备注:has_column_privilege检查用户是否以特定方式访问一列。其参数类似于has_table_privilege,可以通过列名或属性号添加列。想要的访问权限类型必须是SELECT、INSERT、UPDATE、COMMENT或REFERENCES的一些组合。 拥有表的表级别权限则隐含的拥有该表每列的列级权限。 has_cek_privilege(user, cek, privilege) 描述:指定用户是否有访问列加密密钥CEK的权限。参数说明如下。 表3 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或id。 cek text,oid 列加密密钥 列加密密钥名称或id。 privilege text 权限 USAGE:允许使用指定列加密密钥。 DROP:允许删除指定列加密密钥。 返回类型:Boolean has_cmk_privilege(user, cmk, privilege) 描述:指定用户是否有访问客户端加密主密钥CMK的权限。参数说明如下。 表4 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或id。 cmk text,oid 客户端加密主密钥 客户端加密主密钥名称或id。 privilege text 权限 USAGE:允许使用指定客户端加密主密钥。 DROP:允许删除指定客户端加密主密钥。 返回类型:Boolean has_database_privilege(user, database, privilege) 描述:指定用户是否有访问数据库的权限。参数说明如下。 表5 参数类型说明 参数名 合法入参类型 user name, oid database text, oid privilege text 返回类型:Boolean has_database_privilege(database, privilege) 描述:当前用户是否有访问数据库的权限,合法参数类型如表5所示。 返回类型:Boolean 备注:has_database_privilege检查用户是否能以在特定方式访问数据库。其参数类似has_table_privilege。访问权限类型必须是CREATE、CONNECT、TEMPORARY、ALTER、DROP、COMMENT或TEMP(等价于TEMPORARY)的一些组合。 has_directory_privilege(user, directory, privilege) 描述:指定用户是否有访问directory的权限。 表6 参数类型说明 参数名 合法入参类型 user name, oid directory text, oid privilege text 返回类型:Boolean has_directory_privilege(directory, privilege) 描述:当前用户是否有访问directory的权限,合法参数类型如表6所示。 返回类型:Boolean has_foreign_data_wrapper_privilege(user, fdw, privilege) 描述:指定用户是否有访问外部数据封装器的权限。 表7 参数类型说明 参数名 合法入参类型 user name, oid fdw text, oid privilege text 返回类型:Boolean has_foreign_data_wrapper_privilege(fdw, privilege) 描述:当前用户是否有访问外部数据封装器的权限。合法参数类型请参见如表7所示。 返回类型:Boolean 备注:has_foreign_data_wrapper_privilege检查用户是否能以特定方式访问外部数据封装器。其参数类似has_table_privilege。访问权限类型必须是USAGE。 has_function_privilege(user, function, privilege) 描述:指定用户是否有访问函数的权限。 表8 参数类型说明 参数名 合法入参类型 user name, oid function text, oid privilege text 返回类型:Boolean has_function_privilege(function, privilege) 描述:当前用户是否有访问函数的权限。合法参数类型如表8所示。 返回类型:Boolean 备注:has_function_privilege检查一个用户是否能以指定方式访问一个函数。其参数类似has_table_privilege。使用文本字符而不是OID声明一个函数时,允许输入的类型和regprocedure数据类型一样(请参考对象标识符类型)。访问权限类型必须是EXECUTE、ALTER、DROP或COMMENT。 has_language_privilege(user, language, privilege) 描述:指定用户是否有访问语言的权限。 表9 参数类型说明 参数名 合法入参类型 user name, oid language text, oid privilege text 返回类型:Boolean has_language_privilege(language, privilege) 描述:当前用户是否有访问语言的权限。合法参数类型如表9所示。 返回类型:Boolean 备注:has_language_privilege检查用户是否能以特定方式访问一个过程语言。其参数类似has_table_privilege。访问权限类型必须是USAGE。 has_nodegroup_privilege(user, nodegroup, privilege) 描述:检查用户是否有数据库节点访问权限。 返回类型:Boolean 表10 参数类型说明 参数名 合法入参类型 user name, oid nodegroup text, oid privilege text has_nodegroup_privilege(nodegroup, privilege) 描述:检查用户是否有数据库节点访问权限。参数与has_table_privilege类似。访问权限类型必须是USAGE、CREATE、COMPUTE、ALTER或DROP。 返回类型: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_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、REFERENCES、TRIGGER、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也直接拥有角色的使用权限。
  • 会话信息函数 SYS_CONTEXT() 描述:返回当前时刻与上下文命名空间'namespace'关联的参数'parameter'的值。 返回值类型: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) 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() 描述:返回当前的schema的名称。 参数:无 返回值类型:name 示例: 1 2 3 4 5 gaussdb=# SELECT database(); database ---------- public (1 row) 此函数仅当sql_compatibility = 'B',设置参数 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) pg_current_sessionid() 描述:当前执行环境下的会话ID。 返回值类型: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为ThreadID。 pg_current_sessid 描述:当前执行环境下的会话ID。 返回值类型:text 示例: gaussdb=# select pg_current_sessid(); pg_current_sessid ------------------- 140308875015936 (1 row) 备注:在线程池模式下获得当前会话的会话ID,非线程池模式下获得当前会话对应的后台线程ID。 pg_current_userid 描述:当前用户ID。 返回值类型:text gaussdb=# SELECT pg_current_userid(); pg_current_userid ------------------- 10 (1 row) working_version_num() 描述:版本序号信息。返回一个系统兼容性有关的版本序号。 返回值类型:int 示例: 1 2 3 4 5 gaussdb=# SELECT working_version_num(); working_version_num --------------------- 92231 (1 row) tablespace_oid_name(oid) 描述: 根据表空间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() 描述:当前会话连接的服务线程的线程ID。 返回值类型: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,不存在则为0。 返回值类型: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) pg_get_ruledef(rule_oid) 描述:获取规则的CREATE RULE命令。 返回值类型:text 示例: gaussdb=# SELECT * FROM pg_get_ruledef(24828); pg_get_ruledef ------------------------------------------------------------------- CREATE RULE t1_ins AS ON INSERT TO t1 DO INSTEAD INSERT INTO t2 (id) VALUES (new.id); (1 row) sessionid2pid() 描述: 从sessionid中得到pid信息(例如,gs_session_stat中sessid列)。 返回值类型: int8 示例: 1 2 3 4 5 6 gaussdb=# SELECT sessionid2pid(sessid::cstring) FROM gs_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) 备注:当前支持的parameter:current_user、current_schema、client_info、ip_address、sessionid、sid。 pg_trigger_depth() 描述:触发器的嵌套层次。 返回值类型:int 示例: 1 2 3 4 5 gaussdb=# SELECT pg_trigger_depth(); pg_trigger_depth ------------------ 0 (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 描述:等价于current_user。 返回值类型:name 示例: 1 2 3 4 5 gaussdb=# SELECT user; current_user -------------- omm (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 示例: gaussdb=# SELECT version(); version ------------------------------------------------------------------------------------------------------------------------------------------------------------- gaussdb (GaussDB Kernel XXX.X.XXX build fab4f5ea) compiled at 2021-10-24 11:58:22 commit 3086 last mr 6592 release (1 row) opengauss_version() 描述:openGauss版本信息。 返回值类型:text 使用示例如下,查询结果中的x.x.x请已实际输出为准: 1 2 3 4 5 gaussdb=# SELECT opengauss_version(); opengauss_version ------------------- x.x.x (1 row) gs_deployment() 描述:当前系统的部署形态信息。 返回值类型:text 示例: 1 2 3 4 5 gaussdb=# SELECT gs_deployment(); gs_deployment --------------------- BusinessCentralized (1 row) get_hostname() 描述:返回当前节点的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 -------------- datanode1 (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 -------------- CEN_DN (1 row) gaussdb=# SELECT get_nodeinfo('node_name'); get_nodeinfo -------------- datanode1 (1 row) get_schema_oid(cstring) 描述:返回查询schema的oid。 返回值类型:oid 示例: 1 2 3 4 5 gaussdb=# SELECT get_schema_oid('public'); get_schema_oid ---------------- 2200 (1 row) get_client_info() 描述:返回客户端信息。 返回值类型:record
  • 注意事项 GaussDB包含一个或多个已命名数据库。用户和用户组在数据库范围内是共享的,但是其数据并不共享。任何与服务器连接的用户都只能访问连接请求里声明的数据库。 一个数据库可以包含一个或多个已命名的schema,schema又包含表及其他数据库对象,包括数据类型、函数和操作符等。同一对象名可以在不同的schema中使用而不会引起冲突。例如,schema1和schema2都可以包含一个名为mytable的表。 和数据库不同,schema不是严格分离的。用户根据其对schema的权限,可以访问所连接数据库的schema中的对象。进行schema权限管理首先需要对数据库的权限控制进行了解。 不能创建以PG_为前缀的schema名,该类schema名为数据库系统预留的。 在每次创建新用户时,系统会在当前登录的数据库中为新用户创建一个同名schema。对于其他数据库,若需要同名schema,则需要用户手动创建。 通过未修饰的表名(名称中只含有表名,没有“schema名”)引用表时,系统会通过search_path(搜索路径)来判断该表是哪一个schema下的表。pg_temp和pg_catalog始终会作为搜索路径顺序中的前两位,无论二者是否出现在search_path中,或者出现在search_path中的任何位置。search_path(搜索路径)是一个schema名列表,在其中找到的第一个表就是目标表,如果没有找到则报错。(某个表即使存在,如果它的schema不在search_path中,依然会查找失败)在搜索路径中的第一个schema叫做"当前schema",它是搜索时查询的第一个schema,同时在没有声明schema名时,新创建的数据库对象会默认存放在该schema下。 每个数据库都包含一个pg_catalog schema,它包含系统表和所有内置数据类型、函数和操作符。pg_catalog是搜索路径中的一部分,始终在临时表所属的模式后面,并在search_path中所有模式的前面,即具有第二搜索优先级,以确保可以搜索到数据库内置对象。如果用户需要使用和系统内置对象重名的自定义对象时,可以在操作自定义对象时带上自己的模式。
  • 操作步骤 创建管理用户及权限schema 执行如下命令创建一个schema。 1 gaussdb=# CREATE SCHEMA myschema; 当结果显示为如下信息,则表示成功创建一个名为myschema的schema。 1 CREATE SCHEMA 如果需要在模式中创建或者访问对象,其完整的对象名称由模式名称和具体的对象名称组成,中间由符号“.”隔开。例如:myschema.table。 执行如下命令在创建schema时指定owner。 1 gaussdb=# CREATE SCHEMA myschema AUTHORIZATION omm; 当结果显示为如下信息,则表示成功创建一个属于omm用户,名为myschema的schema。 1 CREATE SCHEMA 使用schema 在特定schema下创建对象或者访问特定schema下的对象,需要使用有schema修饰的对象名。该名称包含schema名以及对象名,schema名和对象名之间用“.”号分开。 执行如下命令在myschema下创建mytable表。 1 2 gaussdb=# CREATE TABLE myschema.mytable(id int, name varchar(20)); CREATE TABLE 如果在数据库中指定对象的位置,就需要使用有schema修饰的对象名称。 执行如下命令查询myschema下mytable表的所有数据。 1 2 3 4 gaussdb=# SELECT * FROM myschema.mytable; id | name ----+------ (0 rows) schema的搜索路径 可以设置search_path配置参数指定查询对象可用schema的顺序。在搜索路径列出的第一个schema会变成默认的schema。如果在创建对象时不指定schema,则会创建在默认的schema中。 执行如下命令查看搜索路径。 1 2 3 4 5 gaussdb=# SHOW SEARCH_PATH; search_path ---------------- "$user",public (1 row) 执行如下命令将搜索路径设置为myschema, public。首先搜索myschema,然后搜索public。 1 2 gaussdb=# SET SEARCH_PATH TO myschema, public; SET schema的权限控制 默认情况下,用户只能访问属于自己的schema中的数据库对象。如果需要访问其他schema的对象,则该schema的所有者应该授予他对该schema的usage权限。 通过将模式的CREATE权限授予某用户,被授权用户就可以在此模式中创建对象。默认情况下,所有角色都拥有在public模式上的usage权限,但是普通用户没有在public模式上的CREATE权限。普通用户能够连接到一个指定数据库并在它的public模式中创建对象是不安全的,如果普通用户具有在public模式上的CREATE权限则建议通过如下语句撤销该权限。 撤销PUBLIC在public模式下创建对象的权限,下面语句中第一个“public”指的是模式,第二个“PUBLIC”指的是所有角色。 1 2 gaussdb=# REVOKE CREATE ON SCHEMA public FROM PUBLIC; REVOKE 执行如下命令查看现有的schema。 1 2 3 4 5 gaussdb=# SELECT current_schema(); current_schema ---------------- myschema (1 row) 执行如下命令创建用户jack,并将myschema的usage权限授予用户jack。 1 2 3 4 gaussdb=# CREATE USER jack IDENTIFIED BY '********'; CREATE ROLE gaussdb=# GRANT USAGE ON schema myschema TO jack; GRANT 将用户jack对于myschema的usage权限收回。 1 2 gaussdb=# REVOKE USAGE ON schema myschema FROM jack; REVOKE 删除schema 当schema为空时,即该schema下没有数据库对象,使用DROP SCHEMA命令进行删除。例如删除名为nullschema的空schema。 1 2 gaussdb=# DROP SCHEMA IF EXISTS nullschema; DROP SCHEMA 当schema非空时,如果要删除一个schema及其包含的所有对象,需要使用CASCADE关键字。例如删除myschema及该schema下的所有对象。 1 2 gaussdb=# DROP SCHEMA myschema CASCADE; DROP SCHEMA 执行如下命令删除用户jack。 1 2 gaussdb=# DROP USER jack; DROP ROLE
  • java.sql.DatabaseMetaData java.sql.DatabaseMetaData是数据库对象定义接口。 表1 对java.sql.DatabaseMetaData的支持情况 方法名 返回值类型 支持JDBC4 allProceduresAreCallable() boolean Yes allTablesAreSelectable() boolean Yes autoCommitFailureClosesAllResultSets() boolean Yes dataDefinitionCausesTransactionCommit() boolean Yes dataDefinitionIgnoredInTransactions() boolean Yes deletesAreDetected(int type) boolean Yes doesMaxRowSizeIncludeBlobs() boolean Yes generatedKeyAlwaysReturned() boolean Yes getBestRowIdentifier(String catalog, String schema, String table, int scope, boolean nullable) ResultSet Yes getCatalogs() ResultSet Yes getCatalogSeparator() String Yes getCatalogTerm() String Yes getClientInfoProperties() ResultSet Yes getColumnPrivileges(String catalog, String schema, String table, String columnNamePattern) ResultSet Yes getConnection() Connection Yes getCrossReference(String parentCatalog, String parentSchema, String parentTable, String foreignCatalog, String foreignSchema, String foreignTable) ResultSet Yes getDefaultTransactionIsolation() int Yes getExportedKeys(String catalog, String schema, String table) ResultSet Yes getExtraNameCharacters() String Yes getFunctionColumns(String catalog, String schemaPattern, String functionNamePattern, String columnNamePattern) ResultSet Yes getFunctions(String catalog, String schemaPattern, String functionNamePattern) ResultSet Yes getIdentifierQuoteString() String Yes getImportedKeys(String catalog, String schema, String table) ResultSet Yes getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate) ResultSet Yes getMaxBinaryLiteralLength() int Yes getMaxCatalogNameLength() int Yes getMaxCharLiteralLength() int Yes getMaxColumnNameLength() int Yes getMaxColumnsInGroupBy() int Yes getMaxColumnsInIndex() int Yes getMaxColumnsInOrderBy() int Yes getMaxColumnsInSelect() int Yes getMaxColumnsInTable() int Yes getMaxConnections() int Yes getMaxCursorNameLength() int Yes getMaxIndexLength() int Yes getMaxLogicalLobSize() default long Yes getMaxProcedureNameLength() int Yes getMaxRowSize() int Yes getMaxSchemaNameLength() int Yes getMaxStatementLength() int Yes getMaxStatements() int Yes getMaxTableNameLength() int Yes getMaxTablesInSelect() int Yes getMaxUserNameLength() int Yes getNumericFunctions() String Yes getPrimaryKeys(String catalog, String schema, String table) ResultSet Yes getPartitionTablePrimaryKeys(String catalog, String schema, String table) ResultSet Yes getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern) ResultSet Yes getProcedures(String catalog, String schemaPattern, String procedureNamePattern) ResultSet Yes getProcedureTerm() String Yes getSchemas() ResultSet Yes getSchemas(String catalog, String schemaPattern) ResultSet Yes getSchemaTerm() String Yes getSearchStringEscape() String Yes getSQLKeywords() String Yes getSQLStateType() int Yes getStringFunctions() String Yes getSystemFunctions() String Yes getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern) ResultSet Yes getTimeDateFunctions() String Yes getTypeInfo() ResultSet Yes getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types) ResultSet Yes getURL() String Yes getVersionColumns(String catalog, String schema, String table) ResultSet Yes insertsAreDetected(int type) boolean Yes locatorsUpdateCopy() boolean Yes othersDeletesAreVisible(int type) boolean Yes othersInsertsAreVisible(int type) boolean Yes othersUpdatesAreVisible(int type) boolean Yes ownDeletesAreVisible(int type) boolean Yes ownInsertsAreVisible(int type) boolean Yes ownUpdatesAreVisible(int type) boolean Yes storesLowerCaseIdentifiers() boolean Yes storesMixedCaseIdentifiers() boolean Yes storesUpperCaseIdentifiers() boolean Yes supportsBatchUpdates() boolean Yes supportsCatalogsInDataManipulation() boolean Yes supportsCatalogsInIndexDefinitions() boolean Yes supportsCatalogsInPrivilegeDefinitions() boolean Yes supportsCatalogsInProcedureCalls() boolean Yes supportsCatalogsInTableDefinitions() boolean Yes supportsCorrelatedSubqueries() boolean Yes supportsDataDefinitionAndDataManipulationTransactions() boolean Yes supportsDataManipulationTransactionsOnly() boolean Yes supportsGetGeneratedKeys() boolean Yes supportsMixedCaseIdentifiers() boolean Yes supportsMultipleOpenResults() boolean Yes supportsNamedParameters() boolean Yes supportsOpenCursorsAcrossCommit() boolean Yes supportsOpenCursorsAcrossRollback() boolean Yes supportsOpenStatementsAcrossCommit() boolean Yes supportsOpenStatementsAcrossRollback() boolean Yes supportsPositionedDelete() boolean Yes supportsPositionedUpdate() boolean Yes supportsRefCursors() boolean Yes supportsResultSetConcurrency(int type, int concurrency) boolean Yes supportsResultSetType(int type) boolean Yes supportsSchemasInIndexDefinitions() boolean Yes supportsSchemasInPrivilegeDefinitions() boolean Yes supportsSchemasInProcedureCalls() boolean Yes supportsSchemasInTableDefinitions() boolean Yes supportsSelectForUpdate() boolean Yes supportsStatementPooling() boolean Yes supportsStoredFunctionsUsingCallSyntax() boolean Yes supportsStoredProcedures() boolean Yes supportsSubqueriesInComparisons() boolean Yes supportsSubqueriesInExists() boolean Yes supportsSubqueriesInIns() boolean Yes supportsSubqueriesInQuantifieds() boolean Yes supportsTransactionIsolationLevel(int level) boolean Yes supportsTransactions() boolean Yes supportsUnion() boolean Yes supportsUnionAll() boolean Yes updatesAreDetected(int type) boolean Yes getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) ResultSet Yes getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) ResultSet Yes getTableTypes() ResultSet Yes getUserName() String Yes isReadOnly() boolean Yes nullsAreSortedHigh() boolean Yes nullsAreSortedLow() boolean Yes nullsAreSortedAtStart() boolean Yes nullsAreSortedAtEnd() boolean Yes getDatabaseProductName() String Yes getDatabaseProductVersion() String Yes getDriverName() String Yes getDriverVersion() String Yes getDriverMajorVersion() int Yes getDriverMinorVersion() int Yes usesLocalFiles() boolean Yes usesLocalFilePerTable() boolean Yes supportsMixedCaseIdentifiers() boolean Yes storesUpperCaseIdentifiers() boolean Yes storesLowerCaseIdentifiers() boolean Yes supportsMixedCaseQuotedIdentifiers() boolean Yes storesUpperCaseQuotedIdentifiers() boolean Yes storesLowerCaseQuotedIdentifiers() boolean Yes storesMixedCaseQuotedIdentifiers() boolean Yes supportsAlterTableWithAddColumn() boolean Yes supportsAlterTableWithDropColumn() boolean Yes supportsColumnAliasing() boolean Yes nullPlusNonNullIsNull() boolean Yes supportsConvert() boolean Yes supportsConvert(int fromType, int toType) boolean Yes supportsTableCorrelationNames() boolean Yes supportsDifferentTableCorrelationNames() boolean Yes supportsExpressionsInOrderBy() boolean Yes supportsOrderByUnrelated() boolean Yes supportsGroupBy() boolean Yes supportsGroupByUnrelated() boolean Yes supportsGroupByBeyondSelect() boolean Yes supportsLikeEscapeClause() boolean Yes supportsMultipleResultSets() boolean Yes supportsMultipleTransactions() boolean Yes supportsNonNullableColumns() boolean Yes supportsMinimumSQLGrammar() boolean Yes supportsCoreSQLGrammar() boolean Yes supportsExtendedSQLGrammar() boolean Yes supportsANSI92EntryLevelSQL() boolean Yes supportsANSI92IntermediateSQL() boolean Yes supportsANSI92FullSQL() boolean Yes supportsIntegrityEnhancementFacility() boolean Yes supportsOuterJoins() boolean Yes supportsFullOuterJoins() boolean Yes supportsLimitedOuterJoins() boolean Yes isCatalogAtStart() boolean Yes supportsSchemasInDataManipulation() boolean Yes supportsSavepoints() boolean Yes supportsResultSetHoldability(int holdability) boolean Yes getResultSetHoldability() int Yes getDatabaseMajorVersion() int Yes getDatabaseMinorVersion() int Yes getJDBCMajorVersion() int Yes getJDBCMinorVersion() int Yes getPartitionTablePrimaryKeys(String catalog, String schema, String table)方法用于获取分区表含全局索引的主键列,使用示例如下: PgDatabaseMetaData dbmd = (PgDatabaseMetaData)conn.getMetaData(); dbmd.getPartitionTablePrimaryKeys("catalogName", "schemaName", "tableName"); 父主题: JDBC接口参考
  • a_format_load_with_constraints_violation 参数说明:gs_loader导入数据支持约束冲突时,是否开启不回滚功能。 参数类型:字符串 参数单位:无 取值范围: s1:表示gs_loader支持约束冲突时,开启不回滚功能。 '':表示gs_loader支持约束冲突时,不开启不回滚功能。 默认值:'' 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:无。
  • copy_special_character_version 参数说明:控制COPY导入导出数据时对非法编码的字符处理的相关表现。 参数类型:字符串 参数单位:无 取值范围:''、no_error、per_byte。 默认值:'' 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 使用gsql连接数据库,使用set方式设置时不区分大小写,使用gs_guc设置时仅能设置小写。 设置建议:无 表2 兼容性配置项 兼容性配置项 兼容性行为控制 no_error 控制使用COPY导入数据文件时,当文件编码与服务端编码相同时,对数据文件中不满足编码信息的数据进行容错处理,不报错按照原编码插入表中。 per_byte 控制使用COPY导出文本格式的数据文件时,对文件编码为GBK或ZHS16GBK文件的处理方式。 设置per_byte后,在导出数据时一次导出一个字节数据,否则按照一次导出两个字节的数据(GBK编码下一个字符占两个字节)。 空值 参数默认配置,不影响任何功能使用,做前向兼容处理。即COPY存在非法编码时报错。 为保证导入表中数据的合法性,COPY中需要对数据编码的合法性校验。当开启此参数后会屏蔽非法校验操作并导致字段内出现非法字符,请酌情考虑开启此参数。 当前屏蔽数据编码校验仅在服务端编码与数据编码保持一致时生效,未指定数据编码时数据编码默认为客户端编码。 如需记录非法编码字段,建议使用COPY语法中的log errors或log errors data参数。 二进制模式下copy_special_character_version='no_error',仅对TEXT、CHAR、VARCHAR、NVARCHAR2、CLOB类型的字段生效。 此参数仅在UTF-8、GB18030、GB18030_2022、ZHS16GBK、LATIN1字符集数据库下使用生效。 客户端编码与服务端编码一致都为GBK或ZHS16GBK时,当数据库内存在非法编码的数据,如果不设置copy_special_character_version为per_byte,导出的数据文件中可能会存在预期外的数据。 设置copy_special_character_version值为no_error时无法与COPY内COMPATIABLE_ILLEGAL_CHARS参数同时使用。
  • raise_errors_if_no_files 参数说明:导入时是否区分“导入文件记录数为空”和“导入文件不存在”。raise_errors_if_no_files=TRUE,则“导入文件不存在”的时候,GaussDB将抛出“文件不存在的”错误。 该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 TRUE表示导入时区分“导入文件记录数为空”和“导入文件不存在”。 FALSE表示导入时不区分“导入文件记录数为空”和“导入文件不存在”。 默认值:FALSE
  • safe_data_path 参数说明:设置初始用户以外的路径前缀限制,目前包括copy和高级包路径限制。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串(小于4096个字符) 默认值:NULL 如果safe_data_path目录下存在软链接文件,则会按软链接实际指向的文件路径进行处理,实际路径如果不在safe_data_path下会报错处理。 如果safe_data_path目录下存在硬链接文件,则可以正常使用。为安全起见,请谨慎使用硬链接文件,切勿在safe_data_path目录下创建指向目录以外的硬链接文件,并确保safe_data_path目录权限最小化。
  • support_binary_copy_version 参数说明:COPY FROM的BINARY模式下导出数据时,是否包含当前数据库服务端的编码信息。 参数类型:字符串 参数单位:无 取值范围:''、header_encoding。 默认值:header_encoding 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:无特殊情况时建议配置为默认取值,仅做前向兼容时需另行配置为空。 表1 兼容性配置项 兼容性配置项 兼容性行为控制 header_encoding 使用copy from的binary模式进行导出时,二进制文件头中包含当前数据库服务端的编码信息。 空值 做前向兼容处理时配置,以原二进制格式进行导出。
  • enable_copy_server_files 参数说明:是否开启copy服务器端文件的权限。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示开启copy服务端文件的权限。 off表示不开启copy服务端文件的权限。 默认值:off 当参数enable_copy_server_files关闭时,只允许初始用户执行COPY FROM FILENAME或COPY TO FILENAME命令,当参数enable_copy_server_files打开,允许具有SYSADMIN权限的用户或继承了内置角色gs_role_copy_files权限的用户执行。
  • PGXC_SLICE PGXC_SLICE表是针对range范围分布和list分布创建的系统表,用来记录分布具体信息,当前不支持range interval自动扩展分片,不过在系统表中预留。 表1 PGXC_SLICE字段 名称 类型 描述 relname name 表名或者分片名,通过type区分。 type "char" 't':relname是表名。 's':relname是分片的名字。 strategy "char" 'r':为range分布表。 'l':为list分布表。 后续interval分片会扩展该值。 relid oid 该tuple隶属的分布表oid。 referenceoid oid 所参考分布表的oid,用于slice reference建表语法。 sindex integer 当为list分布表时,表示当前boundary在某个分片内的位置。 interval text[] 预留字段。 transitboundary text[] 预留字段。 transitno integer 预留字段。 nodeoid oid 当relname为分片名时,表示该分片的数据存放在哪一个DN上,nodeoid表示这个DN的oid。 boundaries text[] 当relname为分片名时,对应该分片的边界值。 specified boolean 当前分片对应的DN是否是用户在DDL中显示指定的。 sliceorder integer 用户定义分片的顺序。 父主题: 其他系统表
  • 参数说明 name 已安装扩展的名称。 new_version 扩展的新版本。可以通过被标识符和字面字符重写。如果不指定的扩展的新版本,ALTER EXTENSION UPDATE会更新到扩展的控制文件中显示的默认版本。 new_schema 扩展的新模式。 object_name agg_name function_name operator_name 从扩展里被添加或移除的对象的名称。包含表、聚合 、域、外链表、函数、操作符、操作符类、操作符族、序列、文本搜索对象、类型和能被模式合格的视图的名称。 agg_type 在聚合函数操作上的一个输入数据类型,去引用一个零参数聚合函数,写 * 代替这些输入数据类型列表。 source_type 强制转换的源数据类型的名称。 target_type 强制转换的目标数据类型的名称。 argmode 这个函数参数的模型:IN、OUT、INOUT或者 VARIADIC。如果省略的话,默认值为IN。ALTER EXTENSION 不关心OUT参数,因为确认函数的一致性只需要输入参数,因此列出 IN、INOUT和 VARIADIC参数就足够了。 argname 函数参数的名称。ALTER EXTENSION不关心参数名称,确认函数的一致性只需要参数数据类型。 argtype 函数参数的数据类型(可以有模式修饰)。 left_type right_type 操作符参数的数据类型(可以有模式修饰),为前缀或后缀运算符的丢失参数写NONE。
  • 语法格式 修改扩展的版本。 ALTER EXTENSION name UPDATE [ TO new_version ]; 修改扩展的模式。 ALTER EXTENSION name SET SCHEMA new_schema; 添加或删除扩展的成员对象。 ALTER EXTENSION name { ADD | DROP } member_object; 其中成员对象member_object写法为: {AGGREGATE agg_name (agg_type [, ...] ) | CAST (source_type AS target_type) | COLLATION object_name | CONVERSION object_name | DOMAIN object_name | EVENT TRIGGER object_name | FOREIGN DATA WRAPPER object_name | FUNCTION function_name ( [ [ argname ] [ argmode ] argtype [, ...] ] ) | MATERIALIZED VIEW object_name | OPERATOR operator_name (left_type, right_type) | OPERATOR CLASS object_name USING index_method | OPERATOR FAMILY object_name USING index_method | [ PROCEDURAL ] LANGUAGE object_name | SCHEMA object_name | SEQUENCE object_name | SERVER object_name | TABLE object_name | TEXT SEARCH CONFIGURATION object_name | TEXT SEARCH DICTIONARY object_name | TEXT SEARCH PARSER object_name | TEXT SEARCH TEMPLATE object_name | TYPE object_name | VIEW object_name}
  • 示例 更新 plpgsql 扩展到版本 2.0: gaussdb=# ALTER EXTENSION plpgsql UPDATE TO '2.0'; --创建SCHEMA。 gaussdb=# CREATE SCHEMA utils; --删除SCHEMA。 gaussdb=# DROP SCHEMA utils; 更新 plpgsql 扩展的模式为utils: --创建SCHEMA。 gaussdb=# CREATE SCHEMA utils; --更新 plpgsql 扩展的模式为utils。 gaussdb=# ALTER EXTENSION plpgsql SET SCHEMA utils; --删除SCHEMA。 gaussdb=# DROP SCHEMA utils; 添加一个已存在的函数给 plpgsql 扩展: gaussdb=# ALTER EXTENSION plpgsql ADD FUNCTION populate_record(anyelement, plpgsql);
  • 注意事项 UPDATE 更新这个扩展到一个新的版本。这个扩展必须满足一个适用的更新脚本(或者一系列脚本), 才能修改当前安装版本到一个要求的版本。 SET SCHEMA 移动扩展对象到另一个模式。这个扩展必须relocatable才能使命令成功。 ADD member_object 添加一个已存在对象到扩展主要适用于扩展更新脚本上。这个对象接着会被视为扩展的成员, 该对象只能通过取消扩展来取消 。 DROP member_object 从扩展上移除一个成员对象。主要适用于扩展更新脚本上,这个对象没有被取消,只是从扩展里被移除。 您必须拥有扩展来使用 ALTER EXTENSION。这个 ADD/DROP 方式要求 添加/删除对象的所有权。 要使用该功能,需要设置support_extended_features为true。
  • 位串类型 位串就是一串1和0的字符串。它们可以用于存储位掩码。 GaussDB支持两种位串类型:bit(n)和bit varying(n),这里的n是一个正整数,n最大取值为83886080,相当于10M的容量。 bit类型的数据必须准确匹配长度n,如果存储短或者长的数据都会报错。bit varying类型的数据是最长为n的变长类型,长度超过n时会被拒绝。一个没有长度的bit等效于bit(1),没有长度的bit varying表示没有长度限制。 如果用户明确地把一个位串值转换成bit(n),则此位串右边的内容将被截断或者在右边补齐零,直到刚好n位,而不会抛出任何错误。 如果用户明确地把一个位串数值转换成bit varying(n),如果它超过了n位,则它的右边将被截断。 使用ADMS平台8.1.3-200驱动版本及之前版本时,写入bit类型需要用::bit varying进行类型转换,否则可能出现异常报错。 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 --创建表。 gaussdb=# CREATE TABLE bit_type_t1 ( BT_COL1 INTEGER, BT_COL2 BIT(3), BT_COL3 BIT VARYING(5) ) ; --插入数据。 gaussdb=# INSERT INTO bit_type_t1 VALUES(1, B'101', B'00'); --插入数据的长度不符合类型的标准会报错。 gaussdb=# INSERT INTO bit_type_t1 VALUES(2, B'10', B'101'); ERROR: bit string length 2 does not match type bit(3) CONTEXT: referenced column: bt_col2 --将不符合类型长度的数据进行转换。 gaussdb=# INSERT INTO bit_type_t1 VALUES(2, B'10'::bit(3), B'101'); --查看数据。 gaussdb=# SELECT * FROM bit_type_t1; bt_col1 | bt_col2 | bt_col3 ---------+---------+--------- 1 | 101 | 00 2 | 100 | 101 (2 rows) --删除表。 gaussdb=# DROP TABLE bit_type_t1; 父主题: 数据类型
  • 示例 --创建源表及触发表。 gaussdb=# CREATE TABLE test_trigger_src_tbl(id1 INT, id2 INT, id3 INT); gaussdb=# CREATE TABLE test_trigger_des_tbl(id1 INT, id2 INT, id3 INT); INSERT触发器的使用。 --创建insert触发器函数。 gaussdb=# CREATE OR REPLACE FUNCTION tri_insert_func() RETURNS TRIGGER AS $$ DECLARE BEGIN INSERT INTO test_trigger_des_tbl VALUES(NEW.id1, NEW.id2, NEW.id3); RETURN NEW; END $$ LANGUAGE plpgsql; --创建INSERT触发器。 gaussdb=# CREATE TRIGGER insert_trigger BEFORE INSERT ON test_trigger_src_tbl FOR EACH ROW EXECUTE PROCEDURE tri_insert_func(); --执行INSERT触发事件并检查触发结果。 gaussdb=# INSERT INTO test_trigger_src_tbl VALUES(100,200,300); gaussdb=# SELECT * FROM test_trigger_src_tbl; id1 | id2 | id3 -----+-----+----- 100 | 200 | 300 (1 row) gaussdb=# SELECT * FROM test_trigger_des_tbl; //查看触发操作是否生效。 id1 | id2 | id3 -----+-----+----- 100 | 200 | 300 (1 row) UPDATE触发器的使用。 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 --创建UPDATE触发器函数。 gaussdb=# CREATE OR REPLACE FUNCTION tri_update_func() RETURNS TRIGGER AS $$ DECLARE BEGIN UPDATE test_trigger_des_tbl SET id3 = NEW.id3 WHERE id1=OLD.id1; RETURN OLD; END $$ LANGUAGE plpgsql; --创建UPDATE触发器。 gaussdb=# CREATE TRIGGER update_trigger AFTER UPDATE ON test_trigger_src_tbl FOR EACH ROW EXECUTE PROCEDURE tri_update_func(); --执行UPDATE触发事件并检查触发结果。 gaussdb=# UPDATE test_trigger_src_tbl SET id3=400 WHERE id1=100; gaussdb=# SELECT * FROM test_trigger_src_tbl; id1 | id2 | id3 -----+-----+----- 100 | 200 | 400 (1 row) gaussdb=# SELECT * FROM test_trigger_des_tbl; //查看触发操作是否生效。 id1 | id2 | id3 -----+-----+----- 100 | 200 | 400 (1 row) DELETE触发器的使用。 --创建DELETE触发器函数。 gaussdb=# CREATE OR REPLACE FUNCTION TRI_DELETE_FUNC() RETURNS TRIGGER AS $$ DECLARE BEGIN DELETE FROM test_trigger_des_tbl WHERE id1=OLD.id1; RETURN OLD; END $$ LANGUAGE plpgsql; --创建DELETE触发器。 gaussdb=# CREATE TRIGGER delete_trigger BEFORE DELETE ON test_trigger_src_tbl FOR EACH ROW EXECUTE PROCEDURE tri_delete_func(); --执行DELETE触发事件并检查触发结果。 gaussdb=# DELETE FROM test_trigger_src_tbl WHERE id1=100; gaussdb=# SELECT * FROM test_trigger_src_tbl; id1 | id2 | id3 -----+-----+----- (0 rows) gaussdb=# SELECT * FROM test_trigger_des_tbl; //查看触发操作是否生效。 id1 | id2 | id3 -----+-----+----- (0 rows) 修改触发器名称。 1 2 --修改触发器的名称。 gaussdb=# ALTER TRIGGER delete_trigger ON test_trigger_src_tbl RENAME TO delete_trigger_renamed; 禁用触发器。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 --禁用insert_trigger触发器。 gaussdb=# ALTER TABLE test_trigger_src_tbl DISABLE TRIGGER insert_trigger; gaussdb=# INSERT INTO test_trigger_src_tbl VALUES(100,200,300); gaussdb=# SELECT * FROM test_trigger_src_tbl; id1 | id2 | id3 -----+-----+----- 100 | 200 | 300 (1 row) gaussdb=# SELECT * FROM test_trigger_des_tbl; //可以看到触发器没有生效。 id1 | id2 | id3 -----+-----+----- (0 rows) --禁用当前表上所有触发器。 gaussdb=# ALTER TABLE test_trigger_src_tbl DISABLE TRIGGER ALL; 删除触发器。 1 2 3 4 5 gaussdb=# DROP TRIGGER insert_trigger ON test_trigger_src_tbl; gaussdb=# DROP TRIGGER update_trigger ON test_trigger_src_tbl; gaussdb=# DROP TRIGGER delete_trigger_renamed ON test_trigger_src_tbl; 删除函数。 1 2 3 4 5 gaussdb=# DROP FUNCTION tri_insert_func; gaussdb=# DROP FUNCTION tri_update_func; gaussdb=# DROP FUNCTION tri_delete_func; 1 2 3 --删除源表及触发表。 gaussdb=# DROP TABLE test_trigger_src_tbl; gaussdb=# DROP TABLE test_trigger_des_tbl;
  • 参数说明 IF EXISTS 如果指定的触发器不存在,则发出一个notice而不是抛出一个错误。 trigger_name 要删除的触发器名称。 取值范围:已存在的触发器。 table_name 要删除的触发器所在的表名称。 取值范围:已存在的含触发器的表。 CASCADE | RESTRICT CASCADE:级联删除依赖此触发器的对象。 RESTRICT:如果有依赖对象存在,则拒绝删除此触发器。此选项为缺省值。
  • 返回值 SQL_SUCCESS:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_NEED_DATA:表示在执行SQL语句前没有提供足够的参数。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 SQL_STILL_EXECUTING:表示语句正在执行。 SQL_NO_DATA:表示SQL语句不返回结果集。
  • PL/SQL语言函数 PL/SQL是一种可载入的过程语言。 用PL/SQL创建的函数可以被用在任何可以使用内建函数的地方。例如,可用于创建复杂条件的计算函数、定义操作符以及索引表达式。 SQL被大多数数据库用作查询语言。它是可移植的并且容易学习。但是每一个SQL语句必须由数据库服务器单独执行。 这意味着客户端应用对于每一个查询都要执行以下过程:发送查询到数据库服务器、等待查询被接收、接收并处理结果、进行相关计算、然后发送更多查询给服务器。如果客户端和数据库服务器不在同一台机器上,那么这个过程还会引起进程间通信并且将带来网络负担。 通过PL/SQL,可以将一整块计算和一系列查询分组在数据库服务器内部,这样就有了一种过程语言的能力并且使SQL更易用,同时能节省客户端/服务器通信开销。 客户端和服务器之间的额外往返通信被消除。 客户端不需要的中间结果不必被整理或者在服务器和客户端之间传送。 多轮的查询解析可以被避免。 PL/SQL可以使用SQL中所有的数据类型、操作符和函数,应用PL/SQL创建函数的语法为CREATE FUNCTION。 PL/SQL是一种可载入的过程语言,其应用方法与存储过程相似,但存储过程无返回值,PL/SQL语言函数有返回值。 XML类型数据支持作为自定义函数的入参、出参、自定义变量和返回值。 父主题: 用户自定义函数
  • GS_MATVIEW GS_MATVIEW系统表提供了关于数据库中每一个物化视图的信息。 表1 GS_MATVIEW字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 matviewid oid 物化视图的oid。 mapid oid 物化视图map表的oid,map表为物化视图关联表,与物化视图一一对应。全量物化视图不存在对应的map表,该字段为0。 ivm boolean 物化视图的类型,t为增量物化视图,f为全量物化视图。 needrefresh boolean 保留字段。 refreshtime timestamp without time zone 物化视图上一次刷新时间,若未刷新则为null。仅对增量物化视图维护该字段,全量物化视图为null。 父主题: 物化视图
  • PG_COMM_DELAY PG_COMM_DELAY视图展示单个DN的通信库时延状态。 表1 PG_COMM_DELAY字段 名称 类型 描述 node_name text 节点名称。 remote_name text 连接对端节点名称。 remote_host text 连接对端IP地址。 stream_num integer 当前物理连接使用的stream逻辑连接数量。 min_delay integer 当前物理连接一分钟内探测到的最小时延,单位微秒。 说明: 负数结果无效,请重新等待时延状态更新后再执行。 average integer 当前物理连接一分钟内探测时延的平均值,单位微秒。 max_delay integer 当前物理连接一分钟内探测到的最大时延,单位微秒。 父主题: 通信
  • GS_MASKING_POLICY_ACTIONS GS_MASKING_POLICY_ACTIONS系统表记录动态数据脱敏策略中相应的脱敏策略包含的脱敏行为,一个脱敏策略对应着该表的一行或多行记录。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 表1 GS_MASKING_POLICY_ACTIONS表字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 actiontype name 脱敏函数,标识脱敏策略使用的脱敏函数。 actparams name 向脱敏函数中传递的参数信息。 actlabelname name 被脱敏的label名称。 policyoid oid 该条记录所属的脱敏策略的oid,对应GS_MASKING_POLICY中的oid。 actmodifydate timestamp without time zone 该条记录创建或修改的最新时间戳。 父主题: 动态脱敏
  • 文本检索调试函数 ts_debug([ config regconfig, ] document text, OUT alias text, OUT description text, OUT token text, OUT dictionaries regdictionary[], OUT dictionary regdictionary, OUT lexemes text[]) 描述:测试一个配置。 返回类型:setof record 示例: 1 2 3 4 5 6 7 8 9 gaussdb=# SELECT ts_debug('english', 'The Brightest supernovaes'); ts_debug ----------------------------------------------------------------------------------- (asciiword,"Word, all ASCII",The,{english_stem},english_stem,{}) (blank,"Space symbols"," ",{},,) (asciiword,"Word, all ASCII",Brightest,{english_stem},english_stem,{brightest}) (blank,"Space symbols"," ",{},,) (asciiword,"Word, all ASCII",supernovaes,{english_stem},english_stem,{supernova}) (5 rows) ts_lexize(dict regdictionary, token text) 描述:测试一个数据字典。 返回类型:text[] 示例: 1 2 3 4 5 gaussdb=# SELECT ts_lexize('english_stem', 'stars'); ts_lexize ----------- {star} (1 row) ts_parse(parser_name text, document text, OUT tokid integer, OUT token text) 描述:测试一个解析。 返回类型:setof record 示例: 1 2 3 4 5 6 7 8 gaussdb=# SELECT ts_parse('default', 'foo - bar'); ts_parse ----------- (1,foo) (12," ") (12,"- ") (1,bar) (4 rows) ts_parse(parser_oid oid, document text, OUT tokid integer, OUT token text) 描述:测试一个解析。 返回类型:setof record 示例: 1 2 3 4 5 6 7 8 gaussdb=# SELECT ts_parse(3722, 'foo - bar'); ts_parse ----------- (1,foo) (12," ") (12,"- ") (1,bar) (4 rows) ts_token_type(parser_name text, OUT tokid integer, OUT alias text, OUT description text) 描述:获取分析器定义的记号类型。 返回类型:setof record 示例: 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 gaussdb=# SELECT ts_token_type('default'); ts_token_type -------------------------------------------------------------- (1,asciiword,"Word, all ASCII") (2,word,"Word, all letters") (3,numword,"Word, letters and digits") (4,email,"Email address") (5,url,URL) (6,host,Host) (7,sfloat,"Scientific notation") (8,version,"Version number") (9,hword_numpart,"Hyphenated word part, letters and digits") (10,hword_part,"Hyphenated word part, all letters") (11,hword_asciipart,"Hyphenated word part, all ASCII") (12,blank,"Space symbols") (13,tag,"XML tag") (14,protocol,"Protocol head") (15,numhword,"Hyphenated word, letters and digits") (16,asciihword,"Hyphenated word, all ASCII") (17,hword,"Hyphenated word, all letters") (18,url_path,"URL path") (19,file,"File or path name") (20,float,"Decimal notation") (21,int,"Signed integer") (22,uint,"Unsigned integer") (23,entity,"XML entity") (23 rows) ts_token_type(parser_oid oid, OUT tokid integer, OUT alias text, OUT description text) 描述:获取分析器定义的记号类型。 返回类型:setof record 示例: 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 gaussdb=# SELECT ts_token_type(3722); ts_token_type -------------------------------------------------------------- (1,asciiword,"Word, all ASCII") (2,word,"Word, all letters") (3,numword,"Word, letters and digits") (4,email,"Email address") (5,url,URL) (6,host,Host) (7,sfloat,"Scientific notation") (8,version,"Version number") (9,hword_numpart,"Hyphenated word part, letters and digits") (10,hword_part,"Hyphenated word part, all letters") (11,hword_asciipart,"Hyphenated word part, all ASCII") (12,blank,"Space symbols") (13,tag,"XML tag") (14,protocol,"Protocol head") (15,numhword,"Hyphenated word, letters and digits") (16,asciihword,"Hyphenated word, all ASCII") (17,hword,"Hyphenated word, all letters") (18,url_path,"URL path") (19,file,"File or path name") (20,float,"Decimal notation") (21,int,"Signed integer") (22,uint,"Unsigned integer") (23,entity,"XML entity") (23 rows) ts_stat(sqlquery text, [ weights text, ] OUT word text, OUT ndoc integer, OUT nentry integer) 描述:获取tsvector列的统计数据。 返回类型:setof record 示例: 1 2 3 4 5 6 gaussdb=# SELECT ts_stat('select ''hello world''::tsvector'); ts_stat ------------- (world,1,1) (hello,1,1) (2 rows)
  • PG_PREPARED_STATEMENTS PG_PREPARED_STATEMENTS视图显示当前会话所有可用的预备语句的信息。 表1 PG_PREPARED_STATEMENTS字段 名称 类型 描述 name text 预备语句的标识符。 statement text 创建该预备语句的查询字符串。对于从SQL创建的预备语句而言是客户端提交的PREPARE语句;对于通过前/后端协议创建的预备语句而言是预备语句自身的文本。 prepare_time timestamp with time zone 创建该预备语句的时间戳。 parameter_types regtype[] 该预备语句期望的参数类型,以regtype类型的数组格式出现。与该数组元素相对应的OID可以通过把regtype转换为OID值得到。 from_sql boolean 如果该预备语句是通过PREPARE语句创建的则为true。 如果是通过前/后端协议创建的则为false。 父主题: 其他系统视图
  • 语法格式 修改外部服务的参数。 1 2 ALTER SERVER server_name [ VERSION 'new_version' ] [ OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ] ) ]; 在OPTIONS选项里,ADD、SET和DROP指定要执行的操作,未指定时默认为ADD操作。option和value为对应操作的参数。 修改外部服务的所有者。 1 2 ALTER SERVER server_name OWNER TO new_owner; 修改外部服务的名称。 1 2 ALTER SERVER server_name RENAME TO new_name;
共100000条