华为云用户手册

  • 参数说明 DEFINER 定时任务待执行语句在执行时使用的权限。默认情况下使用当前创建定时任务者的权限,当definer被指定时,使用被指定用户user的用户权限。 definer参数只有具有sysadmin权限的用户有权指定。 ON SCHEDULE 定时任务执行时刻。其中schedule子句与CREATE EVENT中schedule一致。 RENAME TO 更新定时任务名。 ON COMPLETION [NOT] PRESERVE 默认情况下,一旦事务处于完成状态,系统表中就会立刻删除该定时任务。用户可以通过设置ON COMPLETION PRESERVE来覆盖默认行为。 ENABLE | DISABLE | DISABLE ON SLAVE 创建定时任务后,定时任务默认处于ENABLE状态,即到规定时间立即执行待执行语句。用户可以使用DISABLE关键字,改变定时任务的活动状态。DISABLE ON SLAVE表现与DISABLE一致。 COMMENT 用户可以给定时任务添加注释,注释内容在GS_JOB_ATTRIBUTE表中查看。 DO 定时任务待执行语句。
  • 语法格式 ALTER [DEFINER = user] EVENT event_name [ON SCHEDULE schedule] [ON COMPLETION [NOT] PRESERVE] [RENAME TO new_event_name] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'string'] [DO event_body]
  • DB_TRIGGERS DB_TRIGGERS视图显示当前用户能访问到的触发器信息。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 DB_TRIGGERS字段 名称 类型 描述 trigger_name character varying(64) 触发器名称。 table_owner character varying(64) 角色名称。 table_name character varying(64) 关系表名称。 status character varying(64) 触发器的触发状态: O:触发器在“origin”和“local”模式下触发。 D:触发器被禁用。 R:触发器在“replica”模式下触发。 A:触发器始终触发。 父主题: 系统视图
  • 示例 --开始。 gaussdb=# begin; --准备标识符为的trans_test的事务。 gaussdb=# PREPARE TRANSACTION 'trans_test'; --创建表。 gaussdb=# CREATE TABLE item1(id int); --提交标识符为的trans_test的事务。 gaussdb=# COMMIT PREPARED 'trans_test'; --删除表。 gaussdb=# DROP TABLE item1;
  • 接口介绍 高级功能包DBE_XMLDOM 用于访问XMLType对象,实现DOM(Document Object Model),用于访问HTML和XML DOCUMENTS API。高级功能包DBE_XMLDOM支持的所有类型请参见 表1,DBE_XMLDOM支持的所有接口请参见 表2。 DBE_XMLDOM高级包在字符集设置为SQL_ASCII的数据库内使用的情况下,输入超出ASCII范围的字符,会导致报错。 表1 DBE_XMLDOM数据类型说明 类型名称 描述 DOMATTR 实现DOM Attribute接口。 DOMDOCUMENT 实现DOM Document接口。 DOMELEMENT 实现DOM Element接口。 DOMNAMEDNODEMAP 实现DOM Named Node Map接口。 DOMNODELIST 实现DOM Node List接口。 DOMNODE 实现DOM Node接口。 DOMTEXT 实现DOM Text接口。 表2 DBE_XMLDOM接口参数说明 接口名称 描述 DBE_XMLDOM.APPENDCHILD 将newchild node添加到parent(n)节点最后面,并返回新添加的Node节点。 DBE_XMLDOM.CREATEELEMENT 创建指定名称的DOMELEMENT对象。 DBE_XMLDOM.CREATETEXTNODE 创建DOMTEXT节点。 DBE_XMLDOM.FREEDOCUMENT 释放DOMDOCUMENT节点相关资源。 DBE_XMLDOM.FREEELEMENT 释放DOMELEMENT节点相关资源。 DBE_XMLDOM.FREENODE 释放DOMNODE节点相关资源。 DBE_XMLDOM.FREENODELIST 释放DOMNODELIST节点相关资源。 DBE_XMLDOM.GETATTRIBUTE 按名称返回DOMELEMENT属性的值。 DBE_XMLDOM.GETATTRIBUTES 将DOMNODE节点属性值作为map返回。 DBE_XMLDOM.GETCHILDNODES 将节点下的若干子节点转换成节点列表。 DBE_XMLDOM.GETCHILDRENBYTAGNAME 按名称返回DOMELEMENT的子节点。 DBE_XMLDOM.GETDOCUMENTELEMENT 返回指定DOCUMENT的首个子节点。 DBE_XMLDOM.GETFIRSTCHILD 返回第一个子节点。 DBE_XMLDOM.GETLASTCHILD 返回最后一个子节点。 DBE_XMLDOM.GETLENGTH 获取给定节点中的节点个数。 DBE_XMLDOM.GETLOCALNAME 检索节点的本地名称。 DBE_XMLDOM.GETNAMEDITEM 检索由名称指定的节点。 DBE_XMLDOM.GETNEXTSIBLING 返回该节点的下一个节点。 DBE_XMLDOM.GETNODENAME 返回节点名称。 DBE_XMLDOM.GETNODETYPE 返回节点类型。 DBE_XMLDOM.GETNODEVALUE 此函数用于获取节点的值,具体取决于其类型。 DBE_XMLDOM.GETPARENTNODE 检索此节点的父节点。 DBE_XMLDOM.GETTAGNAME 返回指定DOMELEMENT的标签名称。 DBE_XMLDOM.HASCHILDNODES 检查DOMNODE对象是否拥有任一子节点。 DBE_XMLDOM.IMPORTNODE 复制节点并为该节点指定所属文档。 DBE_XMLDOM.ISNULL 检测节点是否为空。 DBE_XMLDOM.ITEM 返回映射中与索引参数对应的项。 DBE_XMLDOM.MAKEELEMENT 将DOMNODE对象转换为DOMELEMENT类型。 DBE_XMLDOM.MAKENODE 将节点强制转换为DOMNODE类型。 DBE_XMLDOM.NEWDOMDOCUMENT 返回新的DOMDOCUMENT对象。 DBE_XMLDOM.SETATTRIBUTE 按名称设置DOMELEMENT属性的值。 DBE_XMLDOM.SETCHARSET 设置DOMDOCUMENT的CHATSET字符集。 DBE_XMLDOM.SETDOCTYPE 设置DOMDOCUMENT的外部DTD。 DBE_XMLDOM.SETNODEVALUE 此函数用于向DOMNODE对象中设置节点的值。 DBE_XMLDOM.WRITETOBUFFER 将 XML 节点写入指定缓冲区。 DBE_XMLDOM.WRITETOCLOB 将 XML 节点写入指定CLOB。 DBE_XMLDOM.WRITETOFILE 将 XML 节点写入指定文件。 DBE_XMLDOM.GETSESSIONTREENUM 显示当前session中所有类型的dom树的数量。 DBE_XMLDOM.GETDOCTREESINFO 显示document类型的dom树的内存占用、结点数量等统计信息。 DBE_XMLDOM.GETDETAILDOCTREEINFO 显示特定的document变量的各类型结点数量。
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 --演示在存储过程中对数组进行操作。 gaussdb=# CREATE OR REPLACE PROCEDURE array_proc AS DECLARE TYPE ARRAY_INTEGER IS VARRAY(1024) OF INTEGER;--定义数组类型 ARRINT ARRAY_INTEGER := ARRAY_INTEGER(); --声明数组类型的变量 BEGIN ARRINT.extend(10); FOR I IN 1..10 LOOP ARRINT(I) := I; END LOOP; DBE_OUTPUT.PRINT_LINE(ARRINT.COUNT); DBE_OUTPUT.PRINT_LINE(ARRINT(1)); DBE_OUTPUT.PRINT_LINE(ARRINT(10)); DBE_OUTPUT.PRINT_LINE(ARRINT(ARRINT.FIRST)); DBE_OUTPUT.PRINT_LINE(ARRINT(ARRINT.LAST)); DBE_OUTPUT.PRINT_LINE(ARRINT(ARRINT.NEXT(ARRINT.FIRST))); DBE_OUTPUT.PRINT_LINE(ARRINT(ARRINT.PRIOR(ARRINT.LAST))); ARRINT.TRIM(); IF ARRINT.EXISTS(10) THEN DBE_OUTPUT.PRINT_LINE('Exist 10th element'); ELSE DBE_OUTPUT.PRINT_LINE('Not exist 10th element'); END IF; DBE_OUTPUT.PRINT_LINE(ARRINT.COUNT); DBE_OUTPUT.PRINT_LINE(ARRINT(ARRINT.FIRST)); DBE_OUTPUT.PRINT_LINE(ARRINT(ARRINT.LAST)); ARRINT.DELETE(); END; / --调用该存储过程显示结果。 gaussdb=# CALL array_proc(); 10 1 10 1 10 2 9 Not exist 10th element 9 1 9 array_proc ------------ (1 row) --删除存储过程。 gaussdb=# DROP PROCEDURE array_proc;
  • SUMMARY_STATIO_SYS_TABLES SUMMARY_STATIO_SYS_TABLES视图显示数据库内汇聚的命名空间中所有系统表的I/O状态信息。 表1 SUMMARY_STATIO_SYS_TABLES字段 名称 类型 描述 schemaname name 该表模式名。 relname name 表名。 heap_blks_read numeric 从该表中读取的磁盘块数。 heap_blks_hit numeric 此表缓存命中数。 idx_blks_read numeric 从表中所有索引读取的磁盘块数。 idx_blks_hit numeric 表中所有索引命中缓存数。 toast_blks_read numeric 此表的TOAST表读取的磁盘块数(如果存在)。 toast_blks_hit numeric 此表的TOAST表命中缓冲区数(如果存在)。 tidx_blks_read numeric 此表的TOAST表索引读取的磁盘块数(如果存在)。 tidx_blks_hit numeric 此表的TOAST表索引命中缓冲区数(如果存在)。 父主题: Cache/IO
  • 双集群容灾控制函数 gs_hadr_do_switchover() 描述:异地容灾集群中主集群在执行计划内switchover过程中截断业务的接口。 返回值类型:Boolean,表明此次业务截断是否成功,是否可以正常进行switchover流程。 gs_streaming_dr_in_switchover() 描述:基于流式复制的异地容灾解决方案中主集群在执行计划内switchover过程中截断业务的接口。 返回值类型:Boolean,表明此次业务截断是否成功,是否可以正常进行switchover流程。 父主题: 系统管理函数
  • 内部函数 GaussDB 中下列函数使用了内部数据类型,用户无法直接调用,在此章节列出。 选择率计算函数 areajoinsel areasel arraycontjoinsel arraycontsel contjoinsel contsel eqjoinsel eqsel iclikejoinsel iclikesel icnlikejoinsel icnlikesel icregexeqjoinsel icregexeqsel icregexnejoinsel icregexnesel likejoinsel likesel neqjoinsel neqsel nlikejoinsel nlikesel positionjoinsel positionsel regexeqjoinsel regexeqsel regexnejoinsel regexnesel scalargtjoinsel scalargtsel scalarltjoinsel scalarltsel tsmatchjoinsel tsmatchsel - 统计信息收集函数 array_typanalyze range_typanalyze ts_typanalyze local_rto_stat - - 排序内部功能函数 bpchar_sortsupport bytea_sortsupport date_sortsupport numeric_sortsupport timestamp_sortsupport 内部类型处理函数 abstimerecv euc_jis_2004_to_utf8 int2recv line_recv oidvectorrecv_extend tidrecv utf8_to_koi8u anyarray_recv euc_jp_to_mic int2vectorrecv lseg_recv path_recv time_recv utf8_to_shift_jis_2004 array_recv euc_jp_to_sjis int4recv macaddr_recv pg_node_tree_recv time_transform utf8_to_sjis ascii_to_mic euc_jp_to_utf8 int8recv mic_to_ascii point_recv timestamp_recv utf8_to_uhc ascii_to_utf8 euc_kr_to_mic internal_out mic_to_big5 poly_recv timestamp_transform utf8_to_win big5_to_euc_tw euc_kr_to_utf8 interval_recv mic_to_euc_cn pound_nexttoken timestamptz_recv uuid_recv big5_to_mic euc_tw_to_big5 interval_transform mic_to_euc_jp prsd_nexttoken timetz_recv varbit_recv big5_to_utf8 euc_tw_to_mic iso_to_koi8r mic_to_euc_kr range_recv tintervalrecv varbit_transform bit_recv euc_tw_to_utf8 iso_to_mic mic_to_euc_tw rawrecv tsqueryrecv varchar_transform boolrecv float4recv iso_to_win1251 mic_to_iso record_recv tsvectorrecv varcharrecv box_recv float8recv iso_to_win866 mic_to_koi8r regclassrecv txid_snapshot_recv void_recv bpcharrecv gb18030_to_utf8 iso8859_1_to_utf8 mic_to_latin1 regconfigrecv uhc_to_utf8 win_to_utf8 btoidsortsupport gbk_to_utf8 iso8859_to_utf8 mic_to_latin2 regdictionaryrecv unknownrecv win1250_to_latin2 bytearecv - johab_to_utf8 mic_to_latin3 regoperatorrecv utf8_to_ascii win1250_to_mic byteawithoutorderwithequalcolrecv gtsvector_compress json_recv mic_to_latin4 regoperrecv utf8_to_big5 win1251_to_iso cash_recv gtsvector_consistent koi8r_to_iso mic_to_sjis regprocedurerecv utf8_to_euc_cn win1251_to_koi8r charrecv gtsvector_decompress koi8r_to_mic mic_to_win1250 regprocrecv utf8_to_euc_jis_2004 win1251_to_mic cidr_recv gtsvector_penalty koi8r_to_utf8 mic_to_win1251 regtyperecv utf8_to_euc_jp win1251_to_win866 cidrecv gtsvector_picksplit koi8r_to_win1251 mic_to_win866 reltimerecv utf8_to_euc_kr win866_to_iso circle_recv gtsvector_same koi8r_to_win866 namerecv shift_jis_2004_to_euc_jis_2004 utf8_to_euc_tw win866_to_koi8r cstring_recv gtsvector_union koi8u_to_utf8 ngram_nexttoken shift_jis_2004_to_utf8 utf8_to_gb18030 win866_to_mic date_recv hll_recv latin1_to_mic numeric_recv sjis_to_euc_jp utf8_to_gbk win866_to_win1251 domain_recv hll_trans_recv latin2_to_mic numeric_transform sjis_to_mic utf8_to_iso8859 xidrecv euc_cn_to_mic - latin2_to_win1250 nvarchar2recv sjis_to_utf8 utf8_to_iso8859_1 xidrecv4 euc_cn_to_utf8 inet_recv latin3_to_mic oidrecv smalldatetime_recv utf8_to_johab xml_recv euc_jis_2004_to_shift_jis_2004 int1recv latin4_to_mic oidvectorrecv textrecv utf8_to_koi8r - i16toi1 int16 int16_bool int16eq int16div int16ge int16gt int16in int16le int16lt int16mi int16mul int16ne int16out int16pl int16recv int16send numeric_bool int2vectorin_extend int2vectorout_extend int2vectorrecv_extend int2vectorsend_extend tdigest_in tdigest_merge tdigest_merge_to_one tdigest_mergep tdigest_out - anyset_out btint2setcmp btint4setcmp btint8setcmp btsetcmp btsetint2cmp btsetint4cmp btsetint8cmp btsetsortsupport float4 float8 hashsetint hashsettext int2 int2seteq int2setge int2setgt int2setle int2setlt int2setne int4 int4seteq int4setge int4setgt int4setle int4setlt int4setne int8 int8seteq int8setge int8setgt int8setle int8setlt int8setne set set_in set_out set_recv set_send seteq setge setgt setint2eq setint2ge setint2gt setint2le setint2lt setint2ne setint4eq setint4ge setint4gt setint4le setint4lt setint4ne setint8eq setint8ge setint8gt setint8le setint8lt setint8ne setle setlt setne settexteq settextge settextgt settextle settextlt settextne settobpchar settonumber settonvarchar2 settotext settovarchar textseteq textsetge textsetgt textsetle textsetlt textsetne gb18030_2022_to_utf8 utf8_to_gb18030_2022 array_to_nesttable array_to_indexby_int_table 聚合操作内部函数 array_agg_finalfn array_agg_transfn bytea_string_agg_finalfn bytea_string_agg_transfn date_list_agg_noarg2_transfn date_list_agg_transfn float4_list_agg_noarg2_transfn float4_list_agg_transfn float8_list_agg_noarg2_transfn float8_list_agg_transfn int2_list_agg_noarg2_transfn int2_list_agg_transfn int4_list_agg_noarg2_transfn int4_list_agg_transfn int8_list_agg_noarg2_transfn int8_list_agg_transfn interval_list_agg_noarg2_transfn interval_list_agg_transfn list_agg_finalfn list_agg_noarg2_transfn list_agg_transfn median_float8_finalfn median_interval_finalfn median_transfn mode_final numeric_list_agg_noarg2_transfn numeric_list_agg_transfn ordered_set_transition percentile_cont_float8_final percentile_cont_interval_final string_agg_finalfn string_agg_transfn timestamp_list_agg_noarg2_transfn timestamp_list_agg_transfn timestamptz_list_agg_noarg2_transfn timestamptz_list_agg_transfn checksumtext_agg_transfn - - - - - 哈希内部功能函数 hashbeginscan hashbuild hashbuildempty hashbulkdelete hashcostestimate hashendscan hashgetbitmap hashgettuple hashinsert hashmarkpos hashmerge hashrescan hashrestrpos hashvacuumcleanup hashvarlena - - - - - - Btree索引内部功能函数 cbtreebuild cbtreecanreturn cbtreecostestimate cbtreegetbitmap cbtreegettuple btbeginscan btbuild btbuildempty btbulkdelete btcanreturn btcostestimate btendscan btfloat4sortsupport btfloat8sortsupport btgetbitmap btgettuple btinsert btint2sortsupport btint4sortsupport btint8sortsupport btmarkpos btmerge btnamesortsupport btrescan btrestrpos bttextsortsupport btvacuumcleanup cbtreeoptions Psort索引内部函数 psortbuild psortcanreturn psortcostestimate psortgetbitmap psortgettuple Ubtree索引内部函数 ubtbeginscan ubtbuild ubtbuildempty ubtbulkdelete ubtcanreturn ubtcostestimate ubtendscan ubtgetbitmap ubtgettuple ubtinsert ubtmarkpos ubtmerge ubtoptions ubtrescan ubtrestrpos ubtvacuumcleanup - - - - plpgsql内部函数 plpgsql_inline_handler 集合相关内部函数 array_indexby_delete array_indexby_length array_integer_deleteidx array_integer_exists array_integer_first array_integer_last array_integer_next array_integer_prior array_varchar_deleteidx array_varchar_exists array_varchar_first array_varchar_last array_varchar_next array_varchar_prior - - - - 外表相关内部函数 dist_fdw_handler roach_handler streaming_fdw_handler dist_fdw_validator file_fdw_handler file_fdw_validator log_fdw_handler dblink_fdw_handler dblink_fdw_validator - - - - - 主DN远程读取备DN数据页辅助函数 gs_read_block_from_remote用于读取表文件的页面。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 主DN远程读取备DN数据文件辅助函数 gs_read_file_from_remote用于读取指定的文件。gs_repair_file利用gs_read_file_size_from_remote函数获取文件大小后,依赖这个函数将远端文件逐段读取。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 gs_read_file_size_from_remote用于读取指定文件的大小。gs_repair_file函数修复文件时,要先获取远端关于这个文件的大小,用于校验本地文件缺失的文件信息,然后将缺失的文件逐个修复。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 以备DN增量重建其他备或级联备DN辅助函数 gs_standby_incremental_filemap_create用于创建备DN增量重建临时filemap文件,用于存储当次增量重建需传输的数据路径与大小。只有初始化用户且application为gs_rewind时可以调用。 gs_standby_incremental_filemap_insert用于向指定临时filemap文件中插入文件信息,指定文件的路径、传输起始点、单次传输数据长度和rebuild标志位。只有初始化用户且application为gs_rewind时可以调用。 gs_standby_incremental_filemap_execute用于获取指定临时filemap文件中存储的文件信息并删除指定filemap,用于备DN增量重建的数据传输。只有初始化用户且application为gs_rewind时可以调用。 AI特性函数 create_snapshot create_snapshot_internal prepare_snapshot_internal prepare_snapshot manage_snapshot_internal archive_snapshot publish_snapshot purge_snapshot_internal purge_snapshot sample_snapshot - - - - PKG_SERVICE函数 isubmit_on_nodes submit_on_nodes - - - - - 其他函数 to_tsvector_for_batch value_of_percentile disable_conn bind_variable job_update job_cancel job_finish similar_escape table_skewness (不可用) timetz_text time_text reltime_text abstime_text _pg_keysequal analyze_query (不可用) analyze_workload (不可用) ssign_table_type gs_comm_proxy_thread_status gs_txid_oldestxmin - pg_stat_segment_space_info remote_segment_space_info set_cost_params set_weight_params start_collect_workload tdigest_in tdigest_merge tdigest_merge_to_one tdigest_mergep tdigest_out - - - - - 视图相关引用函数 adm_hist_sqlstat_func adm_hist_sqlstat_idlog_func adm_hist_sqltext_func gs_txn_snapshot系统表维护函数 gs_insert_delete_txn_snapshot用于GTM-Lite模式下维护全局各节点gs_txn_snapshot系统表,只有系统管理员用户才能调用,当前版本调用该函数将返回f,无实际操作。 xmltype类型相关函数 isschemavalid 父主题: 函数和操作符
  • 参数说明 IF NOT EXISTS 如果已经存在相同名称的表,不抛出错误,而是发出一个notice,告知表已存在。 partition_table_name 分区表的名称。 取值范围:字符串,要符合标识符命名规范。 column_name 新表中要创建的字段名。 取值范围:字符串,要符合标识符命名规范。 data_type 字段的数据类型。 COLLATE collation COLLATE子句指定列的排序规则(该列必须是可排列的数据类型)。如果没有指定,则使用默认的排序规则。 CONSTRAINT constraint_name 列约束或表约束的名称。可选的约束子句用于声明约束,新行或者更新的行必须满足这些约束才能成功插入或更新。排序规则可以使用“SELECT * FROM pg_collation”命令从pg_collation系统表中查询,默认的排序规则为查询结果中以default开始的行。 定义约束有两种方法: 列约束:作为一个列定义的一部分,仅影响该列。 表约束:不和某个列绑在一起,可以作用于多个列。 LIKE source_table [ like_option ... ] LIKE子句声明一个表,新表自动从这个表里面继承所有字段名及其数据类型和非空约束。 和INHERITS不同,新表与原表之间在创建动作完毕之后是完全无关的。在源表做的任何修改都不会传播到新表中,并且也不可能在扫描源表的时候包含新表的数据。 字段缺省表达式只有在声明了INCLUDING DEFAULTS之后才会包含进来。缺省是不包含缺省表达式的,即新表中所有字段的缺省值都是NULL。 非空约束将总是复制到新表中,CHECK约束则仅在指定了INCLUDING CONSTRAINTS的时候才复制,而其他类型的约束则永远也不会被复制。此规则同时适用于表约束和列约束。 和INHERITS不同,被复制的列和约束并不使用相同的名称进行融合。如果明确的指定了相同的名称或者在另外一个LIKE子句中,将会报错。 如果指定了INCLUDING INDEXES,则原表上的索引也将在新表上创建,默认不建立索引。 如果指定了INCLUDING STORAGE,则原表列的STORAGE设置也将被拷贝,默认情况下不包含STORAGE设置。 如果指定了INCLUDING COMMENTS,则原表列、约束和索引的注释也会被拷贝过来。默认情况下,不拷贝源表的注释。 如果指定了INCLUDING RELOPTIONS,则原表的存储参数(即源表的WITH子句)也将拷贝至新表。默认情况下,不拷贝原表的存储参数。 如果指定了INCLUDING DISTRIBUTION,则新表将拷贝原表的分布信息,包括分布类型和分布列,同时新表将不能再使用DISTRIBUTE BY子句。默认情况下,不拷贝原表的分布信息。 INCLUDING ALL是INCLUDING DEFAULTS INCLUDING CONSTRAINTS INCLUDING INDEXES INCLUDING STORAGE INCLUDING COMMENTS INCLUDING RELOPTIONS INCLUDING DISTRIBUTION的简写形式。 WITH ( storage_parameter [= value] [, ... ] ) 这个子句为表或索引指定一个可选的存储参数。参数的详细描述如下所示: FILLFACTOR 一个表的填充因子(fillfactor)是一个介于10和100之间的百分数。100(完全填充)是默认值。如果指定了较小的填充因子,INSERT操作仅按照填充因子指定的百分率填充表页。每个页上的剩余空间将用于在该页上更新行,这就使得UPDATE有机会在同一页上放置同一条记录的新版本,这比把新版本放置在其他页上更有效。对于一个从不更新的表将填充因子设为100是最佳选择,但是对于频繁更新的表,选择较小的填充因子则更加合适。 取值范围:10~100 ORIENTATION 决定了表的数据的存储方式。 取值范围: ROW(缺省值):表的数据将以行式存储。 orientation不支持修改。 COMPRESSION 行存表不支持压缩。 COMPRESS / NOCOMPRESS 创建一个新表时,需要在创建表语句中指定关键字COMPRESS,这样,当对该表进行批量插入时就会触发压缩特性。该特性会在页范围内扫描所有元组数据,生成字典、压缩元组数据并进行存储。指定关键字NOCOMPRESS则不对表进行压缩。 缺省值为NOCOMPRESS,即不对元组数据进行压缩。行存表不支持压缩。 TABLESPACE tablespace_name 指定新表将要在tablespace_name表空间内创建。如果没有声明,将使用默认表空间。 DISTRIBUTE BY 指定表如何在节点之间分布或者复制。 取值范围及详细信息见•DISTRIBUTE BY一节。 TO { GROUP groupname | NODE ( nodename [, ... ] ) } TO GROUP指定创建表所在的Node Group用。TO NODE主要供内部扩容工具使用,一般用户不应该使用。 PARTITION BY RANGE [COLUMNS] (partition_key) 创建范围分区。partition_key为分区键的名称。 COLUMNS关键字只能在sql_compatibility='MYSQL'时使用,“PARTITION BY RANGE COLUMNS” 语义同 “PARTITION BY RANGE”。 (1)对于从句是VALUES LESS THAN的语法格式: 对于从句是VALUE LESS THAN的语法格式,范围分区策略的分区键最多支持16列。 该情形下,分区键支持的数据类型为:SMALLINT、INTEGER、BIGINT、DECIMAL、NUMERIC、REAL、FLOAT4、FLOAT8、DOUBLE PRECISION、CHARACTER VARYING(n)、VARCHAR(n)、CHARACTER(n)、CHAR(n)、CHARACTER、CHAR、TEXT、NVARCHAR2、NAME、TIMESTAMP[(p)] [WITHOUT TIME ZONE]、TIMESTAMP[(p)] [WITH TIME ZONE]、DATE。 (2)对于从句是START END的语法格式: 对于从句是START END的语法格式,范围分区策略的分区键仅支持1列。 该情形下,分区键支持的数据类型为:SMALLINT、INTEGER、BIGINT、DECIMAL、NUMERIC、REAL、FLOAT4、FLOAT8、DOUBLE PRECISION、TIMESTAMP[(p)] [WITHOUT TIME ZONE]、TIMESTAMP[(p)] [WITH TIME ZONE]、DATE。 PARTITION partition_name VALUES LESS THAN {( { partition_value | MAXVALUE } [,...] ) | MAXVALUE } 指定各分区的信息。partition_name为范围分区的名称。partition_value为范围分区的上边界,取值依赖于partition_key的类型。MAXVALUE表示分区的上边界,它通常用于设置最后一个范围分区的上边界。 每个分区都需要指定一个上边界。 分区上边界的类型应当和分区键的类型一致。 分区列表是按照分区上边界升序排列的,值较小的分区位于值较大的分区之前。 不在括号内的MAXVALUE只能在sql_compatibility='MYSQL'时使用,并且只能有一个分区键。 PARTITION partition_name {START (partition_value) END (partition_value) EVERY (interval_value)} | {START (partition_value) END (partition_value|MAXVALUE)} | {START(partition_value)} | {END (partition_value | MAXVALUE)} 指定各分区的信息,各参数意义如下: partition_name:范围分区的名称或名称前缀,除以下情形外(假定其中的partition_name是p1),均为分区的名称。 若该定义是START+END+EVERY从句,则语义上定义的分区的名称依次为p1_1, p1_2, ...。例如对于定义“PARTITION p1 START(1) END(4) EVERY(1)”,则生成的分区是:[1, 2), [2, 3) 和 [3, 4),名称依次为p1_1, p1_2和p1_3,即此处的p1是名称前缀。 若该定义是第一个分区定义,且该定义有START值,则范围(MINVALUE, START)将自动作为第一个实际分区,其名称为p1_0,然后该定义语义描述的分区名称依次为p1_1, p1_2, ...。例如对于完整定义“PARTITION p1 START(1), PARTITION p2 START(2)”,则生成的分区是:(MINVALUE, 1), [1, 2) 和 [2, MAXVALUE),其名称依次为p1_0, p1_1和p2,即此处p1是名称前缀,p2是分区名称。这里MINVALUE表示最小值。 partition_value:范围分区的端点值(起始或终点),取值依赖于partition_key的类型,不可是MAXVALUE。 interval_value:对[START,END) 表示的范围进行切分,interval_value是指定切分后每个分区的宽度,不可是MAXVALUE;如果(END-START)值不能整除以EVERY值,则仅最后一个分区的宽度小于EVERY值。 MAXVALUE:表示最大值,它通常用于设置最后一个范围分区的上边界。 在创建分区表若第一个分区定义含START值,则范围(MINVALUE,START)将自动作为实际的第一个分区。 START END语法需要遵循以下限制: 每个partition_start_end_item中的START值(如果有的话,下同)必须小于其END值; 相邻的两个partition_start_end_item,第一个的END值必须等于第二个的START值; 每个partition_start_end_item中的EVERY值必须是正向递增的,且必须小于(END-START)值; 每个分区包含起始值,不包含终点值,即形如:[起始值,终点值),起始值是MINVALUE时则不包含; 一个partition_start_end_item创建的每个分区所属的TABLESPACE一样; partition_name作为分区名称前缀时,其长度不要超过57字节,超过时自动截断; 在创建、修改分区表时请注意分区表的分区总数不可超过最大限制(1048575); 在创建分区表时START END与LESS THAN语法不可混合使用。 即使创建分区表时使用START END语法,备份(gs_dump)出的SQL语句也是VALUES LESS THAN语法格式。 PARTITION BY LIST [COLUMNS] (partition_key) 创建列表分区。partition_key为分区键的名称。 COLUMNS关键字只能在sql_compatibility='MYSQL'时使用,“PARTITION BY LIST COLUMNS” 语义同 “PARTITION BY LIST”。 对于partition_key,列表分区策略的分区键最多支持16列。 对于从句是VALUES [IN] (list_values)的语法格式,list_values中包含了对应分区存在的键值,每个分区的键值数量不超过64个。 从句"VALUES IN"只能在sql_compatibility='MYSQL'时使用,语义同"VALUES"。 分区键支持的数据类型为:INT1、INT2、INT4、INT8、NUMERIC、VARCHAR(n)、CHAR、BPCHAR、NVARCHAR2、TIMESTAMP[(p)] [WITHOUT TIME ZONE]、TIMESTAMP[(p)] [WITH TIME ZONE]、DATE。分区个数不能超过1048575个。 PARTITION BY HASH(partition_key) 创建哈希分区。partition_key为分区键的名称。 对于partition_key,哈希分区策略的分区键仅支持1列。 分区键支持的数据类型为:INT1、INT2、INT4、INT8、NUMERIC、VARCHAR(n)、CHAR、BPCHAR、TEXT、NVARCHAR2、TIMESTAMP[(p)] [WITHOUT TIME ZONE]、TIMESTAMP[(p)] [WITH TIME ZONE]、DATE。分区个数不能超过1048575个。 PARTITIONS integer 指定分区个数。 integer为分区数,必须为大于0的整数,且不得大于1048575。 当在RANGE和LIST分区后指定此子句时,必须显式定义每个分区,且定义分区的数量必须与integer值相等。只能在sql_compatibility='MYSQL'时在RANGE和LIST分区后指定此子句。 当在HASH和KEY分区后指定此子句时,若不列出各个分区定义,将自动生成integer个分区,自动生成的分区名为“p+数字”,数字依次为0到integer-1,分区的表空间默认为此表的表空间;也可以显式列出每个分区定义,此时定义分区的数量必须与integer值相等。若既不列出分区定义,也不指定分区数量,将创建唯一一个分区。 { ENABLE | DISABLE } ROW MOVEMENT 行迁移开关。 如果进行UPDATE操作时,更新了元组在分区键上的值,造成了该元组所在分区发生变化,就会根据该开关给出报错信息,或者进行元组在分区间的转移。 取值范围: ENABLE:行迁移开关打开。 DISABLE(缺省值):行迁移开关关闭。 在打开行迁移开关情况下,并发UPDATE、DELETE操作可能会报错,原因如下: UPDATE和DELETE操作对于旧数据都是标记为已删除。在打开行迁移开关情况下,如果更新分区键时,导致了跨分区更新。内核会把旧分区中旧数据标记为已删除,在新分区中新增加一条数据,无法通过旧数据找到新数据。 在UPDATE和UPDATE并发、DELETE和DELETE并发、UPDATE和DELETE并发三个并发场景下,如果并发操作同一行数据时,数据跨分区和非跨分区结果有不同的行为。 对于数据非跨分区结果,第一个操作执行完后,第二个操作不会报错。 如果第一个操作是UPDATE,第二个操作能成功找到最新的数据,之后对新数据操作。 如果第一个操作是DELETE,第二个操作看到当前数据已经被删除而且找不到最新数据,就终止操作。 对于数据跨分区结果,第一个操作执行完后,第二个操作会报错。 如果第一个操作是UPDATE,由于新数据在新分区中,第二个操作不能成功找到最新的数据,就无法操作,之后会报错。 如果第一个操作是DELETE,第二个操作看到当前数据已经被删除而且找不到最新数据,但无法判断删除旧数据的操作是UPDATE还是DELETE。如果是UPDATE,报错处理。如果是DELETE,终止操作。为了保持数据的正确性,只能报错处理。 如果是UPDATE和UPDATE并发,UPDATE和DELETE并发场景,需要串行执行才能解决问题,如果是DELETE和DELETE并发,关闭行迁移开关可以解决问题。
  • 注意事项 唯一约束和主键约束的约束键包含所有分区键将为约束创建LOCAL索引,否则创建GLOBAL索引。 目前哈希分区仅支持单列构建分区键,暂不支持多列构建分区键。 对于分区表PARTITION FOR (values)语法,values只能是常量。 对于分区表PARTITION FOR (values)语法,values在需要数据类型转换时,建议使用强制类型转换,以防隐式类型转换结果与预期不符。 分区数最大值为1048575个,一般情况下业务不可能创建这么多分区,这样会导致内存不足。应参照参数local_syscache_threshold的值合理创建分区,分区表使用内存大致为(分区数 * 3 / 1024)MB。理论上分区占用内存不允许大于local_syscache_threshold的值,同时还需要预留部分空间以供其他功能使用。 当分区数太多导致内存不足时,会间接导致性能急剧下降。 指定分区语句目前不能走全局索引扫描。 不支持XML类型数据作为分区键、二级分区键。 对于分区表进行UPDATE/DELETE时,如果生成的计划不是FQS或Stream计划,语句执行效率会比较差。建议排查语句,消除不可下推因素,从而生成FQS或Stream计划。
  • 语法格式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 CREATE TABLE [ IF NOT EXISTS ] partition_table_name ( [ { column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ] | table_constraint | LIKE source_table [ like_option [...] ] } [, ... ] ] ) [ WITH ( {storage_parameter = value} [, ... ] ) ] [ COMPRESS | NOCOMPRESS ] [ TABLESPACE tablespace_name ] [ DISTRIBUTE BY { REPLICATION | HASH ( column_name [, ...] ) | RANGE ( column_name [, ...] ) { SLICE REFEREN CES tablename | ( slice_less_than_item [, ...] ) | ( slice_start_end_item [, ...] ) } | LIST ( column_name [, ...] ) { SLICE REFERENCES tablename | ( slice_values_item [, ...] ) } } ] [ TO { GROUP groupname | NODE ( nodename [, ... ] ) } ] PARTITION BY { {RANGE [COLUMNS] (partition_key) [ PARTITIONS integer ] ( partition_less_than_item [, ... ] )} | {RANGE [COLUMNS] (partition_key) [ PARTITIONS integer ] ( partition_start_end_item [, ... ] )} | {LIST [COLUMNS] (partition_key) [ PARTITIONS integer ] ( PARTITION partition_name VALUES [IN] (list_values) [TABLESPACE [=] tablespace_name][, ... ])} | { HASH (partition_key) [ PARTITIONS integer ] ( PARTITION partition_name [TABLESPACE [=] tablespace_name][, ... ])} } [ { ENABLE | DISABLE } ROW MOVEMENT ]; 列约束column_constraint: 1 2 3 4 5 6 7 8 [ CONSTRAINT constraint_name ] { NOT NULL | NULL | CHECK ( expression ) | DEFAULT default_expr | UNIQUE [KEY] [ index_parameters ] | PRIMARY KEY [ index_parameters] } [ DEFERRABLE | NOT DEFERRABLE ][ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] 表约束table_constraint: [ CONSTRAINT constraint_name ] { CHECK ( expression ) | UNIQUE ( column_name [, ... ] ) [ index_parameters ] | PRIMARY KEY ( column_name [, ... ] ) [ index_parameters]} [ DEFERRABLE | NOT DEFERRABLE ][ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] like选项like_option: 1 { INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | RELOPTIONS | DISTRIBUTION | ALL } 索引存储参数index_parameters: 1 2 [ WITH ( {storage_parameter = value} [, ... ] ) ] [ USING INDEX TABLESPACE tablespace_name ]
  • 功能描述 创建分区表。分区表是把逻辑上的一张表根据某种方案分成几张物理块进行存储,这张逻辑上的表称之为分区表,物理块称之为分区。分区表是一张逻辑表,不存储数据,数据实际是存储在分区上的。 常见的分区方案有范围分区(Range Partitioning)、间隔分区(Interval Partitioning)、哈希分区(Hash Partitioning)、列表分区(List Partitioning)、数值分区(Value Partition)等。目前行存表支持范围分区、哈希分区、列表分区。 范围分区是根据表的一列或者多列,将要插入表的记录分为若干个范围,这些范围在不同的分区里没有重叠。为每个范围创建一个分区,用来存储相应的数据。 范围分区的分区策略是指记录插入分区的方式。 范围分区策略:根据分区键值将记录映射到已创建的某个分区上,如果可以映射到已创建的某一分区上,则把记录插入到对应的分区上,否则给出报错和提示信息。这是最常用的分区策略。 哈希分区是根据表的一列,为每个分区指定模数和余数,将要插入表的记录划分到对应的分区中,每个分区所持有的行都需要满足条件:分区键的值除以为其指定的模数将产生为其指定的余数。 哈希分区策略:根据分区键值将记录映射到已创建的某个分区上,如果可以映射到已创建的某一分区上,则把记录插入到对应的分区上,否则返回报错和提示信息。 列表分区是根据表的一列,将要插入表的记录通过每一个分区中出现的键值划分到对应的分区中,这些键值在不同的分区里没有重叠。为每组键值创建一个分区,用来存储相应的数据。 列表分区策略:根据分区键值将记录映射到已创建的某个分区上,如果可以映射到已创建的某一分区上,则把记录插入到对应的分区上,否则给出报错和提示信息。 分区可以提供若干好处: 某些类型的查询性能可以得到极大提升。特别是表中访问率较高的行位于一个单独分区或少数几个分区上的情况下。分区可以减少数据的搜索空间,提高数据访问效率。 当查询或更新一个分区的大部分记录时,连续扫描那个分区而不是访问整个表可以获得巨大的性能提升。 如果需要大量加载或者删除的记录位于单独的分区上,则可以通过直接读取或删除那个分区以获得巨大的性能提升,同时还可以避免由于大量DELETE导致的VACUUM超载。
  • 接口介绍 高级功能包DBE_FILE支持的所有接口请参见表2。 表2 DBE_FILE 接口名称 描述 DBE_FILE.OPEN 根据指定的目录和文件名打开一个文件。 DBE_FILE.IS_CLOSE 检测一个文件句柄是否打开。 DBE_FILE.READ_LINE 根据指定的长度从一个打开的文件句柄中读取出一行数据。 DBE_FILE.WRITE 将BUFFER中指定的数据写入到文件中。 DBE_FILE.NEW_LINE 这个存储过程用于向一个打开的文件中写入一个或者多个行终结符。 DBE_FILE.WRITE_LINE 这个存储过程将BUFFER中的字符串写入到一个打开的文件中。 DBE_FILE.FORMAT_WRITE 这个存储过程是一个格式化的PUT存储过程,行为类似printf()。 DBE_FILE.GET_RAW 从一个打开的文件句柄中读取二进制数据。 DBE_FILE.PUT_RAW 向文件中写入传入的二进制数据。 DBE_FILE.FLUSH 将一个文件句柄中的数据写入到物理文件中。 DBE_FILE.CLOSE 关闭一个打开的文件句柄。 DBE_FILE.CLOSE_ALL 关闭一个会话中打开的所有的文件句柄。 DBE_FILE.REMOVE 这个存储过程删除一个磁盘文件,操作的时候需要有充分的权限。 DBE_FILE.RENAME 对于磁盘上的文件进行重命名,类似Unix的mv。 DBE_FILE.COPY 拷贝一个连续的区域内容到一个新创建的文件中,如果忽略了start_line和end_line会拷贝整个文件。 DBE_FILE.GET_ATTR 读取并返回磁盘文件的属性。 DBE_FILE.SEEK 根据用户指定的字节数向前或者向后调整文件指针的位置。 DBE_FILE.GET_POS 返回文件的偏移量,单位字节。 DBE_FILE.FOPEN_NCHAR 根据指定的目录和文件名打开一个文件。 DBE_FILE.WRITE_NCHAR 将数据写入到一个打开的文件。 DBE_FILE.WRITE_LINE_NCHAR 将数据写入到一个打开的文件,并自动追加一个行终结符。 DBE_FILE.FORMAT_WRITE_NCHAR 将格式化数据写入到一个打开的文件,允许格式化的DBE_FILE.WRITE_NCHAR接口。 DBE_FILE.READ_LINE_NCHAR 从一个打开的文件中读取一行指定长度的数据。 DBE_FILE.OPEN 该函数用来打开一个文件,可以指定最大行的大小,最多可以同时打开50个文件。并且该函数返回INTEGER类型的一个句柄。 DBE_FILE.OPEN函数原型为: 1 2 3 4 5 6 DBE_FILE.OPEN ( dir IN VARCHAR2, file_name IN VARCHAR2, open_mode IN VARCHAR2, max_line_size IN INTEGER DEFAULT 1024) RETURN INTEGER; 表3 DBE_FILE.OPEN接口参数说明 参数 描述 dir 文件的目录位置,这个字符串是一个目录对象名。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包读写safe_data_path指定文件路径下的文件。 file_name 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在OPEN中会被忽略,在Unix系统中,文件名不能以/.结尾。 open_mode 指定文件的打开模式,包含: r:read text w:write text a:append text rb:read byte wb:write byte ab:append byte 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 max_line_size 每行最大字符数,包含换行符(最小值是1,最大值是32767)。如果没有指定,会指定一个默认值1024。 DBE_FILE.IS_CLOSE 该函数用于检测一个文件句柄来查看文件是否已经打开,返回一个布尔值,异常情况是INVALID_FILEHANDLE。 DBE_FILE.IS_CLOSE函数原型为: 1 2 3 DBE_FILE.IS_CLOSE ( file IN INTEGER) RETURN BOOLEAN; 表4 DBE_FILE.IS_CLOSE接口参数说明 参数 描述 file IN INTEGER 传入一个要检测的文件句柄。 DBE_FILE.READ_LINE 该存储过程从一个打开的文件句柄中读取文本,并把读取的结果存放到BUFFER中。读取的时候会读取到行尾,不包含行终结符或者读取到文件末尾,或者达到了len参数指定的大小,读取的长度不能超过OPEN的时候指定的max_line_size。 DBE_FILE.READ_LINE函数原型为: 1 2 3 4 DBE_FILE.READ_LINE ( file IN INTEGER, buffer OUT VARCHAR2, len IN INTEGER DEFAULT NULL) 表5 DBE_FILE.READ_LINE接口参数说明 参数 描述 file 通过调用OPEN打开的文件句柄,文件必须以读的模式打开,否则会抛出INVALID_OPERATION的异常。 buffer 用于接收数据的BUFFER。 len 从文件中读取的字节数,默认是NULL。如果是默认NULL,会使用max_linesize来指定大小。 DBE_FILE.WRITE 该存储过程用于向文件中写入BUFFER中的数据,要写入的文件必须以写模式打开,这个操作不会写入行终结符。 DBE_FILE.WRITE函数原型为: 1 2 3 DBE_FILE.WRITE ( file IN INTEGER, buffer IN TEXT); 表6 DBE_FILE.WRITE接口参数说明 参数 描述 file 该存储过程用于向文件中写入BUFFER中的数据,要写入的文件必须以写模式打开,这个操作不会写入行终结符。 buffer 要写入文件的文本数据,BUFFER的最大值是32767个字节。如果在open的时候没有指定值,默认是1024个字节,没有刷新到文件之前,一系列的WRITE操作的BUFFER总和不能超过32767个字节。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 DBE_FILE.NEW_LINE 该存储过程用于向一个打开的文件中写入一个或者多个行终结符。这个存储过程是从WRITE函数中拆分出来的,因为行终结符和平台相关。 DBE_FILE.NEW_LINE函数原型为: 1 2 3 DBE_FILE.NEW_LINE ( file IN INTEGER, line_nums IN INTEGER := 1); 表7 DBE_FILE.NEW_LINE接口参数说明 参数 描述 file 一个打开的文件句柄。 line_nums 写入到文件中的终结符的数量。 DBE_FILE.WRITE_LINE 该存储过程将BUFFER中的字符串写入到一个打开的文件中,文件必须以写模式打开。 DBE_FILE.WRITE_LINE函数原型为: 1 2 3 4 DBE_FILE.WRITE_LINE( file IN INTEGER, buffer IN TEXT, flush IN BOOLEAN DEFAULT FALSE); 表8 DBE_FILE.WRITE_LINE接口参数说明 参数 描述 file 一个打开的文件句柄。 buffer 要写入文件的文本数据,BUFFER的最大值是32767个字节。如果在open的时候没有指定值,默认是1024个字节,没有刷新到文件之前,一系列的PUT操作的BUFFER总和不能超过32767个字节。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 flush 在write后是否要刷到磁盘。 DBE_FILE.FORMAT_WRITE 该存储过程是一个格式化的PUT存储过程,行为类似printf()。 DBE_FILE.FORMAT_WRITE函数原型为: 1 2 3 4 5 6 DBE_FILE.FORMAT_WRITE ( file IN INTEGER, format IN VARCHAR2, arg1 IN VARCHAR2 DEFAULT NULL, . . . arg6 IN VARCHAR2 DEFAULT NULL]); 表9 DBE_FILE.FORMAT_WRITE接口参数说明 参数 描述 file 一个打开的文件句柄。 format 一个要进行格式化的字符串包含,文本和格式符\n和%s。 [arg1. . .arg6] 从1到6个可选的参数串,参数和格式化字符的位置是一一对应的,如果存在格式化字符而没有提供参数,会使用空串来替代%s。 DBE_FILE.GET_RAW 该函数用于从打开的文件描述符中读取二进制数据,从r中返回。 DBE_FILE.GET_RAW函数原型为: 1 2 3 4 DBE_FILE.GET_RAW ( file IN INTEGER, r OUT RAW, length IN INTEGER DEFAULT NULL); 表10 DBE_FILE.GET_RAW接口参数说明 参数 描述 file 一个打开的文件句柄。 r 输出的二进制数据 length 要读取文件的长度,默认值为NULL,读取文件中所有数据,最大长度为1G。 DBE_FILE.PUT_RAW 该函数用于向文件中写入二进制数据。 DBE_FILE.PUT_RAW函数原型为: 1 2 3 4 DBE_FILE.PUT_RAW ( file IN INTEGER, r IN RAW, flush IN BOOLEAN DEFAULT FALSE); 表11 DBE_FILE.PUT_RAW接口参数说明 参数 描述 file 一个打开的文件句柄。 r 输出的二进制数据 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 flush 是否flush到文件中,默认为false。 DBE_FILE.FLUSH 一个文件句柄中的数据要写入到物理文件中,缓冲区中的数据必须要有一个行终结符。当文件必须在打开时读取,刷新非常有用。例如,调试信息可以刷新到文件中,以便立即读取。 DBE_FILE.FLUSH函数原型为: 1 2 DBE_FILE.FLUSH ( file IN INTEGER); 表12 DBE_FILE.FLUSH接口参数说明 参数 描述 file 一个打开的文件句柄。 DBE_FILE.CLOSE 该存储过程用于关闭一个打开的文件句柄,当调用这个存储过程的时候,如果还有等待写入的缓存的数据,可能会收到异常信息。 DBE_FILE.CLOSE函数原型为: 1 2 3 DBE_FILE.CLOSE ( file IN INTEGER )RETURN INTEGER; 表13 DBE_FILE.CLOSE接口参数说明 参数 描述 file 一个打开的文件句柄。 DBE_FILE.CLOSE_ALL 该存储过程关闭一个会话中打开的所有的文件句柄,可用于紧急的清理操作。 DBE_FILE.CLOSE_ALL函数原型为: 1 DBE_FILE.CLOSE_ALL; 表14 DBE_FILE.CLOSE_ALL接口参数说明 参数 描述 无 无 DBE_FILE.REMOVE 该存储过程删除一个磁盘文件,操作的时候对目录和文件要有充分的权限。 DBE_FILE.REMOVE函数原型为: 1 2 3 DBE_FILE.REMOVE ( dir IN VARCHAR2, file_name IN VARCHAR2); 表15 DBE_FILE.REMOVE接口参数说明 参数 描述 dir 文件所在的目录位置。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 file_name 要删除的文件。 DBE_FILE.RENAME 对磁盘上的文件进行重命名,类似Unix的mv。 DBE_FILE.RENAME函数原型为: 1 2 3 4 5 6 DBE_FILE.RENAME ( src_dir IN VARCHAR2, src_file_name IN VARCHAR2, dest_dir IN VARCHAR2, dest_file_name IN VARCHAR2, overwrite IN BOOLEAN DEFAULT FALSE); 表16 DBE_FILE.RENAME接口参数说明 参数 描述 src_dir 原文件的目录位置(大小写敏感)。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 src_file_name 要进行命名的原文件。 dest_dir 目的目录(大小写敏感)。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 dest_file_name 新的文件名。 overwrite 默认是false,如果目的目录下存在一个同名的文件,不会进行重写。 DBE_FILE.COPY 该存储过程拷贝一个连续的区域内容到一个新创建的文件中,如果忽略了start_line和end_line会拷贝整个文件。 DBE_FILE.COPY函数原型为: 1 2 3 4 5 6 7 DBE_FILE.COPY ( src_dir IN VARCHAR2, src_file_name IN VARCHAR2, dest_dir IN VARCHAR2, dest_file_name IN VARCHAR2, start_line IN INTEGER DEFAULT 1, end_line IN INTEGER DEFAULT NULL); 表17 DBE_FILE.COPY接口参数说明 参数 描述 src_dir 原文件所在的目录。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 src_file_name 要拷贝的原文件。 dest_dir 目的文件所在的目录。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 dest_file_name 要写入的目的文件。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 start_line 拷贝开始的行号,默认是1。 end_line 拷贝结束的行号,默认是NULL,指定到文件尾。 DBE_FILE.GET_ATTR 该存储过程用于读取并返回磁盘文件的属性。 DBE_FILE.GET_ATTR函数原型为: 1 2 3 4 5 6 DBE_FILE.GET_ATTR( location IN text, filename IN text, OUT fexists boolean, OUT file_length bigint, OUT block_size integer); 表18 DBE_FILE.GET_ATTR接口参数说明 参数 描述 location 文件所在的目录。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 filename 要检测的文件名。 fexists 返回文件是否存在的值。 file_length 文件的字节长度,如果文件不存在返回NULL。 block_size 文件系统的块大小(单位字节),如果文件不存在返回NULL。 DBE_FILE.SEEK 该存储过程会根据用户指定的字节数向前或者向后调整文件指针的位置。 DBE_FILE.SEEK函数原型为: 1 2 3 4 DBE_FILE.SEEK ( file IN INTEGER, absolute_start IN BIGINT DEFAULT NULL, relative_start IN BIGINT DEFAULT NULL); 表19 DBE_FILE.SEEK接口参数说明 参数 描述 file 一个打开的文件句柄。 absolute_start 文件偏移的绝对位置,这个默认值为NULL。 relative_start 文件偏移的相对位置。如果这个值是正数,向前偏移;如果是负数,向后偏移;默认值为NULL。如果和absolute_start参数同时指定,以absolute_start参数为准。 DBE_FILE.GET_POS 函数返回文件的偏移量,单位字节。 DBE_FILE.FGETPOS函数原型为: 1 2 3 DBE_FILE.GET_POS ( file IN INTEGER) RETURN BIGINT; 表20 DBE_FILE.GET_POS接口参数说明 参数 描述 file 一个打开的文件句柄。 DBE_FILE.FOPEN_NCHAR 函数DBE_FILE.FOPEN_NCHAR用来打开一个文件,可以指定最大行的大小,一个会话内最多可以同时打开50个文件。该函数返回一个DBE_FILE.FILE_TYPE类型的文件句柄。该函数以国家字符集模式打开文件以进行输入或输出。 DBE_FILE.FOPEN_NCHAR函数原型为: 1 2 3 4 5 6 DBE_FILE.FOPEN_NCHAR( dir IN TEXT, file_name IN TEXT, open_mode IN TEXT, max_line_size IN INTEGER DEFAULT 1024) RETURN DBE_FILE.FILE_TYPE; 表21 DBE_FILE.FOPEN_NCHAR接口参数说明 参数 描述 dir 文件的目录位置,这个字符串是一个目录对象名。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包读写safe_data_path指定文件路径下的文件。 file_name 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在FOPEN_NCHAR中会被忽略,在Unix系统中,文件名不能以/.结尾。 open_mode 指定文件的打开模式,包含: r:read text w:write text a:append text rb:read byte wb:write byte ab:append byte 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 max_line_size 每行最大字符数,包含换行符(最小值是1,最大值是32767)。如果没有指定,会指定一个默认值1024。 DBE_FILE.WRITE_NCHAR 函数DBE_FILE.WRITE_NCHAR用于向文件中写入buffer中的数据,文件必须以国家字符集模式和写模式打开,这个操作不会写入行终结符,返回值永远为TRUE。文本字符串将以UTF8字符集格式写入。 DBE_FILE.WRITE_NCHAR函数原型为: 1 2 3 4 DBE_FILE.WRITE_NCHAR( file IN DBE_FILE.FILE_TYPE, buffer IN NVARCHAR2) RETURN VOID; 表22 DBE_FILE.WRITE接口参数说明 参数 描述 file 通过FOPEN_NCHAR打开的DBE_FILE.FILE_TYPE类型的对象,要写入的文件必须以写模式打开,这个操作不会写入行终结符。 buffer 写入文件的文本数据。每行的累计写入长度不能大于或等于FOPEN_NCHAR时指定或默认的max_line_size,否则会在刷新到文件时报错。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 DBE_FILE.WRITE_LINE_NCHAR 函数DBE_FILE.WRITE_LINE_NCHAR用于向文件中写入buffer中的数据,文件必须以国家字符集模式和写模式打开,这个操作会自动追加行终结符,返回值永远为TRUE。文本字符串将以UTF8字符集格式写入。 DBE_FILE.WRITE_LINE_NCHAR函数原型为: 1 2 3 4 DBE_FILE.WRITE_LINE_NCHAR( file IN DBE_FILE.FILE_TYPE, buffer IN NVARCHAR2) RETURN VOID; 表23 DBE_FILE.WRITE_LINE接口参数说明 参数 描述 file 通过FOPEN_NCHAR打开的DBE_FILE.FILE_TYPE类型的对象。 buffer 要写入文件的文本数据,每行的长度(包含换行符)不能大于FOPEN_NCHAR时指定或默认的max_line_size,否则会在刷新到文件时报错。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 DBE_FILE.FORMAT_WRITE_NCHAR 函数DBE_FILE.FORMAT_WRITE_NCHAR将格式化数据写入到一个打开的文件,是允许格式化的DBE_FILE.WRITE_NCHAR接口,返回值永远为TRUE。 DBE_FILE.FORMAT_WRITE_NCHAR函数原型为: 1 2 3 4 5 6 7 DBE_FILE.FORMAT_WRITE_NCHAR( file IN DBE_FILE.FILE_TYPE, format IN NVARCHAR2, arg1 IN NVARCHAR2 DEFAULT NULL, . . . arg5 IN NVARCHAR2 DEFAULT NULL) RETURN VOID; 表24 DBE_FILE.FORMAT_WRITE_NCHAR接口参数说明 参数 描述 file 通过FOPEN_NCHAR打开的DBE_FILE.FILE_TYPE类型的对象。 format 格式化的字符串,包含文本和格式符\n和%s。 [arg1. . .arg5] 从1到5个可选的参数串,参数和格式化字符的位置是一一对应的,如果存在格式化字符而没有提供参数,会使用空串来替代%s。 DBE_FILE.READ_LINE_NCHAR 存储过程DBE_FILE.READ_LINE_NCHAR从一个打开的文件读取数据,并把读取的结果存放到buffer中。读取的时候会读取到行尾,但不包含行终结符,或者读取到文件末尾,或者读取到len参数指定的大小。读取的长度不能超过FOPEN_NCHAR的时候指定的max_line_size。 DBE_FILE.READ_LINE_NCHAR存储过程原型为: 1 2 3 4 DBE_FILE.READ_LINE_NCHAR( file IN DBE_FILE.FILE_TYPE, buffer OUT NVARCHAR2, len IN INTEGER DEFAULT NULL); 表25 DBE_FILE.READ_LINE接口参数说明 参数 描述 file 通过FOPEN_NCHAR打开的DBE_FILE.FILE_TYPE类型的对象,文件必须以读模式打开,否则会抛出INVALID_OPERATION的异常。 buffer 接收数据的buffer。 len 从文件中读取的字节数,默认值为NULL。如果是NULL,会使用max_line_size来指定大小。
  • 注意事项 DBE_FILE要求以DBE_FILE.FOPEN打开的文件是以数据库字符集编码,如果打开的文件未按预期的字符集编码,在使用DBE_FILE.READ_LINE读取文件时,会发生编码校验错误;DBE_FILE要求以DBE_FILE.FOPEN_NCHAR打开的文件是以UTF-8字符集编码,如果打开的文件未按预期的字符集编码,在使用DBE_FILE.READ_LINE_NCHAR读取文件时,会发生编码校验错误。 当使用DBE_OUTPUT.PUT_LINE打印DBE_FILE.READ_LINE_NCHAR接口得到的结果时,需要确保UTF-8字符集编码能够转换成当前数据库字符集编码,满足上述条件后可以正常输出结果。DBE_OUTPUT.PRINT_LINE不支持该功能。 DBE_FILE要求客户端字符集编码与数据库字符集编码保持一致。 当数据库字符集编码为ASCII编码、客户端字符集编码为支持中文的编码,在客户端调用DBE_FILE.WRITE_NCHAR或DBE_FILE.WRITE_LINE_NCHAR写入中文相关内容时,无法保证写入的内容为UTF-8编码格式。可能会导致后续使用DBE_FILE.READ_LINE_NCHAR时报错。
  • 数据类型介绍 DBE_FILE.FILE_TYPE DBE_FILE.FILE_TYPE类型定义了DBE_FILE包中文件的表示方式,DBE_FILE.FILE_TYPE中的字段是DBE_FILE包的私有字段,请不要直接修改DBE_FILE.FILE_TYPE类型对象中字段的值。 1 2 3 4 5 CREATE TYPE DBE_FILE.FILE_TYPE AS( id INTEGER, datatype INTEGER, byte_mode BOOLEAN ); 表1 DBE_FILE.FILE_TYPE字段说明 参数 描述 id 文件句柄。 datatype 表明文件是CHAR文件还是NCHAR文件或者二进制文件,目前支持CHAR文件和NCHAR文件。CHAR文件返回1,NCHAR文件返回2。 byte_mode 表明文件是以二进制模式打开(TRUE)还是以文本模式打开(FALSE)。
  • 参数说明 connection_target 以下列形式之一指定连接的目标服务器: [ database_name ] [ @host ] [ :port ]:通过TCP/IP连接。 unix:postgresql://host [ :port ] / [ database_name ] [ ?connection_option ]:通过Unix域套接字连接。 tcp:postgresql://host [ :port ] / [ database_name ] [ ?connection_option ]:通过TCP/IP连接。 SQL string constant:包含上述形式之一的值。 connection_name 用于该连接的一个可选标识符,可以在其他命令中引用它。可以是一个SQL标识符或者一个宿主变量。 connection_user 用于数据库连接的用户名。 使用user_name/password、user_name SQLIDENTIFIED BY password或者user_name USING password之一,这个参数也能指定用户名和口令。 用户名和口令可以是SQL标识符、字符串常量或者宿主变量。 上述参数中斜体部分为变量,请根据实际情况进行修改。
  • 示例 gaussdb=# create public database link test_link1 connect to 'user1' identified by '********' using (port '54399',dbname 'db01'); 禁止使用DATABASE LINK连接初始用户。 禁止初始用户创建、修改和删除DATABASE LINK对象。 升级未提交情况下无法创建使用DATABASE LINK。 当使用CURRENT_USER或CONNECT TO连接串省略时,使用当前数据库初始用户名和空密码连接,使用时会连接失败。
  • 参数说明 PUBLIC 指定公共以创建对所有用户可见的公共数据库链接。如果省略此子句,则数据库链接是私有的,仅对当前用户可用。 dblink 要创建的DATABASE LINK的名字。 user 创建的DATABASE LINK连接远端使用的用户名。 password 创建的DATABASE LINK连接远端使用的用户对应的密码。 CURRENT_USER 使用当前数据库初始用户名和空密码连接。 USING ( option 'value' [, ... ] ) USING可选择指定要连接的数据库的ip地址、端口号、远端的database name等参数 ,支持的options包括: host:指定连接的地址,不支持ipv6地址。支持以 ‘,’分割的字符串来指定多个IP地址,当前不支持密态数据库和ssl设置和证书认证,不指定默认为空。 port:指定连接的端口号,不指定默认为5432。 dbname:指定连接的数据库名称,不指定默认为连接远端使用的用户名。 fetch_size:从远端每次获取数据量大小,fetch_size取值为0到2147483647,默认为100。 USING后的括号可以只选择上述关键字中的一部分去写。 USING关键字也可以不写,同时之后的括号也不要再写。 DATABASE LINK创建的时候不会去验证是否能连接成功,如果缺乏相关的关键字,可能会在使用时报错。
  • PG_AMPROC PG_AMPROC系统表存储有关与访问方法操作符族相关联的支持过程的信息。每个属于某个操作符族的支持过程都占有一行。 表1 PG_AMPROC字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性,必须明确选择)。 amprocfamily oid PG_OPFAMILY.oid 该项的操作符族。 amproclefttype oid PG_TYPE.oid 相关操作符的左输入数据类型。可能取值及其描述见于8.3 数据类型。 amprocrighttype oid PG_TYPE.oid 相关操作符的右输入数据类型。可能取值及其描述见于8.3 数据类型。 amprocnum smallint - 支持过程编号。 amproc regproc PG_PROC.proname 过程的OID。 amproclefttype和amprocrighttype字段的习惯解释,标识一个特定支持过程支持的操作符的左和右输入类型。对于某些访问方式,匹配支持过程本身的输入数据类型,对其他的则不这样。有一个对索引的“缺省”支持过程的概念,amproclefttype和amprocrighttype都等于索引操作符类的opcintype。 父主题: 系统表
  • 功能描述 为当前事务做两阶段提交的准备。 在命令之后,事务就不再和当前会话关联了;它的状态完全保存在磁盘上,它被提交成功的可能性非常高,即使是在请求提交之前数据库发生了崩溃也如此。 一旦准备好了,一个事务就可以在稍后用COMMIT PREPARED或 ROLLBACK PREPARED命令分别进行提交或者回滚。这些命令可以从任何会话中发出,而不光是最初执行事务的那个会话。 从发出命令的会话的角度来看,PREPARE TRANSACTION不同于ROLLBACK:在执行它之后,就不再有活跃的当前事务了,并且预备事务的效果无法见到 (在事务提交的时候其效果会再次可见)。 如果PREPARE TRANSACTION因为某些原因失败,那么它就会变成一个ROLLBACK,当前事务被取消。
  • DBE_SQL_UTIL.drop_sql_patch drop_sql_patch是用于删除SQL PATCH的接口函数,返回执行是否成功。 限制仅初始用户、sysadmin、opradmin、monadmin用户有权限调用。 表1 DBE_SQL_UTIL.drop_sql_patch入参和返回值列表 参数 类型 描述 patch_name IN name PATCH名称。 result OUT bool 执行是否成功。 父主题: DBE_SQL_UTIL Schema
  • SUMMARY_WORKLOAD_SQL_COUNT 显示集群内各CN的workload上的SQL数量分布。 表1 SUMMARY_WORKLOAD_SQL_COUNT字段 名称 类型 描述 node_name name 节点名称。 workload name 负载名称。 select_count bigint select数量。 update_count bigint update数量。 insert_count bigint insert数量。 delete_count bigint delete数量。 ddl_count bigint ddl数量。 dml_count bigint dml数量。 dcl_count bigint dcl数量。 父主题: Workload
  • 输出性能统计日志 参数说明:对每条查询,以下4个选项控制在服务器日志里记录相应模块的性能统计数据,具体含义如下: log_parser_stats控制在服务器日志里记录解析器的性能统计数据。 log_planner_stats控制在服务器日志里记录查询优化器的性能统计数据。 log_executor_stats控制在服务器日志里记录执行器的性能统计数据。 log_statement_stats控制在服务器日志里记录整个语句的性能统计数据。 这些参数只能辅助管理员进行粗略分析,类似Linux中的操作系统工具getrusage() 。 这些参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 log_statement_stats记录总的语句统计数据,而其他的只记录针对每个模块的统计数据。 log_statement_stats不能和其他任何针对每个模块统计的选项一起打开。 取值范围:布尔型 on表示开启记录性能统计数据的功能。 off表示关闭记录性能统计数据的功能。 默认值:off
  • 注意事项 须使用CASCADE级联删除依赖用户的对象(除数据库外)。当删除用户的级联对象时,如果级联对象处于锁定状态,则此级联对象无法被删除,直到对象被解锁或锁定级联对象的进程被杀死。 在数据库中删除用户时,如果依赖用户的对象在其他数据库中或者依赖用户的对象是其他数据库,请用户先手动删除其他数据库中的依赖对象或直接删除依赖数据库,再删除用户。即drop user不支持跨数据库进行级联删除。 在删除用户时,需要先删除该用户拥有的所有对象并且收回该用户在其他对象上的权限,或者通过指定CASCADE级联删除该用户拥有的对象和被授予的权限。 如果用户下存在创建GDS外表时指定的错误表,则无法通过drop user指定cascade关键字直接删除用户。
  • 参数说明 IF EXISTS 如果指定的用户不存在,发出一个notice而不是抛出一个错误。 user_name 待删除的用户名。 取值范围:已存在的用户名。 CASCADE | RESTRICT CASCADE:级联删除依赖用户的对象,并收回授予该用户的权限。 RESTRICT:如果用户还有任何依赖的对象或被授予了其他对象的权限,则拒绝删除该用户(缺省行为)。 在GaussDB中,存在一个配置参数enable_kill_query,此参数在配置文件postgresql.conf中。此参数影响级联删除用户对象的行为: 当参数enable_kill_query为on ,且使用CASCADE模式删除用户时,会自动kill锁定用户级联对象的进程,并删除用户。 当参数enable_kill_query为off,且使用CASCADE模式删除用户时,会等待锁定级联对象的进程结束之后再删除用户。
  • javax.sql.DataSource javax.sql.DataSource是数据源接口。 表1 对javax.sql.DataSource接口的支持情况 方法名 返回值类型 支持JDBC 4 getConneciton() Connection Yes getConnection(String username,String password) Connection Yes getLoginTimeout() int Yes getLogWriter() PrintWriter Yes setLoginTimeout(int seconds) void Yes setLogWriter(PrintWriter out) void Yes 父主题: JDBC接口参考
  • 几何函数 area(object) 描述:计算图形的面积。 返回类型:double precision 示例: 1 2 3 4 5 gaussdb=# SELECT area(box '((0,0),(1,1))') AS RESULT; result -------- 1 (1 row) center(object) 描述:计算图形的中心。 返回类型:point 示例: 1 2 3 4 5 gaussdb=# SELECT center(box '((0,0),(1,2))') AS RESULT; result --------- (0.5,1) (1 row) diameter(circle) 描述:计算圆的直径。 返回类型:double precision 示例: 1 2 3 4 5 gaussdb=# SELECT diameter(circle '((0,0),2.0)') AS RESULT; result -------- 4 (1 row) height(box) 描述:矩形的竖直高度。 返回类型:double precision 示例: 1 2 3 4 5 gaussdb=# SELECT height(box '((0,0),(1,1))') AS RESULT; result -------- 1 (1 row) isclosed(path) 描述:图形是否为闭合路径。 返回类型:Boolean 示例: 1 2 3 4 5 gaussdb=# SELECT isclosed(path '((0,0),(1,1),(2,0))') AS RESULT; result -------- t (1 row) isopen(path) 描述:图形是否为开放路径。 返回类型:Boolean 示例: 1 2 3 4 5 gaussdb=# SELECT isopen(path '[(0,0),(1,1),(2,0)]') AS RESULT; result -------- t (1 row) length(object) 描述:计算图形的长度。 返回类型:double precision 示例: 1 2 3 4 5 gaussdb=# SELECT length(path '((-1,0),(1,0))') AS RESULT; result -------- 4 (1 row) npoints(path) 描述:计算路径的顶点数。 返回类型:int 示例: 1 2 3 4 5 gaussdb=# SELECT npoints(path '[(0,0),(1,1),(2,0)]') AS RESULT; result -------- 3 (1 row) npoints(polygon) 描述:计算多边形的顶点数。 返回类型:int 示例: 1 2 3 4 5 gaussdb=# SELECT npoints(polygon '((1,1),(0,0))') AS RESULT; result -------- 2 (1 row) pclose(path) 描述:把路径转换为闭合路径。 返回类型:path 示例: 1 2 3 4 5 gaussdb=# SELECT pclose(path '[(0,0),(1,1),(2,0)]') AS RESULT; result --------------------- ((0,0),(1,1),(2,0)) (1 row) popen(path) 描述:把路径转换为开放路径。 返回类型:path 示例: 1 2 3 4 5 gaussdb=# SELECT popen(path '((0,0),(1,1),(2,0))') AS RESULT; result --------------------- [(0,0),(1,1),(2,0)] (1 row) radius(circle) 描述:计算圆的半径。 返回类型:double precision 示例: 1 2 3 4 5 gaussdb=# SELECT radius(circle '((0,0),2.0)') AS RESULT; result -------- 2 (1 row) width(box) 描述:计算矩形的水平尺寸。 返回类型:double precision 示例: 1 2 3 4 5 gaussdb=# SELECT width(box '((0,0),(1,1))') AS RESULT; result -------- 1 (1 row)
  • ADM_TAB_HISTOG RAM S ADM_TAB_HISTOGRAMS系统视图显示数据库所有表和视图的直方图信息。默认只有系统管理员权限才可以访问此系统视图,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_TAB_HISTOGRAMS字段 名称 类型 描述 owner character varying(128) 表的所有者。 table_name character varying(128) 表名。 column_name character varying(4000) 列名。 endpoint_number numeric 直方图的桶号。 endpoint_value numeric 暂不支持,值为NULL。 endpoint_actual_value character varying(4000) 桶端点的实际值。 endpoint_actual_value_raw raw 暂不支持,值为NULL。 endpoint_repeat_count numeric 暂不支持,值为NULL。 scope character varying(7) 暂不支持,值为SHARED。 父主题: 系统视图
  • GLOBAL_STAT_XACT_ALL_TABLES 显示数据库各节点所有Schema中所有普通表和toast表的事务状态信息(不同节点下表的事务状态信息不进行汇总求和)。 表1 GLOBAL_STAT_XACT_ALL_TABLES字段 名称 类型 描述 node_name name 节点名称。 relid oid 表的OID。 schemaname name 此表所在的Schema名。 relname name 表名。 seq_scan bigint 此表发起的顺序扫描数。 seq_tup_read bigint 顺序扫描抓取的活跃行数。 idx_scan bigint 此表发起的索引扫描数。 idx_tup_fetch bigint 索引扫描抓取的活跃行数。 n_tup_ins bigint 插入行数。 n_tup_upd bigint 更新行数。 n_tup_del bigint 删除行数。 n_tup_hot_upd bigint HOT更新行数(即没有更新索引列的行数)。 父主题: Object
共100000条