华为云用户手册

  • 背景信息 在SQL语言中,每个数据都与一个决定其行为和用法的数据类型相关。GaussDB提供一个可扩展的数据类型系统,该系统比其它SQL实现更具通用性和灵活性。因而,GaussDB中大多数类型转换是由通用规则来管理的,这种做法允许使用混合类型的表达式。 GaussDB扫描/分析器只将词法元素分解成五个基本种类:整数、浮点数、字符串、标识符和关键字。大多数非数字类型首先表现为字符串。SQL语言的定义允许将常量字符串声明为具体的类型。例,下面查询: 12345 openGauss=# SELECT text 'Origin' AS "label", point '(0,0)' AS "value"; label | value--------+------- Origin | (0,0)(1 row) 示例中有两个文本常量,类型分别为text和point。如果没有为字符串文本声明类型,则该文本首先被定义成一个unknown类型。 在GaussDB分析器里,有四种基本的SQL结构需要独立的类型转换规则: 函数调用 多数SQL类型系统是建筑在一套丰富的函数上的。函数调用可以有一个或多个参数。因为SQL允许函数重载,所以不能通过函数名直接找到要调用的函数,分析器必须根据函数提供的参数类型选择正确的函数。 操作符 SQL允许在表达式上使用前缀或后缀(单目)操作符,也允许表达式内部使用双目操作符(两个参数)。像函数一样,操作符也可以被重载,因此操作符的选择也和函数一样取决于参数类型。 值存储 INSERT和UPDATE语句将表达式结果存入表中。语句中的表达式类型必须和目标字段的类型一致或者可以转换为一致。 UNION,CASE和相关构造 因为联合SELECT语句中的所有查询结果必须在一列里显示出来,所以每个SELECT子句中的元素类型必须相互匹配并转换成一个统一类型。类似地,一个CASE构造的结果表达式必须转换成统一的类型,这样整个case表达式会有一个统一的输出类型。同样的要求也存在于ARRAY构造以及GREATEST和LEAST函数中。 系统表pg_cast存储了有关数据类型之间的转换关系以及如何执行这些转换的信息。详细信息请参见PG_CAST。 语义分析阶段会决定表达式的返回值类型并选择适当的转换行为。数据类型的基本类型分类,包括:Boolean,numeric,string,bitstring,datetime,timespan,geometric和network。每种类型都有一种或多种首选类型用于解决类型选择的问题。根据首选类型和可用的隐含转换,就可能保证有歧义的表达式(那些有多个候选解析方案的)得到有效的方式解决。 所有类型转换规则都是建立在下面几个基本原则上的: 隐含转换决不能有奇怪的或不可预见的输出。 如果一个查询不需要隐含的类型转换,分析器和执行器不应该进行更多的额外操作。这就是说,任何一个类型匹配、格式清晰的查询不应该在分析器里耗费更多的时间,也不应该向查询中引入任何不必要的隐含类型转换调用。 另外,如果一个查询在调用某个函数时需要进行隐式转换,当用户定义了一个有正确参数的函数后,解释器应该选择使用新函数。
  • 数据损坏检测修复函数 gs_verify_data_file(verify_segment bool) 描述:校验当前实例当前库是否存在文件丢失的情况。校验只包括数据表主文件是否有中间段丢失的情况。默认参数是false,表示不校验段页式表数据文件。参数设置为true时仅校验段页式表文件。默认只有初始用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以查看,其余用户需要赋权后才可以使用。 返回的结果: 非段页式表:rel_oid和rel_name是对应文件的表oid和表名,miss_file_path表示丢失文件的相对路径。 段页式表:因所有表存放在相同文件中,所以rel_oid和rel_name无法显示具体表的信息。对于段页式表,如果第一个文件损坏,不会检查出后面的.1 .2等文件。例如3、3.1、3.2损坏,只能检查出3损坏。当段页式文件不足5个时,使用函数检测时,未生成的文件也会校验出来,例如只有1和2文件,校验段页式时,也会检测出3,4,5文件。以下示例,第一个是校验非段页式表的示例,第二是校验段页式表的示例。 参数说明: verify_segment 指定文件校验的范围。false校验非段页式表;true校验段页式表。 取值范围:true和false,默认是false。 返回值类型:record 示例: 校验非段页式表 openGauss=# select * from gs_verify_data_file();node_name | rel_oid | rel_name | miss_file_path------------------+---------+--------------+------------------dn_6001_6002_6003 | 16554 | test | base/16552/24745 校验段页式表 openGauss=# select * from gs_verify_data_file(true); node_name | rel_oid | rel_name | miss_file_path-------------------+---------+----------+---------------- dn_6001_6002_6003 | 0 | none | base/16573/2 gs_repair_file(tableoid Oid,path text, timeout int) 描述:根据传入的参数修复文件,仅支持有正常主备连接的主DN使用。参数依据gs_verify_data_file函数返回的oid和路径填写。段页式表tableoid赋值为0到4,294,967,295的任意值(内部校验根据文件路径判断是否是段页式表文件,段页式表文件则不使用tableoid)。修复成功返回值为true,修复失败会显示具体失败原因。默认只有在主DN节点上,使用初始用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以查看,其余用户需要赋权后才可以使用。 当DN实例上存在文件损坏时,进行升主会校验出错,报PANIC退出无法升主,为正常现象。 当文件存在但是大小为0时,此时不会去修复该文件,若想要修复该文件,需要将为0的文件删除后再修复。 删除文件需要等文件句柄(fd,file descriptor)自动关闭后再修复,人工操作可以执行重启进程,主备切换等命令。 参数说明: tableoid 要修复的文件对应的表oid,依据gs_verify_data_file函数返回的列表中rel_oid一列填写。 取值范围: Oid,0 - 4294967295。注意:输入负值等数值都会被强制转成非负整数类型。 path 需要修复的文件路径,依据gs_verify_data_file函数返回的列表中miss_file_path一列填写。 取值范围:字符串。 timeout 等待备DN回放的时长,修复文件需要等待备DN回放到当前主DN对应的位置,根据备DN回放所需时长设定。 取值范围:60s - 3600s。 返回值类型:bool 示例: openGauss=# select * from gs_repair_file(16554,'base/16552/24745',360);gs_repair_file----------------t local_bad_block_info() 描述:显示本实例页面损坏的情况。从磁盘读取页面,发现页面CRC校验失败时进行记录。默认只有初始用户、具有sysadmin属性的用户、具有监控管理员属性的用户以及在运维模式下具有运维管理员属性的用户、以及监控用户可以查看,其余用户需要赋权后才可以使用。file_path是损坏文件的相对路径,如果是段页式表,则显示的是逻辑信息,不是实际的物理文件信息。block_num是该文件损坏的具体页面号,页面号从0开始。check_time表示发现页面损坏的时间。repair_time表示修复页面的时间。 返回值类型:record 示例: openGauss=# select * from local_bad_block_info();node_name | spc_node | db_node | rel_node| bucket_node | fork_num | block_num | file_path | check_time | repair_time-----------------+-------+--------+--------+--------------+----------+-----------+-----------------+--------------------------+-------------------------------dn_6001_6002_6003| 1663 | 16552 | 24745 | -1 | 0 | 0 | base/16552/24745 | 2022-01-13 20:19:08.385004+08 | 2022-01-13 20:19:08.407314+08 remote_bad_block_info() 描述:CN上查询时,查询除本实例以外其他实例页面损坏的情况,记录数据和在其他实例上执行local_bad_block_info函数一致。DN上执行结果为空。默认只有初始用户、具有sysadmin属性的用户、具有监控管理员属性的用户以及在运维模式下具有运维管理员属性的用户、以及监控用户可以查看,其余用户需要赋权后才可以使用。 返回值类型:record local_clear_bad_block_info() 描述:清理local_bad_block_info中已修复页面的数据,也就是repair_time不为空的信息。默认只有初始用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户、以及监控用户可以查看,其余用户需要赋权后才可以使用。 返回值类型:bool 示例: openGauss=# select * from local_clear_bad_block_info();result--------t remote_clear_bad_block_info() 描述:CN上执行时,清理除本实例以外其他实例已修复页面的数据,也就是repair_time不为空的信息。DN上执行结果为空。默认只有初始用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户、以及监控用户可以查看,其余用户需要赋权后才可以使用。 返回值类型:record gs_verify_and_tryrepair_page (path text, blocknum Oid, verify_mem bool, is_segment bool) 描述:校验本实例指定页面的情况。默认只有在主DN节点上,使用初始用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以查看,其余用户需要赋权后才可以使用。返回的结果信息,disk_page_res表示磁盘上页面的校验结果,mem_page_res表示内存中页面的校验结果,is_repair表示在校验的过程中是否触发修复功能,t表示已修复,f表示未修复。 注意:当DN实例上存在页面损坏时,进行升主会校验出错,报PANIC退出无法升主,为正常现象。不支持hashbucket表页面损坏的修复。 参数说明: path 损坏文件的路径,依据local_bad_block_info中file_path一列填写。 取值范围:字符串。 blocknum 损坏文件的页号,依据local_bad_block_info中block_num一列填写。 取值范围:Oid,0 - 4294967295。注意:输入负值等都会被强制转成非负整数类型。 verify_mem 指定是否校验内存中的指定页面。设定为false时,只校验磁盘上的页面。设置为true时,校验内存中的页面和磁盘上的页面。如果发现磁盘上页面损坏,会将内存中的页面做一个基本信息校验刷盘,修复磁盘上页面。如果校验内存页面时发现页面不在内存中,会经内存接口读取磁盘上的页面。此过程中如果磁盘页面有问题,则会触发远程读自动修复功能。 取值范围:bool,true和false。 is_segment 是否是段页式表。根据local_bad_block_info中的bucket_node列值决定。如果bucket_node为-1时,表示不是段页式表,将is_segment设置为false;非-1的情况将is_segment设置为true。 取值范围:bool,true和false。 返回值类型:record 示例: openGauss=# select * from gs_verify_and_tryrepair_page('base/16552/24745',0,false,false);node_name | path | blocknum | disk_page_res | mem_page_res | is_repair------------------+------------------+------------+-----------------------------+---------------+----------dn_6001_6002_6003 | base/16552/24745 | 0 | page verification succeeded.| | f gs_repair_page(path text, blocknum Oid is_segment bool, timeout int) 描述:修复本实例指定页面,仅支持有正常主备连接的主DN使用。默认只有在主DN节点上,使用初始用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以查看,其余用户需要赋权后才可以使用。页面修复成功返回true,修复过程中出错会有报错信息提示。 注意:当DN实例上存在页面损坏时,进行升主会校验出错,报PANIC退出无法升主,为正常现象。不支持hashbucket表页面损坏的修复。 参数说明 path 损坏页面的路径。根据local_bad_block_info中file_path一列设置,或者是gs_verify_and_tryrepair_page函数中path一列设置。 取值范围:字符串。 blocknum 损坏页面的页面号。根据local_bad_block_info中block_num一列设置,或者是gs_verify_and_tryrepair_page函数中blocknum一列设置。 取值范围:Oid,0 - 4294967295。注意:输入负值等数值都会被强制转成非负整数类型。 is_segment 是否是段页式表。根据local_bad_block_info中的bucket_node列值决定,如果bucket_node为-1时,表示不是段页式表,将is_segment设置为false,非-1的情况将is_segment设置为true。 取值范围:bool,true或者false。 timeout 等待备DN回放的时长。修复页面需要等待备DN回放到当前主DN对应的位置,根据备DN回放所需时长设定。 取值范围:60s - 3600s。 返回值类型:bool 示例: openGauss=# select * from gs_repair_page('base/16552/24745',0,false,60);result--------t 父主题: 函数和操作符
  • 废弃函数 GaussDB中下列函数在最新版本中已废弃: gs_wlm_get_session_info gs_wlm_get_user_session_info check_engine_status encode_plan_node model_train_opt gs_stat_get_wlm_plan_operator_info track_model_train_opt array_extend dbe_perf.global_slow_query_info dbe_perf.global_slow_query_info_bytime dbe_perf.global_slow_query_history pg_reload_conf pg_rotate_logfile gs_stat_ustore 父主题: 函数和操作符
  • 其它函数 pgxc_pool_check() 描述:检查连接池中缓存的连接数据是否与pgxc_node一致。 返回值类型:Boolean pgxc_pool_reload() 描述:更新连接池中缓存的连接信息。 返回值类型:Boolean reload_active_coordinator() 描述:对所有存活的CN,更新连接池中缓存的连接信息。 返回值类型:void pgxc_lock_for_backup() 描述:为备份操作给集群加锁,这些备份是为在新增节点上做恢复。 返回值类型:Boolean pgxc_lock_for_backup是在使用gs_dump或gs_dumpall工具备份集群前,用来给集群加锁的。当给集群加锁后,不允许有改变系统结构的操作。该函数不影响DML语句。 pg_pool_validate(clear bool, node_name text) 描述:显示CN到节点node_name之间pooler中无效连接,当clear为true时清理无效连接。 返回值类型:record pgxc_pool_connection_status() 描述:检查pooler连接状态是否正常。 返回值类型:boolean pg_nodes_memory() 描述:查看所有节点的内存占用。 返回值类型:record table_skewness(text) 描述:查看表数据在所有节点的占比。 参数:表示待查询表的表名,为text类型。 返回值类型:record table_skewness(text, text, text) 描述:查看表数据指定列在所有节点的占比。 参数:表示待查询表的表名、指定列名、指定的表的记录数(默认值为0,查询所有记录),都为text类型。 返回值类型:record 返回值说明:节点编号,指定列的数据行数,当前节点数据量相对总数据量的占比。 示例: 返回't'表'a'字段前5行数据在节点上的分布。openGauss=# select table_skewness('t', 'a',5); table_skewness---------------- (1,3,60.000%) (2,2,40.000%)(2 rows)返回't'表'a'字段所有数据在节点上的分布。openGauss=# select table_skewness('t', 'a'); table_skewness---------------- (1,7,70.000%) (2,2,20.000%) (0,1,10.000%)(3 rows) table_skewness_with_schema(text, text) 描述:查看表数据在所有节点的占比,与table_skewness(text)作用相同。 参数:表示待查询表的schema名称和表名,为text类型。 返回值类型:record table_data_skewness(colrecord, type) 描述:查看表数据所在节点。 参数说明: colrecord:表示待查询表的列名记录,为record类型。 type:hash分布类型 返回值类型:smallint 示例: openGauss=# select table_data_skewness(row(index), 'R') from test1; table_data_skewness--------------------- 4 3 1 2(4 rows) table_distribution(schemaname text, tablename text) 描述:查看指定表在各个节点上占用的存储空间。 参数:表示待查询表的模式名和表名,均为text类型。 返回值类型:record 使用本函数查询指定表存储分布信息,需要具备指定表的SELECT权限。 table_distribution性能比table_skewness更优,尤其是在大集群(当前特性是实验室特性,使用时请联系华为工程师提供技术支持)大数据量场景下,请优先考虑使用table_distribution函数。 当使用table_distribution并希望直观的看到空间占比时,可使用dnsize/(sum(dnsize) over ())的方式查看出具体的占比情况。 table_distribution() 描述:查看当前库中所有表在各节点的存储空间分布情况。 返回值类型:record 使用本函数涉及全库表信息查询,需要具备管理员权限。 当前基于table_distribution()函数,GaussDB提供视图PGXC_GET_TABLE_SKEWNESS进行数据倾斜查询,建议在数据库中表数量(小于10000)较少的场景直接使用。 plan_seed 描述:获取前一次查询语句的seed值(内部使用)。 返回值类型:int pg_stat_get_env 描述:获取当前节点的环境变量信息,仅sysadmin和monitor admin可以访问。 返回值类型:record 示例: openGauss=# select pg_stat_get_env(); pg_stat_get_env--------------------------------------------------------------------------------------------------------------------------------------- (coordinator1,localhost,144773,49100,/data1/GaussDB_Kernel_TRUNK/install,/data1/GaussDB_Kernel_TRUNK/install/data/coordinator1,pg_log)(1 row) pg_catalog.plancache_clean() 描述:清理节点上无人使用的全局计划缓存。 返回值类型:bool pg_stat_get_thread 描述:提供当前节点下线程的状态信息,sysadmin和monitor admin用户可以查看所有线程的信息,普通用户只能查看本用户的线程信息。 返回值类型:record pgxc_get_os_threads 描述:提供整个集群中所有正常节点下的线程状态信息。 返回值类型:record pg_stat_get_sql_count 描述:提供当前节点中用户执行的SELECT/UPDATE/INSERT/DELETE/MERGE INTO语句的计数结果,sysadmin和monitor admin用户可以查看所有用户的信息,普通用户只能查看本用户的统计信息。 返回值类型:record pgxc_get_sql_count 描述:提供整个集群所有节点中所有用户执行的SELECT/UPDATE/INSERT/DELETE/MERGE INTO语句的计数结果。 返回值类型:record pgxc_get_node_env 描述:提供获取集群中所有节点的环境变量信息。 返回值类型:record pgxc_disaster_read_set(text) 描述:设置灾备集群的节点信息到ETCD上。仅灾备集群可用,仅初始用户可调用。 返回值类型:Boolean pgxc_disaster_read_init 描述:初始化灾备可读的资源和状态信息。仅灾备集群可用,仅初始用户可调用。 返回值类型:Boolean pgxc_disaster_read_clear 描述:清理灾备可读的资源和状态信息。仅灾备集群可用,仅初始用户可调用。 返回值类型:Boolean pgxc_disaster_read_status 描述:提供灾备集群的节点信息,仅灾备集群可用。 返回值类型:record gs_switch_relfilenode 描述:交换两个表或分区的元信息(重分布工具内部使用,用户直接使用会有错误信息提示)。 返回值类型:int pg_catalog.plancache_clean() 描述:清理当前节点上无人使用的全局计划缓存。 返回值类型:boolean DBE_PERF.global_plancache_clean() 描述:清理所有节点上无人使用的全局计划缓存。 返回值类型:Boolean copy_error_log_create() 描述:创建COPY FROM容错机制所需要的错误表(public.pgxc_copy_error_log)。 返回值类型:Boolean 此函数会尝试创建public.pgxc_copy_error_log表,表的详细信息请参见表1。 在relname列上创建B-tree索引,并REVOKE ALL on public.pgxc_copy_error_log FROM public对错误表进行权限控制(与COPY语句权限一致)。 由于尝试创建的public.pgxc_copy_error_log定义是一张行存表,因此集群上必须支持行存表的创建才能够正常运行此函数,并使用后续的COPY容错功能。需要特别注意的是,enable_hadoop_env这个GUC参数开启后会禁止在集群内创建行存表(GaussDB默认为off)。 此函数自身权限为Sysadmin及以上(与错误表、COPY权限一致)。 若创建前public.pgxc_copy_error_log表已存在或者copy_error_log_relname_idx索引已存在,则此函数会报错回滚。 表1 错误表public.pgxc_copy_error_log信息 列名称 类型 描述 relname character varying 表名称。以模式名.表名形式显示。 begintime timestamp with time zone 出现数据格式错误的时间。 filename character varying 出现数据格式错误的数据源文件名。 lineno bigint 在数据源文件中,出现数据格式错误的行号。 rawrecord text 在数据源文件中,出现数据格式错误的原始记录。 detail text 详细错误信息。 pg_stat_get_data_senders() 描述:提供当前活跃的数据复制发送线程的详细信息。 返回值类型:record textlen() 描述:提供查询text的逻辑长度的方法。 返回值类型:int threadpool_status() 描述:显示线程池中工作线程及会话的状态信息。 返回值类型:record get_local_active_session() 描述:提供当前节点保存在内存中的历史活跃session状态的采样记录,sysadmin和monitor admin权限能查看当前节点所有的历史活跃session记录,普通用户查看本会话的历史活跃session记录。 返回值类型:record dbe_perf.get_global_active_session() 描述:提供所有节点保存在内存中的历史活跃session状态的采样记录。 返回值类型:record dbe_perf.get_global_gs_asp(timestamp,timestamp) 描述:提供所有节点保存在系统表gs_asp中的历史活跃session状态的采样记录。 返回值类型:record get_wait_event_info() 描述:提供wait event事件的具体信息。 返回值类型:record dbe_perf.get_datanode_active_session(text) 描述:提供从CN查询DN上保存在内存中的历史活跃session状态的采样记录。 返回值类型:record 备注:该函数查询目标DN上local_active_session视图中记录并和所有CN上的local_active_session中的记录进行匹配获取query string,所以会占用大量的内存。 dbe_perf.get_datanode_active_session_hist(text,timestamp,timestamp) 描述:提供从CN查询DN上保存在系统表gs_asp中的历史活跃session状态的采样记录。 返回值类型:record 备注:该函数查询目标DN上指定时间段的gs_asp记录,如果指定时间段过长造成查询的记录过多,会耗费大量时间。 generate_wdr_report(bigint, bigint, cstring, cstring,cstring) 描述:基于两个snapshot生成系统诊断报告,默认初始化用户或监控管理员用户可以访问。只可在系统库中查询到结果,用户库中无法查询。 返回值类型:text 表2 generate_wdr_report参数说明 参数 说明 取值范围 begin_snap_id 生成某段时间内性能诊断报告的开始snapshotid。 - end_snap_id 结束snapshot的id,默认end_snap_id大于begin_snap_id。 - report_type 指定生成report的类型。 summary detail all,即同时包含summary和detail。 report_scope 指定生成report的范围。 cluster:数据库级别的信息 node:节点级别的信息。 node_name 在“report_scope”指定为“node”时,需要把该参数指定为对应节点的名称。 在“report_scope”为“cluster”时,该参数可以省略,或指定为NULL。 node:GaussDB中的节点名称。 cluster:省略/空/NULL。 create_wdr_snapshot() 描述:手工生成系统诊断快照,该函数需要sysadmin权限,且只能在CCN上执行。 返回值类型:text kill_snapshot() 描述:kill后台的WDR snapshot线程,调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。 返回值类型:void capture_view_to_json(text,integer) 描述:将视图的结果存入GUC: perf_directory所指定的目录,如果is_crossdb为1,则表示对于所有的database都会访问一次view;如果is_crossdb为0,则表示仅对当前database进行一次视图访问。该函数只有sysadmin和monitor admin用户可以执行。 返回值类型:int reset_unique_sql(text,text,bigint) 描述:用来清理CN/DN内存中的Unique SQL(需要sysadmin/monitor admin权限)。 返回值类型:Boolean 表3 reset_unique_sql参数说明 参数 类型 描述 scope text 清理范围类型: 'GLOBAL' - 清理所有的CN/DN节点,如果是'GLOBAL',则只可以为CN结点执行此函数。 'LOCAL' - 清理本节点。 clean_type text 'BY_USERID' - 按用户ID来进行清理Unique SQL。 'BY_CNID' - 按CN的ID来进行清理Unique SQL。 'ALL' - 全部清理. clean_value int8 具体清理type对应的清理值。如果第二个参数为ALL,则第三个参数不起作用,可以取任意值。 wdr_xdb_query(db_name_str text, query text) 描述:提供本地跨数据库执行query的能力。例如: 在连接到postgres库时, 访问test库下的表。只有系统管理员才有权限执行。 select col1 from wdr_xdb_query('dbname=test','select col1 from t1') as dd(col1 int); 返回值类型:record pg_wlm_jump_queue(pid int) 描述:调整任务到CN队列的最前端。 返回值类型:boolean true:成功。 false:失败。 gs_wlm_switch_cgroup(pid int, cgroup text) 描述:调整作业的优先级到新控制组。 返回值类型:boolean true:成功。 false:失败。 pv_session_memctx_detail(threadid tid, MemoryContextName text) 描述:将线程tid的MemoryContextName内存上下文信息记录到“$GAUSSLOG/pg_log/${node_name}/dumpmem”目录下的“threadid_timestamp.log”文件中。其中threadid可通过查询表PV_SESSION_MEMORY_DETAIL中的sessid字段获得。在正式发布的版本中仅接受MemoryContextName为空串(两个单引号表示输入为空串,即'')的输入,此时会记录所有的内存上下文信息,否则不会有任何操作。该函数需要管理员权限的用户才能执行。 返回值类型:boolean true:成功。 false:失败。 pg_shared_memctx_detail(MemoryContextName text) 描述:将MemoryContextName内存上下文信息记录到“$GAUSSLOG/pg_log/${node_name}/dumpmem”目录下的“threadid_timestamp.log”文件中。在正式发布版本中调用该函数不会有任何操作。该函数需要管理员权限的用户才能执行。 返回值类型:boolean true:成功。 false:失败。 pv_compute_pool_workload() 描述:提供云上加速集群(由于规格变更,当前版本已经不再支持本特性,请不要使用)当前负载信息。 返回值类型:record local_bgwriter_stat() 描述:显示本实例的bgwriter线程刷页信息,候选buffer链中页面个数,buffer淘汰信息。 返回值类型:record local_candidate_stat() 描述:显示本实例的候选buffer链中页面个数,buffer淘汰信息,包含normal buffer pool和segment buffer pool。 返回值类型:record local_ckpt_stat() 描述:显示本实例的检查点信息和各类日志刷页情况。 返回值类型:record local_double_write_stat() 描述:显示本实例的双写文件的情况。 返回值类型:record 表4 local_double_write_stat参数说明 参数 类型 描述 node_name text 实例名称。 curr_dwn int8 当前双写文件的序列号。 curr_start_page int8 当前双写文件恢复起始页面。 file_trunc_num int8 当前双写文件复用的次数。 file_reset_num int8 当前双写文件写满后发生重置的次数。 total_writes int8 当前双写文件总的I/O次数。 low_threshold_writes int8 低效率写双写文件的I/O次数(一次I/O刷页数量少于16页面)。 high_threshold_writes int8 高效率写双写文件的I/O次数(一次I/O刷页数量多于一批,421个页面)。 total_pages int8 当前刷页到双写文件区的总的页面个数。 low_threshold_pages int8 低效率刷页的页面个数。 high_threshold_pages int8 高效率刷页的页面个数。 file_id int8 当前双写文件的id号 local_single_flush_dw_stat() 描述:显示本实例的单页面淘汰双写文件的情况。 返回值类型:record local_pagewriter_stat() 描述:显示本实例的刷页信息和检查点信息。 返回值类型:record local_redo_stat() 描述:显示本实例的备机的当前回放状态。 返回值类型:record 备注:返回的回放状态主要包括当前回放位置,回放最小恢复点位置等信息。 local_recovery_status() 描述:显示本实例的主机和备机的日志流控信息。 返回值类型:record local_rto_status() 描述:显示本实例的主机和备机的日志流控信息。 返回值类型:record gs_wlm_node_recover(boolean isForce) 描述:动态负载管理(当前特性是实验室特性,使用时请联系华为工程师提供技术支持)节点故障后做节点恢复操作。该函数只有管理员用户可以执行,属于集群管理模块调用的,不建议用户直接调用。 返回值类型:bool gs_wlm_node_clean(cstring nodename) 描述:动态负载管理(当前特性是实验室特性,使用时请联系华为工程师提供技术支持)节点故障后做数据清理操作。该函数只有管理员用户可以执行,属于集群管理模块调用的,不建议用户直接调用。 返回值类型:bool gs_cgroup_map_ng_conf(group name) 描述:读取指定逻辑集群(当前特性是实验室特性,使用时请联系华为工程师提供技术支持)的cgroup配置文件。该函数只有sysadmin权限的用户可以执行。 返回值类型:record pgxc_cgroup_map_ng_conf(group name) 描述:在所有节点上读取指定逻辑集群(当前特性是实验室特性,使用时请联系华为工程师提供技术支持)的cgroup配置文件。该函数只有sysadmin权限的用户可以执行。 返回值类型:bool gs_wlm_switch_cgroup(sess_id int8, cgroup name) 描述:切换指定会话的控制组。 返回值类型:record comm_client_info() 描述:用于查询单个节点活跃的客户端连接信息,返回结果解释见COMM_CLIENT_INFO。 返回值类型:setof record pg_sync_cstore_delta(text) 描述:同步指定列存表的delta表表结构,使其与列存表主表一致。 返回值类型:bigint pg_sync_cstore_delta() 描述:同步所有列存表的delta表表结构,使其与列存表主表一致。 返回值类型:bigint pg_get_flush_lsn() 描述:返回当前节点flush的xlog位置。 返回值类型:text pg_get_sync_flush_lsn() 描述:返回当前节点多数派flush的xlog位置。 返回值类型:text gs_create_log_tables() 描述:用于创建运行日志和性能日志(当前特性是实验室特性,使用时请联系华为工程师提供技术支持)的外表和视图。 示例: openGauss=# select gs_create_log_tables(); gs_create_log_tables----------------------(1 row) 返回值类型:void pgxc_wlm_rebuild_user_resource_pool() 描述:重新构建用户及资源池缓存信息。需要系统管理员权限才可以执行该函数。 返回值类型:boolean locktag_decode(locktag text) 描述:从locktag中解析锁的具体信息。 示例: openGauss=# select locktag_decode('271b:0:0:0:0:6'); locktag_decode--------------------------------------------- locktype:transactionid, transactionid:10011(1 row) 返回值类型:text disable_conn(disconn_mode text, host text, port integer) 描述:CM Agent处理CM Server下发的命令,在DN进行选主时设置该DN拒绝连接所有DN、强制连接某个DN或轮询连接所有DN。只有初始化用户和系统管理员才可以调用该函数。 返回值类型:void 表5 disable_conn参数说明 参数 类型 描述 disconn_mode text DN连接模式: 'prohibit_connection' - 拒绝连接所有DN。 'specify_connection' - 强制连接某个DN。 'polling_connection' - 轮询连接所有DN。 host text DN的IP。 port integer DN的端口号。 dbe_perf.get_global_full_sql_by_timestamp(start_timestamp timestamp with time zone, end_timestamp timestamp with time zone) 描述:获取集群级的全量SQL(Full SQL)信息。只可在系统库中查询到结果,用户库中无法查询。 返回值类型:record 表6 dbe_perf.get_global_full_sql_by_timestamp参数说明 参数 类型 描述 start_timestamp timestamp with time zone SQL启动时间范围的开始时间点。 end_timestamp timestamp with time zone SQL启动时间范围的结束时间点。 dbe_perf.get_global_slow_sql_by_timestamp(start_timestamp timestamp with time zone, end_timestamp timestamp with time zone) 描述:获取集群级的慢SQL(Slow SQL)信息。只可在系统库中查询到结果,用户库中无法查询。 返回值类型:record 表7 dbe_perf.get_global_slow_sql_by_timestamp参数说明 参数 类型 描述 start_timestamp timestamp with time zone SQL启动时间范围的开始时间点。 end_timestamp timestamp with time zone SQL启动时间范围的结束时间点。 statement_detail_decode(detail text, format text, pretty boolean) 描述:解析全量/慢SQL语句中的details字段的信息。只可在系统库中查询到结果,用户库中无法查询。 返回值类型:text 表8 statement_detail_decode参数说明 参数 类型 描述 detail text SQL语句产生的事件的集合(不可读)。 format text 解析输出格式,取值为plaintext。 pretty boolean 当format为plaintext时,是否以优雅的格式展示: true表示通过“\n”分隔事件。 false表示通过“,”分隔事件。 pgxc_get_csn(tid) 描述:返回给定的事务id对应的事务提交序号(CSN)。 返回值类型:int8 pgxc_get_searchlet_info() 描述:返回所有节点上searchlet的相应信息。 返回值类型:setof record 由于规格变更,当前版本已经不再支持该函数,请不要使用。 pgxc_get_searchlet_table_attr_info() 描述:返回所有节点上searchlet中表的属性信息。 返回值类型:setof record 由于规格变更,当前版本已经不再支持该函数,请不要使用。 get_global_user_transaction() 描述:返回所有节点上各用户的事务相关信息。 返回值类型:node_name name, usename name, commit_counter bigint, rollback_counter bigint, resp_min bigint, resp_max bigint, resp_avg bigint, resp_total bigint, bg_commit_counter bigint, bg_rollback_counter bigint, bg_resp_min bigint, bg_resp_max bigint, bg_resp_avg bigint, bg_resp_total bigint pg_collation_for 描述:返回入参字符串对应的排序规则 参数:any(如果是常量必须进行显式类型转换) 返回值类型:text pgxc_unlock_for_sp_database(name Name) 描述:释放指定数据库锁。 参数:数据库名 返回值类型:布尔 pgxc_lock_for_sp_database(name Name) 描述:对指定的数据库加锁。 参数:数据库名 返回值类型:布尔 pgxc_unlock_for_transfer(name Name) 描述:释放用于数据传输(数据重分布)锁。 参数:数据库名 返回值类型:布尔 pgxc_lock_for_transfer(name Name) 描述:对数据库枷锁,用于数据传输(数据重分布)。 参数:数据库名 返回值类型:布尔 gs_catalog_attribute_records() 描述:对于指定的系统表oid,返回该系统表对应的各个字段的定义。仅支持oid小于10000的普通系统表(不支持索引、toast表等)。 参数:系统表oid 返回值类型:record gs_comm_proxy_thread_status() 描述:用于在集群配置用户态网络的场景下,代理通信库comm_proxy收发数据包统计。该函数在当前版本不支持。 参数:nan 返回值类型:record dynamic_func_control(scope text, function_name text, action text, "{params}" text[]) 描述:动态开启内置的功能,当前仅支持动态开启全量SQL。 返回值类型:record 表9 dynamic_func_control参数说明 参数 类型 描述 scope text 动态开启功能的范围,当前仅支持'GLOBAL/LOCAL'。 function_name text 功能的名称,当前仅支持'STMT'。 action text 当function_name为'STMT'时,action仅支持TRACK/UNTRACK/LIST/CLEAN: TRACK - 开始记录归一化SQL的全量SQL信息。 UNTRACK - 取消记录归一化SQL的全量SQL信息。 LIST - 列取当前TRACK的归一化SQL的信息。 CLEAN - 清理记录当前归一化SQL的信息。 params text[] 当function_name为'STMT'时,对应不同的action时,对应的params设置如下: TRACK - '{"归一化SQLID", "L0/L1/L2"}' UNTRACK - '{"归一化SQLID"}' LIST - '{}' CLEAN - '{}' gs_parse_page_bypath(path text, blocknum bigint, relation_type text, read_memory boolean) 描述:用于解析指定表页面,并返回存放解析内容的路径。 返回值类型:text 备注:必须是系统管理员或运维管理员才能执行此函数。 表10 gs_parse_page_bypath参数说明 参数 类型 描述 path text 对于普通表或段页式的普通表,相对路径为:tablespace name/database oid/表的relfilenode(物理文件名);例如:base/16603/16394 对于段页式的hashbucket表,相对路径为:tablespace name/database oid/Segment Head的逻辑页号_b(bucketid)。例如:base/16603/16394_b1437 表文件的相对路径可以通过pg_relation_filepath(table_name text)查找。分区表的路径可以查看pg_partition系统表和调用pg_partition_filepath(partition_oid)。 合法的path格式列举: global/relNode base/dbNode/relNode pg_tblspc/spcNode/version_dir/dbNode/relNode 对于hashbucket表,在此格式基础上,路径末尾加上_b段页式的逻辑页号。 blocknum bigint -1:所有block的信息(强制从磁盘解析)。 0~MaxBlockNumber:对应block的信息。 relation_type text heap(astore表) btree(BTree索引) segment(段页式) read_memory boolean false,从磁盘文件解析; true,首先尝试从共享缓冲区中解析该页面;如果共享缓冲区中不存在,则从磁盘文件解析。 gs_xlogdump_lsn(start_lsn text, end_lsn text) 描述:用于解析指定lsn范围之内的XLOG日志,并返回存放解析内容的路径。可以通过pg_current_xlog_location()获取当前XLOG位置。 参数:LSN起始位置,LSN结束位置 返回值类型:text 备注:必须是系统管理员或运维管理员才能执行此函数。 gs_xlogdump_xid(c_xid xid) 描述:用于解析指定xid的XLOG日志,并返回存放解析内容的路径。可以通过txid_current()获取当前事务ID。 参数:事务ID 返回值类型:text 备注:必须是系统管理员或运维管理员才能执行此函数。 gs_xlogdump_tablepath(path text, blocknum bigint, relation_type text) 描述:用于解析指定表页面对应的日志,并返回存放解析内容的路径。 返回值类型:text 备注:必须是系统管理员或运维管理员才能执行此函数。 表11 gs_xlogdump_tablepath参数说明 参数 类型 描述 path text 对于普通表或段页式的普通表,相对路径为:tablespace name/database oid/表的relfilenode(物理文件名)。例如:base/16603/16394。 对于段页式的hashbucket表,相对路径为:tablespace name/database oid/Segment Head的逻辑页号_b(bucketid)。例如:base/16603/16394_b1437 表文件的相对路径可以通过pg_relation_filepath(table_name text)查找。分区表的路径可以查看pg_partition系统表和调用pg_partition_filepath(partition_oid)。 合法的path格式列举: global/relNode base/dbNode/relNode pg_tblspc/spcNode/version_dir/dbNode/relNode 对于hashbucket表,在此格式基础上,路径末尾加上_b段页式的逻辑页号。 blocknum bigint -1:所有block的信息(强制从磁盘解析)。 0~MaxBlockNumber:对应block的信息。 relation_type text heap(astore 表) btree(BTree 索引) segment(段页式) gs_xlogdump_parsepage_tablepath(path text, blocknum bigint, relation_type text, read_memory boolean) 描述:用于解析指定表页面和表页面对应的日志,并返回存放解析内容的路径。可以看做一次执行gs_parse_page_bypath和gs_xlogdump_tablepath。该函数执行的前置条件是表文件存在。如果想查看已删除的表的相关日志,请直接调用gs_xlogdump_tablepath。 返回值类型:text 备注:必须是系统管理员或运维管理员才能执行此函数。 表12 gs_xlogdump_parsepage_tablepath参数说明 参数 类型 描述 path text 对于普通表或段页式的普通表,相对路径为:tablespace name/database oid/表的relfilenode(物理文件名);例如:base/16603/16394 对于段页式的hashbucket表,相对路径为:tablespace name/database oid/Segment Head的逻辑页号_b(bucketid)。例如:base/16603/16394_b1437 表文件的相对路径可以通过pg_relation_filepath(table_name text)查找。分区表的路径可以查看pg_partition系统表和调用pg_partition_filepath(partition_oid)。 合法的path格式列举: global/relNode base/dbNode/relNode pg_tblspc/spcNode/version_dir/dbNode/relNode 对于hashbucket表,在此格式基础上,路径末尾加上_b段页式的逻辑页号。 blocknum bigint -1:所有block的信息(强制从磁盘解析)。 0~MaxBlockNumber:对应block的信息。 relation_type text heap(astore 表) btree(BTree 索引) segment(段页式) read_memory boolean false,从磁盘文件解析; true,首先尝试从共享缓冲区中解析该页面;如果共享缓冲区中不存在,则从磁盘文件解析。 gs_index_recycle_queue(Oid oid, int type, uint32 blkno) 描述:用于解析UBtree索引回收队列信息。 返回值类型:record 表13 gs_index_recycle_queue参数说明 参数 类型 描述 oid Oid 索引文件relfilenode,可以通过select relfilenode from pg_class where relname='name'查询,其中name表示对应的索引文件名字 type int 0,表示解析整个待回收队列 1,表示解析整个空页队列 2,表示解析单个页面 blkno uint32 回收队列页面编号,该参数只有在type=2的时候有效,blkno有效取值范围为1~4294967294。 该函数功能在分布式版本上不支持,有报错提示。 gs_stat_wal_entrytable(int64 idx) 描述:用于输出xlog中预写日志插入状态表的内容。 返回值类型:record 表14 gs_stat_wal_entrytable参数说明 参数类型 参数名 类型 描述 输入参数 idx int64 -1:查询数组所有元素。 0-最大值:具体某个数组元素内容。 输出参数 idx uint64 记录对应数组中的下标 输出参数 endlsn uint64 记录的LSN标签 输出参数 lrc int32 记录对应的LRC 输出参数 status uint32 标识当前entry对应的xlog是否已经完全拷贝到wal buffer中 0:非COPIED 1: COPIED gs_walwriter_flush_position() 描述:输出预写日志的刷新位置。 返回值类型:record 表15 gs_walwriter_flush_position参数说明 参数类型 参数名 类型 描述 输出参数 last_flush_status_entry int32 Xlog flush上一个刷盘的tblEntry下标索引。 输出参数 last_scanned_lrc int32 Xlog flush上一次扫描到的最后一个tblEntry记录的LRC。 输出参数 curr_lrc int32 WALInsertStatusEntry状态表中LRC最新的使用情况,该LRC表示下一个Xlog记录写入时在WALInsertStatusEntry对应的LRC值。 输出参数 curr_byte_pos uint64 Xlog记录写入WAL 文件,最新分配的位置,下一个xlog记录插入点。 输出参数 prev_byte_size uint32 上一个xlog记录的长度。 输出参数 flush_result uint64 当前全局xlog刷盘的位置。 输出参数 send_result uint64 当前主机上xlog发送位置。 输出参数 shm_rqst_write_pos uint64 共享内存中记录的XLogCtl中LogwrtRqst请求的write位置。 输出参数 shm_rqst_flush_pos uint64 共享内存中记录的XLogCtl中LogwrtRqst请求的flush位置。 输出参数 shm_result_write_pos uint64 共享内存中记录的XLogCtl中LogwrtResult的write位置。 输出参数 shm_result_flush_pos uint64 共享内存中记录的XLogCtl中LogwrtResult的flush位置。 输出参数 curr_time text 当前时间。 gs_walwriter_flush_stat(int operation) 描述:用于统计预写日志write与sync的次数频率与数据量,以及xlog文件的信息。 返回值类型:record 表16 gs_walwriter_flush_stat参数说明 参数类型 参数名 类型 描述 输入参数 operation int -1: 关闭统计开关(默认状态为关闭)。 0:打开统计开关。 1:查询统计信息。 2:重置统计信息。 输出参数 write_times uint64 Xlog调用write接口的次数 输出参数 sync_times uint64 Xlog调用sync接口次数 输出参数 total_xlog_sync_bytes uint64 Backend线程请求写入xlog总量统计值 输出参数 total_actual_xlog_sync_bytes uint64 调用sync接口实际刷盘的xlog总量统计值 输出参数 avg_write_bytes uint32 每次调用XLogWrite接口请求写的xlog量 输出参数 avg_actual_write_bytes uint32 实际每次调用write接口写的xlog量 输出参数 avg_sync_bytes uint32 平均每次请求sync的xlog量 输出参数 avg_actual_sync_bytes uint32 实际每次调用sync刷盘xlog量 输出参数 total_write_time uint64 调用write操作总时间统计(单位:us) 输出参数 total_sync_time uint64 调用sync操作总时间统计(单位:us) 输出参数 avg_write_time uint32 每次调用write接口平均时间(单位:us) 输出参数 avg_sync_time uint32 每次调用sync接口平均时间(单位:us) 输出参数 curr_init_xlog_segno uint64 当前最新创建的xlog段文件编号 输出参数 curr_open_xlog_segno uint64 当前正在写的xlog段文件编号 输出参数 last_reset_time text 上一次重置统计信息的时间 输出参数 curr_time text 当前时间 pg_ls_tmpdir() 描述:返回默认表空间下临时目录(pgsql_tmp)中每个文件的名称、大小和最后修改时间。 参数:nan 返回值类型:record 备注:必须是系统管理员或者监控管理员才能执行此函数。 参数类型 参数名 类型 描述 输出参数 name text 文件名称 输出参数 size int8 文件大小(单位:byte) 输出参数 modification timestamptz 文件最后修改时间 pg_ls_tmpdir(oid) 描述:返回指定表空间下临时目录(pgsql_tmp)中每个文件的名称、大小和最后修改时间。 参数:oid 返回值类型:record 备注:必须是系统管理员或者监控管理员才能执行此函数。 参数类型 参数名 类型 描述 输入参数 oid oid 表空间id 输出参数 name text 文件名称 输出参数 size int8 文件大小(单位:byte) 输出参数 modification timestamptz 文件最后修改时间 pg_ls_waldir() 描述:返回预写日志(WAL)目录中每个文件的名称、大小和最后修改时间。 参数:nan 返回值类型:record 备注:必须是系统管理员或者监控管理员才能执行此函数。 参数类型 参数名 类型 描述 输出参数 name text 文件名称 输出参数 size int8 文件大小(单位:byte) 输出参数 modification timestamptz 文件最后修改时间 gs_undo_dump_xid(undo_xid xid) 描述:根据xid解析undo记录 返回值类型:record 表17 gs_undo_dump_xid参数说明 参数类型 参数名 类型 描述 输入参数 undo_xid xid 事务xid 输出参数 undoptr xid 需要解析的undo记录起始位置 输出参数 xactid text 事务id 输出参数 cid text command id 输出参数 reloid text relation oid 输出参数 relfilenode text 文件的relfinode 输出参数 utype text undo记录类型 输出参数 blkprev text 同一个块前一条undo记录的位置 输出参数 blockno text 块号 输出参数 uoffset text undo记录偏移 输出参数 prevurp text 前一条undo记录位置 输出参数 payloadlen text undo记录数据部分长度 输出参数 oldxactid text 前一个事务id 输出参数 partitionoid text 分区oid 输出参数 tablespace text 表空间 输出参数 alreadyread_bytes text 读取到的undo记录长度 输出参数 prev_undorec_len text 前一条undo记录长度 输出参数 td_id text Transaction Directory的id 输出参数 reserved text 是否保存 输出参数 flag text 标识1 输出参数 flag2 text 标识2 输出参数 t_hoff text Undo记录数据头的长度 gs_write_term_log(void) 描述:写入一条日志记录DN节点当前的term值。备DN节点返回false,主DN节点写入成功后返回true。 返回值类型:Boolean 父主题: 系统管理函数
  • 内部函数 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 remote_rto_stat - 排序内部功能函数 bpchar_sortsupport bytea_sortsupport date_sortsupport numeric_sortsupport timestamp_sortsupport 全文检索内部功能函数 dispell_init dispell_lexize dsimple_init dsimple_lexize dsnowball_init dsnowball_lexize dsynonym_init dsynonym_lexize gtsquery_compress gtsquery_consistent gtsquery_decompress gtsquery_penalty gtsquery_picksplit gtsquery_same gtsquery_union ngram_end ngram_lextype ngram_start pound_end pound_lextype pound_start prsd_end prsd_headline prsd_lextype prsd_start thesaurus_init thesaurus_lexize zhprs_end zhprs_getlexeme zhprs_lextype zhprs_start - - - - 内部类型处理函数 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 gin_extract_tsvector 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 hstore_recv 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 cstore_tid_out numeric_bool int2vectorin_extend int2vectorout_extend int2vectorrecv_extend int2vectorsend_extend int8_accum large_seq_rollback_ntree large_seq_upgrade_ntree int16eq int16ge int16gt int16in int16le int16lt int16mi int16mul int16ne int16out int16pl int16recv int16send int16_bool i16toi1 - - - - - 聚合操作内部函数 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 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 json_agg_transfn json_agg_finalfn json_object_agg_transfn json_object_agg_finalfn 哈希内部功能函数 hashbeginscan hashbuild hashbuildempty hashbulkdelete hashcostestimate hashendscan hashgetbitmap hashgettuple hashinsert hashmarkpos hashmerge hashrescan hashrestrpos hashvacuumcleanup hashvarlena jsonb_hash - - - - - 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 GiST索引内部功能函数 gist_box_compress gist_box_consistent gist_box_decompress gist_box_penalty gist_box_picksplit gist_box_same gist_box_union gist_circle_compress gist_circle_consistent gist_point_compress gist_point_consistent gist_point_distance gist_poly_compress gist_poly_consistent gistbeginscan gistbuild gistbuildempty gistbulkdelete gistcostestimate gistendscan gistgetbitmap gistinsert gistmarkpos gistmerge gistrescan gistrestrpos gistvacuumcleanup range_gist_compress range_gist_decompress range_gist_penalty range_gist_picksplit range_gist_same range_gist_union spg_kd_choose spg_kd_config spg_kd_picksplit spg_quad_choose spg_quad_config spg_quad_inner_consistent spg_quad_leaf_consistent spg_quad_picksplit spg_text_choose spg_text_inner_consistent spg_text_leaf_consistent spg_text_picksplit spgbeginscan spgbuild spgbuildempty spgbulkdelete spgcostestimate spgendscan spggetbitmap spggettuple spginsert spgmarkpos spgmerge spgrestrpos spgvacuumcleanup gin_compare_jsonb gin_extract_jsonb gin_extract_jsonb_query gin_consistent_jsonb gin_triconsistent_jsonb gin_consistent_jsonb_hash gin_triconsistent_jsonb_hash gin_extract_jsonb_hash gin_extract_jsonb_query_hash - - - Gin索引内部功能函数 gin_cmp_prefix gin_extract_tsquery gin_tsquery_consistent gin_tsquery_triconsistent ginarrayconsistent ginarrayextract ginarraytriconsistent ginbeginscan ginbuild ginbuildempty ginbulkdelete gincostestimate ginendscan gingetbitmap gininsert ginmarkpos ginmerge ginqueryarrayextract ginrescan ginrestrpos ginvacuumcleanup cginbuild cgingetbitmap - - - - - 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 外表相关内部函数 dist_fdw_handler roach_handler streaming_fdw_handler dist_fdw_validator file_fdw_handler file_fdw_validator log_fdw_handler gc_fdw_handler gc_fdw_validator - - - - - 数据倾斜优化相关内部函数 distributed_count 表统计信息相关内部函数 pgxc_get_stat_dirty_tables pgxc_stat_dirty_tables get_global_stat_all_tables get_summary_stat_all_tables 远程读取数据函数 gs_read_block_from_remote 用于读取非段页式表文件的页面。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 gs_read_segment_block_from_remote 用于读取段页式表文件的页面。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 远程读取文件函数 gs_read_file_size_from_remote 用于读取指定文件的大小,gs_repair_file函数修复文件时,要先获取远端关于这个文件的大小,用于校验本地文件缺失的文件信息,然后将缺失的文件逐个修复。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 gs_read_file_from_remote 用于读取指定的文件,gs_repair_file利用gs_read_file_size_from_remote函数获取文件大小后,依赖这个函数将远端文件逐段读取。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 视图相关引用函数 adm_hist_sqlstat_func adm_hist_sqlstat_idlog_func 父主题: 函数和操作符
  • hotkey特性函数 gs_stat_get_hotkeys_info() 描述:获取本地节点查询的热词信息。 返回值类型:Tuple 示例: 123456 openGauss=# select * from gs_stat_get_hotkeys_info() order by count, hash_value; database_name | schema_name | table_name | key_value | hash_value | count ---------------+-------------+-------------------+-----------+------------+------- regression | public | hotkey_single_col | {22} | 1858004829 | 2 regression | public | hotkey_single_col | {11} | 2011968649 | 2(2 rows) gs_stat_clean_hotkeys() 描述:清理hotkey缓存,重置hotkey状态信息。 返回值类型:bool, 恒为true 示例: 12345 openGauss=# select * from gs_stat_clean_hotkeys(); gs_stat_clean_hotkeys ----------------------- t(1 row) 父主题: 函数和操作符
  • Global SysCache特性函数 当前特性是实验室特性,使用时请联系华为工程师提供技术支持。 gs_gsc_table_detail(database_id default NULL, rel_id default NULL) 描述:查看数据库里全局系统缓存的表元数据。调用该函数的用户需要具有SYSADMIN权限。 参数:指定需要查看全局系统缓存的数据库和表,database_id默认值NULL或者-1表示所有的数据库,0表示共享表,其他数字表示指定数据库及共享表,rel_id表示指定表的oid,默认值NULL或者-1表示所有的表,其他值表示指定的表,database_id不存在会报错,rel_id 不存在查询结果为空。 返回值类型:Tuple select * from gs_gsc_table_detail(-1) limit 1;database_oid | database_name | reloid | relname | relnamespace | reltype | reloftype | relowner | relam | relfilenode | reltablespace | relhasindex | relisshared | relkind | relnatts | relhasoids | relhaspkey | parttype | tdhasuids | attnames | extinfo--------------+---------------+--------+-------------------------+--------------+---------+-----------+----------+-------+-------------+---------------+-------------+-------------+---------+----------+------------+------------+----------+-----------+-----------+---------0 | | 2676 | pg_authid_rolname_index | 11 | 0 | 0 | 10 | 403 | 0 | 1664 | f | t | i | 1 | f | f | n | f | 'rolname' |(1 row) gs_gsc_catalog_detail(database_id default NULL, rel_id default NULL) 描述:查看数据库里全局系统缓存的系统表行信息。调用该函数的用户需要具有SYSADMIN权限。 参数:指定需要查看全局系统缓存的数据库和表,database_id 默认值NULL或者-1表示所有的数据库,0表示共享表,其他数字表示指定数据库及共享表,rel_id表示指定表的id,仅包含所有有系统缓存的系统表,默认值NULL或者-1表示所有的表,其他值表示指定的表,database_id不存在会报错,rel_id不存在结果为空。 返回值类型:Tuple 示例: openGauss=# select * from gs_gsc_catalog_detail(16574, 1260); database_id | database_name | rel_id | rel_name | cache_id | self | ctid | infomask | infomask2 | hash_value | refcount-------------+---------------+--------+-----------+----------+--------+--------+----------+-----------+------------+---------- 0 | | 1260 | pg_authid | 10 | (0, 9) | (0, 9) | 10507 | 26 | 531311568 | 10 0 | | 1260 | pg_authid | 11 | (0, 4) | (0, 4) | 2313 | 26 | 365368336 | 1 0 | | 1260 | pg_authid | 11 | (0, 9) | (0, 9) | 10507 | 26 | 3911517328 | 10 0 | | 1260 | pg_authid | 11 | (0, 7) | (0, 7) | 2313 | 26 | 1317799983 | 1 0 | | 1260 | pg_authid | 11 | (0, 5) | (0, 5) | 2313 | 26 | 3664347448 | 1 0 | | 1260 | pg_authid | 11 | (0, 1) | (0, 1) | 2313 | 26 | 276477273 | 1 0 | | 1260 | pg_authid | 11 | (0, 3) | (0, 3) | 2313 | 26 | 2465837659 | 1 0 | | 1260 | pg_authid | 11 | (0, 8) | (0, 8) | 2313 | 26 | 3205288035 | 1 0 | | 1260 | pg_authid | 11 | (0, 6) | (0, 6) | 2313 | 26 | 131811687 | 1 0 | | 1260 | pg_authid | 11 | (0, 2) | (0, 2) | 2313 | 26 | 1226484587 | 1(10 rows) gs_gsc_clean(database_id default NULL) 描述:清理global syscache的缓存,需要注意,正在使用中的数据不会被清理。调用该函数的用户需要具有SYSADMIN权限。 参数:指定需要清理全局系统缓存的数据库,默认值NULL或者-1表示强制清理所有的数据库全局系统缓存,0表示只淘汰共享表的全局系统缓存,其他数字表示淘汰指定数据库以及共享表的全局系统缓存,database_id不存在会报错。 返回值类型:bool 示例: openGauss=# select * from gs_gsc_clean();gs_gsc_clean--------------t(1 row) gs_gsc_dbstat_info(database_id default NULL) 描述:获取本地节点的GSC的内存统计信息,包括tuple、relation、partition的缓存查询,命中,加载、失效、占用空间信息,DB级别的淘汰信息,线程引用信息,内存占用信息。可以用于定位性能问题,例如当发现hits/searches数组远小于1时,可能是global_syscache_threshold设置太小,导致查询命中率下降。调用该函数的用户需要具有SYSADMIN权限。 参数:指定需要查看的数据库全局系统缓存统计信息,NULL或者-1表示查看所有的数据库,0表示只查看共享表信息,其他数字表示查看指定的数据库和共享表的信息。不合法的输入值,database_id不存在会报错。 返回值类型:Tuple 示例: openGauss=# select * from gs_gsc_dbstat_info();database_id | database_name | tup_searches | tup_hits | tup_miss | tup_count | tup_dead | tup_memory | rel_searches | rel_hits | rel_miss | rel_count | rel_dead | rel_memory | part_searches | part_hits | part_miss | part_count | part_dead | part_memory | total_memory | swapout_count | refcount-------------+---------------+--------------+----------+----------+-----------+----------+------------+--------------+----------+----------+-----------+----------+------------+---------------+-----------+-----------+------------+-----------+-------------+--------------+---------------+---------- 0 | | 300 | 235 | 31 | 22 | 2 | 9752 | 598 | 108 | 18 | 18 | 0 | 77720 | 0 | 0 | 0 | 0 | 0 | 0 | 752912 | 0 | 0 16574 | postgres | 3368 | 2289 | 329 | 273 | 0 | 92593 | 1113 | 524 | 48 | 48 | 0 | 340456 | 0 | 0 | 0 | 0 | 0 | 0 | 4124792 | 0 | 10(2 rows) 父主题: 函数和操作符
  • HashFunc函数 bucketabstime(value,flag) 描述:对abstime格式的数值value计算hash值并找到对应的hashbucket桶。 参数:value为需要转换的数值,类型为abstime,flag为int类型表示数据分布方式,0表示hash分布。 返回值类型:int32 示例: 12345 openGauss=# select bucketabstime('2011-10-01 10:10:10.112',1); bucketabstime--------------- 13954(1 row) bucketbool(value,flag) 描述:对bool格式的数值value计算hash值并找到对应的hashbucket桶。 参数:value为需要转换的数值,类型为bool,flag为int类型表示数据分布方式,0表示hash分布。 返回值类型:int32 示例: 1 2 3 4 5 6 7 8 910 openGauss=# select bucketbool(true,1); bucketbool------------ 1(1 row)openGauss=# select bucketbool(false,1); bucketbool------------ 0(1 row) bucketbpchar(value, flag) 描述:对bpchar格式的数值value计算hash值并找到对应的hashbucket桶。 参数:value为需要转换的数值,类型为bpchar,flag为int类型表示数据分布方式,0表示hash分布。 返回值类型:int32 示例: 12345 openGauss=# select bucketbpchar('test',1); bucketbpchar-------------- 9761(1 row) bucketbytea(value,flag) 描述:对bytea格式的数值value计算hash值并找到对应的hashbucket桶。 参数:value为需要转换的数值,类型为bytea,flag为int类型表示数据分布方式,0表示hash分布。 返回值类型:int32 示例: 12345 openGauss=# select bucketbytea('test',1); bucketbytea------------- 9761(1 row) bucketcash(value,flag) 描述:对money格式的数值value计算hash值并找到对应的hashbucket桶。 参数:value为需要转换的数值,类型为money,flag为int类型表示数据分布方式,0表示hash分布。 返回值类型:int32 示例: 12345 openGauss=# select bucketcash(10::money,1); bucketcash------------ 8468(1 row) getbucket(value,flag) 描述:从分布列获取hashbucket桶。 value为需要输入的数值,类型: “char”,abstime,bigint,boolean,bytea,character varying,character,date,double precision,int2vector,integer,interval,money,name,numeric,nvarchar2,oid,oidvector,raw,real,record,reltime,smalldatetime,smallint,text,time with time zone,time without time zone,timestamp with time zone,timestamp without time zone,tinyint,uuid。 flag表示数据分布方式,类型:integer 返回值类型:integer 示例: 1 2 3 4 5 6 7 8 91011121314151617181920212223 openGauss=# select getbucket(10,'H'); getbucket ----------- 14535(1 row)openGauss=# select getbucket(11,'H'); getbucket ----------- 13449(1 row)openGauss=# select getbucket(11,'R'); getbucket ----------- 13449(1 row)openGauss=# select getbucket(12,'R'); getbucket ----------- 9412(1 row) hash_array(anyarray) 描述:数组哈希,将数组的元素通过哈希函数得到结果,并返回合并结果。 参数:数据类型为anyarray。 返回值类型:integer 示例: 12345 openGauss=# select hash_array(ARRAY[[1,2,3],[1,2,3]]); hash_array ------------ -382888479(1 row) hash_group(key) 描述:流引擎(由于规格变更,当前版本已经不再支持本特性,请不要使用)中,该函数可将Group Clause中的各列计算为一个hash值。 参数:key为Group Clause中各列的值。 返回值类型:32位hash值 示例: 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132 按照步骤依次执行。openGauss=# CREATE TABLE tt(a int, b int,c int,d int);NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by default.HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column.CREATE TABLEopenGauss=# select * from tt; a | b | c | d ---+---+---+---(0 rows)openGauss=# insert into tt values(1,2,3,4);INSERT 0 1openGauss=# select * from tt; a | b | c | d ---+---+---+--- 1 | 2 | 3 | 4(1 row)openGauss=# insert into tt values(5,6,7,8);INSERT 0 1openGauss=# select * from tt; a | b | c | d ---+---+---+--- 1 | 2 | 3 | 4 5 | 6 | 7 | 8(2 rows)openGauss=# select hash_group(a,b) from tt where a=1 and b=2; hash_group ------------ 990882385(1 row) hash_numeric(numeric) 描述:计算Numeric类型的数据的hash值。 参数:Numeric类型的数据。 返回值类型:integer 示例: 12345 openGauss=# select hash_numeric(30); hash_numeric -------------- -282860963(1 row) hash_range(anyrange) 描述:计算range的哈希值。 参数:anyrange类型的数据。 返回值类型:integer 示例: 12345 openGauss=# select hash_range(numrange(1.1,2.2)); hash_range ------------ 683508754(1 row) hashbpchar(character) 描述:计算bpchar的哈希值。 参数:character类型的数据。 返回值类型:integer 示例: 12345 openGauss=# select hashbpchar('hello'); hashbpchar ------------- -1870292951(1 row) hashchar(char) 描述:char和布尔数据转换为哈希值。 参数:char类型的数据或者bool类型的数据。 返回值类型:integer 示例: 1 2 3 4 5 6 7 8 91011 openGauss=# select hashbpchar('hello'); hashbpchar ------------- -1870292951(1 row)openGauss=# select hashchar('true'); hashchar ------------ 1686226652(1 row) hashenum(anyenum) 描述:枚举类型转哈希值。 参数:anyenum类型的数据。 返回值类型:integer 示例: 1234567 openGauss=# CREATE TYPE b1 AS ENUM('good', 'bad', 'ugly');CREATE TYPEopenGauss=# call hashenum('good'::b1); hashenum ------------ 1821213359(1 row) hashfloat4(real) 描述:float4转哈希值。 参数:real类型的数据。 返回值类型:integer 示例: 12345 openGauss=# select hashfloat4(12.1234); hashfloat4 ------------ 1398514061(1 row) hashfloat8(double precision) 描述:float8转哈希值。 参数:double precision类型的数据。 返回值类型:integer 示例: 12345 openGauss=# select hashfloat8(123456.1234); hashfloat8 ------------ 1673665593(1 row) hashinet(inet) 描述:支持inet / cidr上的哈希索引的功能。返回传入inet的hash值。 参数:inet类型的数据。 返回值类型:integer 示例: 12345 openGauss=# select hashinet('127.0.0.1'::inet); hashinet ------------- -1435793109(1 row) hashint1(tinyint) 描述:INT1转哈希值。 参数:tinyint类型的数据。 返回值类型:uint32 示例: 12345 openGauss=# select hashint1(20); hashint1 ------------- -2014641093(1 row) hashint2(smallint) 描述:INT2转哈希值。 参数:smallint类型的数据。 返回值类型:uint32 示例: openGauss=# select hashint2(20000); hashint2 ------------ -863179081(1 row) bucketchar 描述:计算入参的哈希值。 参数:char, integer 返回值类型:integer bucketdate 描述:计算入参的哈希值。 参数:date, integer 返回值类型:integer bucketfloat4 描述:计算入参的哈希值。 参数:real, integer 返回值类型:integer bucketfloat8 描述:计算入参的哈希值。 参数:double precision, integer 返回值类型:integer bucketint1 描述:计算入参的哈希值。 参数:tinyint, integer 返回值类型:integer bucketint2 描述:计算入参的哈希值。 参数:smallint, integer 返回值类型:integer bucketint2vector 描述:计算入参的哈希值。 参数:int2vector, integer 返回值类型:integer bucketint4 描述:计算入参的哈希值。 参数:integer, integer 返回值类型:integer bucketint8 描述:计算入参的哈希值。 参数:bigint, integer 返回值类型:integer bucketinterval 描述:计算入参的哈希值。 参数:interval, integer 返回值类型:integer bucketname 描述:计算入参的哈希值。 参数:name, integer 返回值类型:integer bucketnumeric 描述:计算入参的哈希值。 参数:numeric, integer 返回值类型:integer bucketnvarchar2 描述:计算入参的哈希值。 参数:nvarchar2, integer 返回值类型:integer bucketoid 描述:计算入参的哈希值。 参数:oid, integer 返回值类型:integer bucketoidvector 描述:计算入参的哈希值。 参数:oidvector, integer 返回值类型:integer bucketraw 描述:计算入参的哈希值。 参数:raw, integer 返回值类型:integer bucketreltime 描述:计算入参的哈希值。 参数:reltime, integer 返回值类型:integer bucketsmalldatetime 描述:计算入参的哈希值。 参数:smalldatetime, integer 返回值类型:integer buckettext 描述:计算入参的哈希值。 参数:text, integer 返回值类型:integer buckettime 描述:计算入参的哈希值。 参数:time without time zone, integer 返回值类型:integer buckettimestamp 描述:计算入参的哈希值。 参数:timestamp without time zone, integer 返回值类型:integer buckettimestamptz 描述:计算入参的哈希值。 参数:timestamp with time zone, integer 返回值类型:integer buckettimetz 描述:计算入参的哈希值。 参数:time with time zone, integer 返回值类型:integer bucketuuid 描述:计算入参的哈希值。 参数:uuid, integer 返回值类型:integer bucketvarchar 描述:计算入参的哈希值。 参数:character varying, integer 返回值类型:integer 父主题: 函数和操作符
  • AI特性函数 db4ai_predict_by_bool (text, VARIADIC "any") 描述:获取返回值为布尔型的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法PREDICT BY进行推断任务。 参数:模型名称和推断任务的输入列。 返回值类型:bool db4ai_predict_by_float4(text, VARIADIC "any") 描述:获取返回值为float4的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法PREDICT BY进行推断任务。 参数:模型名称和推断任务的输入列。 返回值类型:float db4ai_predict_by_float8(text, VARIADIC "any") 描述:获取返回值为float8的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法PREDICT BY进行推断任务。 参数:模型名称和推断任务的输入列。 返回值类型:float db4ai_predict_by_int32(text, VARIADIC "any") 描述:获取返回值为int32的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法PREDICT BY进行推断任务。 参数:模型名称和推断任务的输入列。 返回值类型:int db4ai_predict_by_int64(text, VARIADIC "any") 描述:获取返回值为int64的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法PREDICT BY进行推断任务。 参数:模型名称和推断任务的输入列。 返回值类型:int db4ai_predict_by_numeric(text, VARIADIC "any") 描述:获取返回值为numeric的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法PREDICT BY进行推断任务。 参数:模型名称和推断任务的输入列。 返回值类型:numeric db4ai_predict_by_text(text, VARIADIC "any") 描述:获取返回值为字符型的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法PREDICT BY进行推断任务。 参数:模型名称和推断任务的输入列。 返回值类型:text db4ai_predict_by_float8_array(text, VARIADIC "any") 描述:获取返回值为字符型的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法PREDICT BY进行推断任务。 参数:模型名称和推断任务的输入列。 返回值类型:text gs_explain_model(text) 描述:获取返回值为字符型的模型进行模型解析文本化任务。 参数:模型名称。 返回值类型:text 父主题: 函数和操作符
  • 重分布函数 以下函数为重分布期间gs_redis工具所用的系统函数,用户不要主动调用: pg_get_redis_rel_end_ctid(text, name, int, int) pg_get_redis_rel_start_ctid(text, name, int, int) pg_enable_redis_proc_cancelable() pg_disable_redis_proc_cancelable() pg_tupleid_get_blocknum(tid) pg_tupleid_get_offset(tid) pg_tupleid_get_ctid_to_bigint (ctid) 以下函数均针对时序表,所指oid均只针对时序表: redis_ts_table(oid) 描述:以表cpu为例,将old表(redis_old_cpu)的数据逐步转移到新的表(redis_new_cpu),从时间线最后的一个partition开始转移,并在redis_old_cpu的一个partition为空时将此partition删除,在仅余一个partition时将old表删除,并将表恢复至原cpu,为下述job所调用,用户无需手动调用。 返回值类型:void 表1 redis_ts_table参数说明 参数 类型 说明 是否必选 old_oid oid redis_old_cpu的标识。 是 cancel_unuse_redis() 描述:取消时序表重分布。 返回值:void submit_redis_task(oid, interval) 描述:调用函数redis_ts_table,对一个表只允许调用一个job,如需修改,需要先停止该job,再重新调用。 参数:以表cpu为例,参见表2。 返回值类型:void 表2 submit_redis_task参数说明 参数 类型 说明 是否必选 old_oid oid redis_old_cpu的标识。 是 schedule_interval interval 用来计算dbe_task.submit中传入的interval_time,代表此job每间隔多长时间执行一次。 否 submit_all_redis_task(interval) 描述:对于当前连接数据库中所有未完成重分布的表调用函数submit_redis_task。 返回值类型:void 表3 submit_all_redis_task参数说明 参数 类型 说明 是否必选 schedule_interval interval 与submit_redis_task的入参schedule_interval为一个含义。 否 cancel_redis_task(oid) 描述:当某表已转移完成,停止该表的转移的job。 参数:以表cpu为例,为redis_old_cpu的oid。 返回值类型:void cancel_all_redis_task() 描述:对当前连接数据库的所有时序表,停止所有在转移的job。 返回值类型:void submit_cancel_redis_task(interval) 描述:对当前连接数据库的所有时序表创建job,调用函数cancel_redis_task。 参数:间隔多长时间调用此job,默认值1h。 返回值类型:void flush_depend_rule(oid) 描述:以cpu表为例,如果用户直接对redis_old_cpu表和redis_new_cpu执行了某些sql,原rule不能正常工作,可以通过此函数重建相关rule,当前创建rule的语句在pg_rules系统表中,不建议用户作允许的操作以外的行为,直接在redis_new_cpu和redis_old_cpu上执行sql,可能会造成未知错误。 参数:以表cpu为例,为表cpu的oid。 返回值类型:void 父主题: 函数和操作符
  • 注释信息函数 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差不多,不同之处仅在于前者用于共享对象。一些系统表是通用于集群中所有数据库的全局表,因此这些表的注释也是全局存储的。
  • 模式可见性查询函数 每个函数执行检查数据库对象类型的可见性。对于函数和操作符,如果在前面的搜索路径中没有相同的对象名称和参数的数据类型,则此对象是可见的。对于操作符类,则要同时考虑名称和相关索引的访问方法。 所有这些函数都需要使用OID来标识要需要检查的对象。如果用户想通过名称测试对象,则使用OID别名类型(regclass、regtype、regprocedure、regoperator、regconfig或regdictionary)将会很方便。 比如,如果一个表所在的模式在搜索路径中,并且在前面的搜索路径中没有同名的表,则这个表是可见的。它等效于表可以不带明确模式修饰进行引用。比如,要列出所有可见表的名称: 1 openGauss=# 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字节。 12345 openGauss=# SELECT format_type((SELECT oid FROM pg_type WHERE typname='varchar'), 10); format_type ---------------------- character varying(6)(1 row) pg_check_authid(role_oid) 描述:检查是否存在给定oid的角色名 返回类型:bool openGauss=# 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 示例: openGauss=# 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 示例: openGauss=# select * from pg_get_indexdef(16416); pg_get_indexdef ------------------------------------------------------------------------- CREATE INDEX test3_b_idx ON test3 USING btree (b) TABLESPACE pg_default(1 row) pg_get_indexdef(index_oid, dump_schema_only) 描述:获取索引的CREATE INDEX命令,仅用于dump场景。当前版本dump_schema_only参数取值对函数输出结果无影响。 返回类型:text 示例: openGauss=# select * from pg_get_indexdef(16416, true); pg_get_indexdef ------------------------------------------------------------------------- CREATE INDEX test3_b_idx ON test3 USING btree (b) TABLESPACE pg_default(1 row) pg_get_indexdef(index_oid, column_no, pretty_bool) 描述:获取索引的CREATE INDEX命令,或者如果column_no不为零,则只获取一个索引字段的定义。 返回类型:text 示例: openGauss=# 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)openGauss=# select * from pg_get_indexdef(16416, 1, false); pg_get_indexdef ----------------- b(1 row) 备注:pg_get_functiondef为函数返回一个完整的CREATE OR REPLACE FUNCTION语句。 pg_get_keywords() 描述:获取SQL关键字和类别列表 返回类型:setof record 备注:pg_get_keywords返回一组关于描述服务器识别SQL关键字的记录。word列包含关键字。catcode列包含一个分类代码:U表示通用的,C表示列名,T表示类型或函数名,或R表示保留。catdesc列包含了一个可能本地化描述分类的字符串。 pg_get_ruledef(rule_oid) 描述:获取规则的CREATE RULE命令 返回类型:text pg_get_ruledef(rule_oid, pretty_bool) 描述:获取规则的CREATE RULE命令 返回类型:text pg_get_userbyid(role_oid) 描述:获取给定OID的角色名 返回类型:name 备注:pg_get_userbyid通过角色的OID抽取对应的用户名。 pg_check_authid(role_id) 描述:通过role_id检查用户是否存在 返回类型:text openGauss=# select pg_check_authid(20);pg_check_authid-----------------f(1 row) pg_get_viewdef(view_name) 描述:为视图获取底层的SELECT命令 返回类型:text pg_get_viewdef(view_name, pretty_bool) 描述:为视图获取底层的SELECT命令,如果pretty_bool为true,行字段可以包含80列。 返回类型:text 备注:pg_get_viewdef重构出定义视图的SELECT查询。这些函数大多数都有两种形式,其中带有pretty_bool参数,且参数为true时,是"适合打印"的结果,这种格式更容易读。另一种是缺省的格式,更有可能被将来的不同版本用同样的方法解释。如果是用于转储,那么尽可能避免使用适合打印的格式。给pretty-print参数传递false生成的结果和没有这个参数的变种生成的结果是完全一样。 pg_get_viewdef(view_oid) 描述:为视图获取底层的SELECT命令 返回类型:text pg_get_viewdef(view_oid, pretty_bool) 描述:为视图获取底层的SELECT命令,如果pretty_bool为true,行字段可以包含80列。 返回类型:text pg_get_viewdef(view_oid, wrap_column_int) 描述:为视图获取底层的SELECT命令;行字段被换到指定的列数,打印是隐含的。 返回类型:text pg_get_tabledef(table_oid) 描述:根据table_oid获取表定义。 返回类型:text 示例: openGauss=# select * from pg_get_tabledef(16384); pg_get_tabledef ------------------------------------------------------- SET search_path = public; + CREATE TABLE t1 ( + c1 bigint DEFAULT nextval('serial'::regclass)+ ) + WITH (orientation=row, compression=no) + DISTRIBUTE BY HASH(c1) + TO GROUP group1;(1 row) pg_get_tabledef(table_name) 描述:根据table_name获取表定义。 返回类型:text 示例: openGauss=# select * from pg_get_tabledef('t1'); pg_get_tabledef ------------------------------------------------------- SET search_path = public; + CREATE TABLE t1 ( + c1 bigint DEFAULT nextval('serial'::regclass)+ ) + WITH (orientation=row, compression=no) + DISTRIBUTE BY HASH(c1) + TO GROUP group1;(1 row) 备注:pg_get_tabledef重构出表定义的CREATE语句,包含了表定义本身、索引信息、comments信息。对于表对象依赖的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 91011 openGauss=# SELECT pg_typeof(33); pg_typeof ----------- integer(1 row)openGauss=# SELECT typlen FROM pg_type WHERE oid = pg_typeof(33); typlen -------- 4(1 row) collation for (any) 描述:获取参数的排序 返回类型:text 备注:表达式collation for返回传递给他的值的排序。示例: 12345 openGauss=# SELECT collation for (description) FROM pg_description LIMIT 1; pg_collation_for ------------------ "default"(1 row) 值可能是引号括起来的并且模式限制的。如果没有为参数表达式排序,则返回一个null值。如果参数不是排序的类型,则抛出一个错误。 getdistributekey(table_name) 描述:获取一个hash表的分布列。 返回类型:text 示例: 12345 openGauss=# SELECT getdistributekey('item'); getdistributekey ------------------ i_item_sk(1 row)
  • 访问权限查询函数 DDL类权限ALTER、DROP、COMMENT、INDEX、VACUUM属于所有者固有的权限,隐式拥有。 以下访问权限查询函数仅表示用户是否具有某对象上的某种对象权限,即返回记录在系统表acl字段中的对象权限拥有情况。 has_any_column_privilege(user, table, privilege) 描述:指定用户是否有访问表任何列的权限。 表2 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或id。 table text,oid 表 表名称或表id。 privilege text 权限 SELECT:允许对指定表任何列执行SELECT语句。 INSERT:允许对指定表任何列执行INSERT语句。 UPDATE:允许对指定表任何列任意字段执行UPDATE语句。 REFERENCES:允许创建一个外键约束。 COMMENT:允许对指定表任何列执行COMMENT语句。 返回类型:Boolean has_any_column_privilege(table, privilege) 描述:当前用户是否有访问表任何列的权限,合法参数类型见表2。 返回类型:Boolean 备注:has_any_column_privilege检查用户是否以特定方式访问表的任何列。其参数可能与has_table_privilege类似,除了访问权限类型必须是SELECT、INSERT、UPDATE或REFERENCES的一些组合。 拥有表的表级别权限则隐含的拥有该表每列的列级权限,因此如果与has_table_privilege参数相同,has_any_column_privilege总是返回true。但是如果授予至少一列的列级权限也返回成功。 has_column_privilege(user, table, column, privilege) 描述:指定用户是否有访问列的权限。 表3 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或者id。 table text,oid 表名 表的名字或id。 column text,smallint 列名 列的名字或属性号。 privilege text 权限 SELECT:允许对表的指定列执行SELECT语句。 INSERT:允许对表的指定列执行INSERT语句。 UPDATE:允许对表的指定列执行UPDATE语句。 REFERENCES:允许创建一个外键约束。 COMMENT:允许对表的指定列执行COMMENT语句。 返回类型:Boolean has_column_privilege(table, column, privilege) 描述:当前用户是否有访问列的权限,合法参数类型见表3。 返回类型:Boolean 备注:has_column_privilege检查用户是否以特定方式访问一列。其参数类似于has_table_privilege,可以通过列名或属性号添加列。想要的访问权限类型必须是SELECT、INSERT、UPDATE或REFERENCES的一些组合。 拥有表的表级别权限则隐含的拥有该表每列的列级权限。 has_cek_privilege(user, cek, privilege) 描述:指定用户是否有访问列加密密钥CEK的权限。 表4 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或id。 cek text,oid 列加密密钥 列加密密钥名称或id。 privilege text 权限 USAGE:允许使用指定列加密密钥。 DROP:允许删除指定列加密密钥。 返回类型:Boolean has_cmk_privilege(user, cmk, privilege) 描述:指定用户是否有访问客户端加密主密钥CMK的权限。 表5 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或id。 cmk text,oid 客户端加密主密钥 客户端加密主密钥名称或id。 privilege text 权限 USAGE:允许使用指定客户端加密主密钥。 DROP:允许删除指定客户端加密主密钥。 返回类型:Boolean has_database_privilege(user, database, privilege) 描述:指定用户是否有访问数据库的权限。 表6 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或id。 database text,oid 数据库 数据库名字或id。 privilege text 权限 CREATE:对于数据库,允许在数据库里创建新的模式。 TEMPORARY:允许在使用数据库的时候创建临时表。 TEMP:允许在使用数据库的时候创建临时表。 CONNECT:允许用户连接到指定的数据库。 ALTER:允许用户修改指定对象的属性。 DROP:允许用户删除指定的对象。 COMMENT:允许用户定义或修改指定对象的注释。 返回类型:Boolean has_database_privilege(database, privilege) 描述:当前用户是否有访问数据库的权限,合法参数类型见表6。 返回类型:Boolean 备注:has_database_privilege检查用户是否能以在特定方式访问数据库。其参数类似has_table_privilege。访问权限类型必须是CREATE、CONNECT、TEMPORARY或TEMP(等价于TEMPORARY)的一些组合。 has_directory_privilege(user, directory, privilege) 表7 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或id。 directory text,oid 目录 目录名字或者oid。 privilege text 权限 READ:允许对该目录进行读操作。 WRITE:允许对该目录进行写操作。 描述:指定用户是否有访问directory的权限。 返回类型:Boolean has_directory_privilege(directory, privilege) 描述:当前用户是否有访问directory的权限,合法参数类型见表7。 返回类型:Boolean has_foreign_data_wrapper_privilege(user, fdw, privilege) 表8 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或者id。 fdw text,oid 外部数据封装器 外部数据封装器名字或id。 privilege text 权限 USAGE:允许访问外部数据封装器。 描述:指定用户是否有访问外部数据封装器的权限。 返回类型:Boolean has_foreign_data_wrapper_privilege(fdw, privilege) 描述:当前用户是否有访问外部数据封装器的权限,合法参数类型见表8。 返回类型:Boolean 备注:has_foreign_data_wrapper_privilege检查用户是否能以特定方式访问外部数据封装器。其参数类似has_table_privilege。访问权限类型必须是USAGE。 has_function_privilege(user, function, privilege) 表9 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或者id function text,oid 函数 函数名称或id privilege text 权限 EXECUTE:允许使用指定的函数,以及利用这些函数实现的操作符。 ALTER:允许用户修改指定对象的属性。 DROP:允许用户删除指定的对象。 COMMENT:允许用户定义或修改指定对象的注释。 描述:指定用户是否有访问函数的权限。 返回类型:Boolean has_function_privilege(function, privilege) 描述:当前用户是否有访问函数的权限。合法参数类型见表9。 返回类型:Boolean 备注:has_function_privilege检查一个用户是否能以指定方式访问一个函数。其参数类似has_table_privilege。使用文本字符而不是OID声明一个函数时,允许输入的类型和regprocedure数据类型一样(请参考对象标识符类型)。访问权限类型必须是EXECUTE。 has_language_privilege(user, language, privilege) 表10 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或id。 language text,oid 语言 语言名称或id。 privilege text 权限 USAG:对于过程语言,允许用户在创建函数的时候指定过程语言。 描述:指定用户是否有访问语言的权限。 返回类型:Boolean has_language_privilege(language, privilege) 描述:当前用户是否有访问语言的权限。合法参数类型见表10。 返回类型:Boolean 备注:has_language_privilege检查用户是否能以特定方式访问一个过程语言。其参数类似has_table_privilege。访问权限类型必须是USAGE。 has_nodegroup_privilege(user, nodegroup, privilege) 描述:检查用户是否有集群节点访问权限。 返回类型:Boolean 表11 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 已存在用户名称或id。 nodegroup text,oid 集群节点 已存在的集群节点。 privilege text 权限 USAGE:对于子集群,对包含在指定模式中的对象有访问权限时,USAGE允许访问指定子集群下的表对象。 CREATE:对于子集群,允许在子集群中创建表对象。 COMPUTE:针对计算子集群,允许用户在具有compute权限的计算子集群上进行弹性计算。 ALTER:允许用户修改指定对象的属性。 DROP:允许用户删除指定的对象。 has_nodegroup_privilege(nodegroup, privilege) 描述:检查用户是否有集群节点访问权限。 返回类型:Boolean has_schema_privilege(user, schema, privilege) 描述:指定用户是否有访问模式的权限。 返回类型:Boolean has_schema_privilege(schema, privilege) 描述:当前用户是否有访问模式的权限。 返回类型:Boolean 备注:has_schema_privilege检查用户是否能以特定方式访问一个模式。其参数类似has_table_privilege。访问权限类型必须是CREATE、USAGE、ALTER、DROP或COMMENT的一些组合。 has_sequence_privilege(user, sequence, privilege) 描述:指定用户是否有访问序列的权限。 返回类型:Boolean 表12 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 已存在用户名称或id。 sequence text,oid 序列 已存在序列名称或id。 privilege text 权限 USAGE:对于序列,USAGE允许使用nextval函数。 SELECT:允许创建序列。 UPDATE:允许执行UPDATE语句。 ALTER:允许用户修改指定对象的属性。 DROP:允许用户删除指定的对象。 COMMENT:允许用户定义或修改指定对象的注释。 has_sequence_privilege(sequence, privilege) 描述:指定当前用户是否有访问序列的权限。 返回类型:Boolean has_server_privilege(user, server, privilege) 描述:指定用户是否有访问外部服务的权限。 返回类型:Boolean has_server_privilege(server, privilege) 描述:当前用户是否有访问外部服务的权限。 返回类型:Boolean 备注:has_server_privilege检查用户是否能以指定方式访问一个外部服务器。其参数类似has_table_privilege。访问权限类型必须是USAGE、ALTER、DROP或COMMENT之一的值。 has_table_privilege(user, table, privilege) 描述:指定用户是否有访问表的权限。 返回类型:Boolean has_table_privilege(table, privilege) 描述:当前用户是否有访问表的权限。 返回类型:Boolean 备注:has_table_privilege检查用户是否以特定方式访问表。用户可以通过名称或OID(pg_authid.oid)来指定,public表明PUBLIC伪角色,或如果缺省该参数,则使用current_user。该表可以通过名称或者OID声明。如果用名称声明,则在必要时可以用模式进行修饰。如果使用文本字符串来声明所希望的权限类型,这个文本字符串必须是SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCESTRIGGER、ALTER、DROP、COMMENT、INDEX或VACUUM之一的值。可以给权限类型添加WITH GRANT OPTION,用来测试权限是否拥有授权选项。也可以用逗号分隔列出的多个权限类型,如果拥有任何所列出的权限,则结果便为true。 示例: 1 2 3 4 5 6 7 8 91011 openGauss=# SELECT has_table_privilege('tpcds.web_site', 'select'); has_table_privilege --------------------- t (1 row)openGauss=# SELECT has_table_privilege('omm', 'tpcds.web_site', 'select,INSERT WITH GRANT OPTION '); has_table_privilege --------------------- t (1 row) has_tablespace_privilege(user, tablespace, privilege) 描述:指定用户是否有访问表空间的权限。 返回类型:Boolean has_tablespace_privilege(tablespace, privilege) 描述:当前用户是否有访问表空间的权限。 返回类型:Boolean 备注:has_tablespace_privilege检查用户是否能以特定方式访问一个表空间。其参数类似has_table_privilege。访问权限类型必须是CREATE、ALTER、DROP或COMMENT之一的值。 pg_has_role(user, role, privilege) 描述:指定用户是否有角色的权限。 返回类型:Boolean pg_has_role(role, privilege) 描述:当前用户是否有角色的权限。 返回类型:Boolean 备注:pg_has_role检查用户是否能以特定方式访问一个角色。其参数类似has_table_privilege,除了public不能用做用户名。访问权限类型必须是MEMBER或USAGE的一些组合。 MEMBER表示的是角色中的直接或间接成员关系(也就是SET ROLE的权限),而USAGE表示无需通过SET ROLE也直接拥有角色的使用权限。 has_any_privilege(user, privilege) 描述:指定用户是否有某项ANY权限,若同时查询多个权限,只要具有其中一个则返回true。 返回类型:Boolean 表13 参数类型说明 参数名 合法入参类型 描述 取值范围 user name 用户 已存在的用户名。 privilege text ANY权限 可选取值: CREATE ANY TABLE [WITH ADMIN OPTION] ALTER ANY TABLE [WITH ADMIN OPTION] DROP ANY TABLE [WITH ADMIN OPTION] SELECT ANY TABLE [WITH ADMIN OPTION] INSERT ANY TABLE [WITH ADMIN OPTION] UPDATE ANY TABLE [WITH ADMIN OPTION] DELETE ANY TABLE [WITH ADMIN OPTION] CREATE ANY SEQUENCE [WITH ADMIN OPTION] CREATE ANY INDEX [WITH ADMIN OPTION] CREATE ANY FUNCTION [WITH ADMIN OPTION] EXECUTE ANY FUNCTION [WITH ADMIN OPTION] CREATE ANY PACKAGE [WITH ADMIN OPTION] EXECUTE ANY PACKAGE [WITH ADMIN OPTION] CREATE ANY TYPE [WITH ADMIN OPTION]
  • 会话信息函数 current_catalog 描述:当前数据库的名称(在标准SQL中称"catalog")。 返回值类型:name 示例: 12345 openGauss=# SELECT current_catalog; current_database------------------ postgres(1 row) current_database() 描述:当前数据库的名称。 返回值类型:name 示例: 12345 openGauss=# SELECT current_database(); current_database------------------ postgres(1 row) current_query() 描述:由客户端提交的当前执行语句(可能包含多个声明)。 返回值类型:text 示例: 12345 openGauss=# SELECT current_query(); current_query------------------------- SELECT current_query();(1 row) current_schema[()] 描述:当前模式的名称。 返回值类型:name 示例: 12345 openGauss=# SELECT current_schema(); current_schema---------------- public(1 row) 备注:current_schema返回在搜索路径中第一个顺位有效的模式名。(如果搜索路径为空则返回NULL,没有有效的模式名也返回NULL)。如果创建表或者其他命名对象时没有声明目标模式,则将使用这些对象的模式。 current_schemas(Boolean) 描述:搜索路径中的模式名称。 返回值类型:name[] 示例: 12345 openGauss=# SELECT current_schemas(true); current_schemas--------------------- {pg_catalog,public}(1 row) 备注: current_schemas(Boolean)返回搜索路径中所有模式名称的数组。布尔选项决定像pg_catalog这样隐含包含的系统模式是否包含在返回的搜索路径中。 搜索路径可以通过运行时设置更改。命令是: 1 SET search_path TO schema [, schema, ...] current_user 描述:当前执行环境下的用户名。 返回值类型:name 示例: 12345 openGauss=# SELECT current_user; current_user-------------- omm(1 row) 备注:current_user是用于权限检查的用户标识。通常,他表示会话用户,但是可以通过SET ROLE改变他。在函数执行的过程中随着属性SECURITY DEFINER的改变,其值也会改变。 definer_current_user 描述:当前执行环境下的用户名。 返回值类型:name 示例: 12345 openGauss=# SELECT definer_current_user(); definer_current_user---------------------- omm(1 row) 备注:大多数情况下definer_current_user和current_user结果相同,但在存储过程中执行该函数会返回定义当前存储过程的用户名。 pg_current_sessionid() 描述:当前执行环境下的会话ID。 返回值类型:text 示例: 12345 openGauss=# SELECT pg_current_sessionid(); pg_current_sessionid---------------------------- 1579228402.140190434944768(1 row) 备注:pg_current_sessionid()是用于获取当前执行环境下的会话ID。其组成结构为:时间戳.会话ID,当线程池模式开启(enable_thread_pool=on)时,会话ID为SessionID;而线程池模式关闭时,会话ID实际为线程ID。 pg_current_sessid 描述:当前执行环境下的会话ID。 返回值类型:text 示例: openGauss=# select pg_current_sessid();pg_current_sessid-------------------140308875015936(1 row) 备注:在线程池模式下获得当前会话的会话ID,非线程池模式下获得当前会话对应的后台线程ID。 pg_current_userid 描述:当前用户ID。 返回值类型:text 示例: openGauss=# SELECT pg_current_userid();pg_current_userid-------------------10(1 row) tablespace_oid_name() 描述:根据表空间oid,查找表空间名称。 返回值类型:text 示例: 12345 openGauss=# select tablespace_oid_name(1663); tablespace_oid_name--------------------- pg_default(1 row) inet_client_addr() 描述:连接的远端地址。inet_client_addr返回当前客户端的IP地址。 此函数只有在远程连接模式下有效。 返回值类型:inet 示例: 12345 openGauss=# SELECT inet_client_addr(); inet_client_addr------------------ 10.10.0.50(1 row) inet_client_port() 描述:连接的远端端口。inet_client_port返回当前客户端的端口号。 此函数只有在远程连接模式下有效。 返回值类型:int 示例: 12345 openGauss=# SELECT inet_client_port(); inet_client_port------------------ 33143(1 row) inet_server_addr() 描述:连接的本地地址。inet_server_addr返回服务器接收当前连接用的IP地址。 此函数只有在远程连接模式下有效。 返回值类型:inet 示例: 12345 openGauss=# SELECT inet_server_addr(); inet_server_addr------------------ 10.10.0.13(1 row) inet_server_port() 描述:连接的本地端口。inet_server_port返回接收当前连接的端口号。如果是通过Unix-domain socket连接的,则所有这些函数都返回NULL。 此函数只有在远程连接模式下有效。 返回值类型:int 示例: 12345 openGauss=# SELECT inet_server_port(); inet_server_port------------------ 8000(1 row) pg_backend_pid() 描述:当前会话连接的服务进程的进程ID。 返回值类型:int 示例: 12345 openGauss=# SELECT pg_backend_pid(); pg_backend_pid----------------- 140229352617744(1 row) pg_conf_load_time() 描述:配置加载时间。pg_conf_load_time返回最后加载服务器配置文件的时间戳。 返回值类型:timestamp with time zone 示例: 12345 openGauss=# 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 示例: 12345 openGauss=# 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 示例: 12345 openGauss=# SELECT pg_is_other_temp_schema(25356); pg_is_other_temp_schema------------------------- f(1 row) pg_listening_channels() 描述:会话正在侦听的信道名称。 返回值类型:setof text 示例: 1234 openGauss=# 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 示例: 12345 openGauss=# SELECT pg_postmaster_start_time(); pg_postmaster_start_time ------------------------------ 2017-08-30 16:02:54.99854+08(1 row) sessionid2pid() 描述:从sessionid中得到pid信息(如: pv_session_stat中sessid列)。 返回值类型:int8 示例: 123456 openGauss=# select sessionid2pid(sessid::cstring) from pv_session_stat limit 2; sessionid2pid----------------- 139973107902208 139973107902208(2 rows) session_context( 'namespace' , 'parameter') 描述:获取并返回指定namespace下参数parameter的值。 返回值类型:VARCHAR 示例: 12345 openGauss=# SELECT session_context('USERENV', 'CURRENT_SCHEMA'); session_context ------------- public(1 row) 根据当前所在的实际schema而变化。 备注:目前仅支持SESSION_CONTEXT('USERENV', 'CURRENT_SCHEMA') 和SESSION_CONTEXT('USERENV', 'CURRENT_USER')两种格式。 pg_trigger_depth() 描述:触发器的嵌套层次。 返回值类型:int 示例: 12345 openGauss=# SELECT pg_trigger_depth(); pg_trigger_depth ------------------ 0(1 row) opengauss_version() 描述:引用的openGauss内核版本信息。 返回值类型:text 示例: 12345 openGauss=# SELECT opengauss_version(); opengauss_version------------------- 2.0.0(1 row) gs_deployment() 描述:当前系统的部署形态信息,对于分布式系统来说返回的是“Distribute”。 返回值类型:text 示例: 12345 openGauss=# select gs_deployment(); gs_deployment--------------- Distribute(1 row) session_user 描述:会话用户名。 返回值类型:name 示例: 12345 openGauss=# SELECT session_user; session_user-------------- omm(1 row) 备注:session_user通常是连接当前数据库的初始用户,不过系统管理员可以用SET SESSION AUTHORIZATION修改这个设置。 user 描述:等价于current_user。 返回值类型:name 示例: 12345 openGauss=# SELECT user; current_user-------------- omm(1 row) get_shard_oids_byname 描述:输入node的名字返回node的oid。 返回值类型:oid 示例: 12345 openGauss=# select get_shard_oids_byname('datanode1'); get_shard_oids_byname----------------------- {16385}(1 row) getpgusername() 描述:获取数据库用户名。 返回值类型:name 示例: 12345 openGauss=# select getpgusername(); getpgusername --------------- GaussDB_userna(1 row) getdatabaseencoding() 描述:获取数据库编码方式。 返回值类型:name 示例: 12345 openGauss=# select getdatabaseencoding(); getdatabaseencoding --------------------- SQL_ASCII(1 row) version() 描述:版本信息。version返回一个描述服务器版本信息的字符串。 返回值类型:text 示例: 12345 openGauss=# SELECT version(); version----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- openGauss 2.0.0 (GaussDBl VxxxRxxxCxx build f521c606) compiled at 2021-09-16 14:55:22 commit 2935 last mr 6385 release(1 row)
  • 故障注入系统函数 gs_fault_inject(int64, text, text, text, text, text) 描述:该函数不能调用,调用时会报WARNING信息:"unsupported fault injection",并不会对数据库产生任何影响和改变。 参数:int64注入故障类型(0:CLOG扩展页面,1:读取CLOG页面,2:强制死锁)。 text第二个入参在第一入参为2的模式下若为“1”则死锁,其余不死锁;第二个入参在第一入参为0,1时,表示CLOG开始扩展或读取的起始页面号。 text第三个入参在第一入参为0,1时,表示扩展或读取的页面个数。 text第四到六入参为预留参数。 返回值类型:int64 父主题: 函数和操作符
  • 提示信息函数 report_application_error 描述:PL执行过程中,可以使用此函数来抛ERROR。 返回值类型:void 表1 report_application_error参数说明 参数 类型 说明 是否必选 log text error消息的内容。 是 code int4 error消息对应的error code,范围为:-20999 ~ -20000。 否 父主题: 函数和操作符
  • 段页式存储函数 local_segment_space_info(tablespacename TEXT, databasename TEXT) 描述:输出为当前节点,该表空间下所有ExtentGroup的使用信息。 返回值类型: node_name 节点名称 extent_size 该ExtentGroup的extent规格,单位是block数。 forknum Fork号 total_blocks 物理文件总extent数目。 meta_data_blocks 表空间管理的metadata占用的block数,只包括space header,map page等,不包括segment head。 used_data_blocks 存数据占用的extent数目。包括segment head。 utilization 使用的block数占总block数的百分比。即(used_data_blocks+meta_data_block)/total_blocks。 high_water_mark 高水位线,被分配出去的extent,最大的物理页号。超过高水位线的block都没有被使用,可以被直接回收。 例如: select * from local_segment_space_info('pg_default', 'postgres'); node_name | extent_size | forknum | total_blocks | meta_data_blocks | used_data_blocks | utilization | high_water_mark -------------------+-------------+---------+--------------+------------------+------------------+-------------+----------------- dn_6001_6002_6003 | 1 | 0 | 16384 | 4157 | 1 | .253784 | 4158 dn_6001_6002_6003 | 8 | 0 | 16384 | 4157 | 8 | .254211 | 4165(2 rows) global_segment_space_info(tablespacename TEXT, databasename TEXT) 描述:效果跟local_segment_space_info类似,返回的是整个集群中所有节点上的使用信息。 pg_stat_segment_extent_usage(int4 tablespace oid, int4 database oid, int4 extent_type, int4 forknum) 描述:每次返回一个ExtentGroup中,每个被分配出去的extent的使用情况。extent_type表示ExtentGroup的类型,合理取值为[1,5]的int值。在此范围外的会报error。forknum 表示fork号,合法取值为[0,4]的int值,目前只有三种值有效,数据文件为0,FSM文件为1,visibility map文件为2。 返回值类型: 名称 描述 start_block Extent的起始物理页号。 extent_size Extent的大小。 usage_type Extent的使用类型,比如segment head,data extent等。 ower_location 有指针指向该extent的对象的位置。比如data extent的owner就是它所属的segment的head位置。 special_data 该extent在它owner中的位置。该字段的数据跟使用类型有关。比如data extent的special data就是它在所属segment中的extent id。 其中,usage_type为枚举类型,每一项的含义为: Non-bucket table segment head :非hashbucket表的数据段头。 Non-bucket table fork head:非段页式表的fork段头。 Bucket table main head:hashbucket表的主表段头。 Bucket table map block:hashbucket表的MapBlock。 Bucket segment head:hashbucket表每个bucket的段头。 Data extent:数据块。 例如: select * from pg_stat_segment_extent_usage((select oid::int4 from pg_tablespace where spcname='pg_default'), (select oid::int4 from pg_database where datname='postgres'), 1, 0);start_block | extent_size | usage_type | ower_location | special_data-------------+-------------+------------------------+---------------+--------------4157 | 1 | Bucket table main head | 4294967295 | 04158 | 1 | Bucket table map block | 4157 | 04159 | 1 | Bucket table map block | 4157 | 14160 | 1 | Bucket table map block | 4157 | 24161 | 1 | Bucket table map block | 4157 | 34162 | 1 | Bucket table map block | 4157 | 44163 | 1 | Bucket table map block | 4157 | 54164 | 1 | Bucket table map block | 4157 | 64165 | 1 | Bucket table map block | 4157 | 74166 | 1 | Bucket table map block | 4157 | 8 local_space_shrink(tablespacename TEXT, databasename TEXT) 描述:当前节点上对指定段页式空间做物理空间收缩。注意,目前只支持对当前连接的database做shrink。 返回值:空 gs_space_shrink(int4 tablespace, int4 database, int4 extent_type, int4 forknum) 描述:效果跟local_space_shrink类似,对指定段页式空间做物理空间收缩,但参数不同,传入的是tablespace和database的oid,extent_type为[2,5]的int值。注意:extent_type = 1表示段页式元数据,目前不支持对元数据所在的物理文件做收缩。该函数仅限工具使用,不建议用户直接使用。 返回值:空 global_space_shrink(tablespacename TEXT, databasename TEXT) 描述:在cn上执行,对整个集群上所有dn执行段页式存储空间压缩。 注意:global_space_shrink 锁cluster,在此期间不能执行DDL操作。而local_space_shrink不会锁集群。 pg_stat_remain_segment_info() 描述:展示在当前节点上,因为故障等原因,残留的extent。残留extent主要分为两类:分配而未被利用的segment和分配出去而未被利用的extent。两者主要区别在于segment会包含多个extent,回收时,要将segment上的extent一并全部回收。 返回值类型: 名称 描述 space_id 表空间ID db_id 数据库ID block_id Extent的ID type Extent的类型,当前有三种:ALLOC_SEGMENT|DROP_SEGMENT|SHRINK_EXTENT 其中type的三种类型分别表示: ALLOC_SEGMENT:用户创建一张段页式表,当segment刚被分配,但是建表语句所在事务仍未提交时,节点故障,导致该segment被分配后,没有被使用。 DROP_SEGMENT:用户删除段页式表,当该事务成功提交,但是此表的segment页面对应的bit位未被重置,就发生掉电等故障,造成该segment未被使用,也未被释放。 SHRINK_EXTENT:用户对段页式表执行shrink操作,在未对空置出的extent进行释放时,发生掉电等故障,造成该extent残留,无法被重新利用。 例如: select * from pg_stat_remain_segment_info();space_id | db_id | block_id | type----------+-------+----------+------1663 | 16385| 4156| ALLOC_SEGMENT pg_free_remain_segment(int4 spaceId, int4 dbId, int4 segmentId) 描述:释放指定的残留extent。参数取值必须为从函数pg_stat_remain_segment_info中查询获取。函数会对传入值校验,如果指定extent不在记录的残留extent中,将返回错误信息。指定的extent如果为单个extent,则只将其独自释放;如果为一个segment,则会将此segment以及此segment上记录的所有extent释放。 返回值:空 父主题: 系统管理函数
  • 逻辑复制函数 pg_create_logical_replication_slot('slot_name', 'plugin_name') 描述:创建逻辑复制槽。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,仅支持小写字母,数字,以及_?-.字符,且不支持“.”或“..”单独作为复制槽名称。 plugin_name 插件名称。 取值范围:字符串,当前只支持“mppdb_decoding”。 返回值类型:name, text 备注:第一个返回值表示slot_name,第二个返回值表示该逻辑复制槽解码的起始LSN位置。调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。 pg_create_physical_replication_slot('slot_name', 'isDummyStandby') 描述:创建新的物理复制槽。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,仅支持小写字母,数字,以及_?-.字符,且不支持“.”或“..”单独作为复制槽名称。 isDummyStandby 是否是从从备连接主机创建的复制槽。 类型:Boolean 返回值类型:name,text 备注:调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。 pg_drop_replication_slot('slot_name') 描述:删除流复制槽。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,仅支持小写字母,数字,以及_?-.字符,且不支持“.”或“..”单独作为复制槽名称。 返回值类型:void 备注:调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。 pg_logical_slot_peek_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value') 描述:解码并不推进流复制槽(下次解码可以再次获取本次解出的数据)。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,仅支持小写字母,数字,以及_?-.字符,且不支持“.”或“..”单独作为复制槽名称。 LSN 日志的LSN,表示只解码小于等于此LSN的日志。 取值范围:字符串(LSN,格式为xlogid/xrecoff),如'1/2AAFC60'。为NULL时表示不对解码截止的日志位置做限制。 upto_nchanges 解码条数(包含begin和commit)。假设一共有三条事务,分别包含3、5、7条记录,如果upto_nchanges为4,那么会解码出前两个事务共8条记录。解码完第二条事务时发现解码条数记录大于等于upto_nchanges,会停止解码。 取值范围:非负整数。 LSN和upto_nchanges中任一参数达到限制,解码都会结束。 options:此项为可选参数,由一系列options_name和options_value一一对应组成。 include-xids 解码出的data列是否包含xid信息。 取值范围:0或1,默认值为1。 0:设为0时,解码出的data列不包含xid信息。 1:设为1时,解码出的data列包含xid信息。 skip-empty-xacts 解码时是否忽略空事务信息。 取值范围:0或1,默认值为0。 0:设为0时,解码时不忽略空事务信息。 1:设为1时,解码时会忽略空事务信息。 include-timestamp 解码信息是否包含commit时间戳。 取值范围:0或1,默认值为0。 0:设为0时,解码信息不包含commit时间戳。 1:设为1时,解码信息包含commit时间戳。 only-local 是否仅解码本地日志。 取值范围:0或1,默认值为1。 0:设为0时,解码非本地日志和本地日志。 1:设为1时,仅解码本地日志。 force-binary 是否以二进制格式输出解码结果 取值范围:0,默认值为0。 0:设为0时,以文本格式输出解码结果。 white-table-list 白名单参数,包含需要进行解码的schema和表名。 取值范围:包含白名单中表名的字符串,不同的表以','为分隔符进行隔离;使用'*'来模糊匹配所有情况;schema名和表名间以'.'分割,不允许存在任意空白符。例:select * from pg_logical_slot_peek_changes('slot1', NULL, 4096, 'white-table-list', 'public.t1,public.t2'); max-txn-in-memory 内存管控参数,单位为MB,单个事务占用内存大于该值即进行落盘。 取值范围:0~100的整型,默认值为0,即不开启此种管控。 max-reorderbuffer-in-memory 内存管控参数,单位为GB,拼接-发送线程中正在拼接的事务总内存(包含缓存)大于该值则对当前解码事务进行落盘。 取值范围:0~100的整型,默认值为0,即不开启此种管控。 返回值类型:text, xid, text 备注:函数返回解码结果,每一条解码结果包含三列,对应上述返回值类型,分别表示LSN位置、xid和解码内容。调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。 pg_logical_slot_get_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value') 描述:解码并推进流复制槽。 参数说明: 与pg_logical_slot_peek_changes一致,详细内容请参见•pg_logical_slot_peek_ch...。 备注:调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。 pg_logical_slot_peek_binary_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value') 描述:以二进制格解码且不推进流复制槽(下次解码可以再次获取本次解出的数据)。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,仅支持小写字母,数字,以及_?-.字符,且不支持“.”或“..”单独作为复制槽名称。 LSN 日志的LSN,表示只解码小于等于此LSN的日志。 取值范围:字符串(LSN,格式为xlogid/xrecoff),如'1/2AAFC60'。为NULL时表示不对解码截止的日志位置做限制。 upto_nchanges 解码条数(包含begin和commit)。假设一共有三条事务,分别包含3、5、7条记录,如果upto_nchanges为4,那么会解码出前两个事务共8条记录。解码完第二条事务时发现解码条数记录大于等于upto_nchanges,会停止解码。 取值范围:非负整数。 LSN和upto_nchanges中任一参数达到限制,解码都会结束。 options:此项为可选参数,由一系列options_name和options_value一一对应组成。 include-xids 解码出的data列是否包含xid信息。 取值范围:0或1,默认值为1。 0:设为0时,解码出的data列不包含xid信息。 1:设为1时,解码出的data列包含xid信息。 skip-empty-xacts 解码时是否忽略空事务信息。 取值范围:0或1,默认值为0。 0:设为0时,解码时不忽略空事务信息。 1:设为1时,解码时会忽略空事务信息。 include-timestamp 解码信息是否包含commit时间戳。 取值范围:0或1,默认值为0。 0:设为0时,解码信息不包含commit时间戳。 1:设为1时,解码信息包含commit时间戳。 only-local 是否仅解码本地日志。 取值范围:0或1,默认值为1。 0:设为0时,解码非本地日志和本地日志。 1:设为1时,仅解码本地日志。 force-binary 是否以二进制格式输出解码结果。 取值范围:0或1,默认值为0,均以二进制格式输出结果。 white-table-list 白名单参数,包含需要进行解码的schema和表名。 取值范围:包含白名单中表名的字符串,不同的表以','为分隔符进行隔离;使用'*'来模糊匹配所有情况;schema名和表名间以'.'分割,不允许存在任意空白符。例:select * from pg_logical_slot_peek_binary_changes('slot1', NULL, 4096, 'white-table-list', 'public.t1,public.t2'); 返回值类型:text, xid, bytea 备注:函数返回解码结果,每一条解码结果包含三列,对应上述返回值类型,分别表示LSN位置、xid和二进制格式的解码内容。调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。 pg_logical_slot_get_binary_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value') 描述:以二进制格式解码并推进流复制槽。 参数说明:与pg_logical_slot_peek_binary_changes一致,详细内容请参见•pg_logical_slot_peek_bi...。 备注:调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。 pg_replication_slot_advance ('slot_name', 'LSN') 描述:直接推进流复制槽到指定LSN,不输出解码结果。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,不支持除小写字母,数字,以及_?-.以外的字符,且不支持'.'或'..'单独作为复制槽名称。 LSN 推进到的日志LSN位置,下次解码时只会输出提交位置比该LSN大的事务结果。如果输入的LSN比当前流复制槽记录的推进位置还要小,则直接返回;如果输入的LSN比当前最新物理日志LSN还要大,则推进到当前最新物理日志LSN。 取值范围:字符串(LSN,格式为xlogid/xrecoff)。 返回值类型:name, text 备注:返回值分别对应slot_name和实际推进至的LSN。调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。 pg_get_replication_slots() 描述:获取复制槽列表。 示例: openGauss=# select * from pg_get_replication_slots(); slot_name | plugin | slot_type | datoid | active | xmin | catalog_xmin | restart_lsn | dummy_standby | confirmed_flush-----------+----------------+-----------+--------+--------+------+--------------+-------------+---------------+----------------- dn_s1 | | physical | 0 | t | | | 0/23DB14E0 | f | slot1 | mppdb_decoding | logical | 16304 | f | | 60966 | 0/1AFA1BB0 | f | 0/23DA5700(2 rows) 返回值: text, text, text, oid, boolean, xid, xid, text, boolean, text pg_logical_get_area_changes('LSN_start', 'LSN_end', upto_nchanges, 'decoding_plugin', 'xlog_path', 'options_name', 'options_value') 描述:没有ddl的前提下,指定lsn区间进行解码,或者指定xlog文件进行解码。 约束条件如下: 1. 调用接口时,日志级别wal_level=logical,且只有在wal_level=logical期间产生的日志文件才能被解析,如果使用的xlog文件为非logical级别,则解码内容没有对应的值和类型,无其他影响。 2. xlog文件只能被完全同构的dn的某个副本解析,确保可以找到数据对应的元信息,且没有DDL操作和VACUUM FULL。 3. 用户可以找到需要解析的xlog。 4. 用户需要注意一次不要读入过多xlog文件,推荐一次一个,一个xlog文件估测占用内存为xlog文件大小的2~3倍。 5. 无法解码扩容前的xlog文件。 备注:调用该函数的用户需要具有SYSADMIN权限或运维模式打开下的运维管理员的权限。 参数说明: LSN_start 指定开始解码的lsn。 取值范围:字符串(LSN,格式为xlogid/xrecoff),如'1/2AAFC60'。为NULL时表示不对解码截止的日志位置做限制。 LSN_end 指定解码结束的lsn。 取值范围:字符串(LSN,格式为xlogid/xrecoff),如'1/2AAFC60'。为NULL时表示不对解码截止的日志位置做限制。 upto_nchanges 解码条数(包含begin和commit)。假设一共有三条事务,分别包含3、5、7条记录,如果upto_nchanges为4,那么会解码出前两个事务共8条记录。解码完第二条事务时发现解码条数记录大于等于upto_nchanges,会停止解码。 取值范围:非负整数。 LSN和upto_nchanges中任一参数达到限制,解码都会结束。 decoding_plugin 解码插件,指定解码内容输出格式的so插件 取值范围:提供mppdb_decoding和sql_decoding两个插件。 xlog_path 解码插件,指定解码文件的xlog绝对路径,文件级别 取值范围:NULL 或者 xlog文件绝对路径的字符串。 options:此项为可选参数,由一系列options_name和options_value一一对应组成,可以缺省,详见pg_logical_slot_peek_changes。 示例: openGauss=# SELECT pg_current_xlog_location(); pg_current_xlog_location -------------------------- 0/E62E238(1 row)openGauss=# create table t1 (a int primary key,b int,c int);NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "t1_pkey" for table "t1"CREATE TABLEopenGauss=# insert into t1 values(1,1,1);INSERT 0 1openGauss=# insert into t1 values(2,2,2);INSERT 0 1openGauss=# select data from pg_logical_get_area_changes('0/E62E238',NULL,NULL,'sql_decoding',NULL); location | xid | data -----------+-------+--------------------------------------------------- 0/E62E8D0 | 27213 | COMMIT (at 2022-01-26 15:08:03.349057+08) 3020226 0/E6325F0 | 27214 | COMMIT (at 2022-01-26 15:08:07.309869+08) 3020234…… gs_get_parallel_decode_status() 描述:监控各个解码线程的读取日志队列和解码结果队列的长度,以便定位并行解码性能瓶颈。 返回值类型:text, int, text, text, text, int64, int64 示例: openGauss=# select * from gs_get_parallel_decode_status(); slot_name | parallel_decode_num | read_change_queue_length | decode_change_queue_length | reader_lsn | working_txn_cnt | working_txn_memory-----------+---------------------+---------------------------+----------------------------+------------+-----------------+-------------------- slot1 | 2 | queue0: 1005, queue1: 320 | queue0: 63, queue1: 748 | 0/1DCE2578 | 42 | 192927504(1 row) 备注:返回值的slot_name代表复制槽名,parallel_decode_num代表该复制槽的并行解码线程数,read_change_queue_length列出了每个解码线程读取日志队列的当前长度,decode_change_queue_length列出了每个解码线程解码结果队列的当前长度,reader_lsn表示当前reader线程读取的日志位置,working_txn_cnt表示当前拼接-发送线程中正在拼接的事务个数,working_txn_memory代表拼接-发送线程中拼接事务占用总内存(单位字节)。 pg_replication_origin_create (node_name) 描述:用给定的外部名称创建一个复制源,并且返回分配给它的内部ID。 备注:调用该函数的用户需要具有SYSADMIN权限。 参数说明: node_name 待创建的复制源的名称。 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 返回值类型:oid pg_replication_origin_drop (node_name) 描述:删除一个以前创建的复制源,包括任何相关的重放进度。 备注:调用该函数的用户需要具有SYSADMIN权限。 参数说明: node_name 待删除的复制源的名称。 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 pg_replication_origin_oid (node_name) 描述:根据名称查找复制源并返回内部ID。如果没有发现这样的复制源,则抛出错误。 备注:调用该函数的用户需要具有SYSADMIN权限。 参数说明: node_name 要查找的复制源的名称 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 返回值类型:oid pg_replication_origin_session_setup (node_name) 描述:将当前会话标记为从给定的原点回放,从而允许跟踪回放进度。只能在当前没有选择原点时使用。使用pg_replication_origin_session_reset 命令来撤销。 备注:调用该函数的用户需要具有SYSADMIN权限。 参数说明: node_name 复制源名称。 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 pg_replication_origin_session_reset () 描述:取消pg_replication_origin_session_setup()的效果。 备注:调用该函数的用户需要具有SYSADMIN权限。 pg_replication_origin_session_is_setup () 描述:如果在当前会话中选择了复制源则返回真。 备注:调用该函数的用户需要具有SYSADMIN权限。 返回值类型:boolean pg_replication_origin_session_progress (flush) 描述:返回当前会话中选择的复制源的重放位置。 备注:调用该函数的用户需要具有SYSADMIN权限。 参数说明: flush 决定对应的本地事务是否被确保已经刷入磁盘。 取值范围:boolean 返回值类型:LSN pg_replication_origin_xact_setup (origin_lsn, origin_timestamp) 描述:将当前事务标记为重放在给定LSN和时间戳上提交的事务。只能在使用pg_replication_origin_session_setup选择复制源时调用。 备注:调用该函数的用户需要具有SYSADMIN权限。 参数说明: origin_lsn 复制源回放位置。 取值范围:LSN origin_timestamp 事务提交时间。 取值范围:timestamp with time zone pg_replication_origin_xact_reset () 描述:取消pg_replication_origin_xact_setup()的效果。 备注:调用该函数的用户需要具有SYSADMIN权限。 pg_replication_origin_advance (node_name, lsn) 描述: 将给定节点的复制进度设置为给定的位置。这主要用于设置初始位置,或在配置更改或类似的变更后设置新位置。 注意:这个函数的使用不当可能会导致不一致的复制数据。 备注:调用该函数的用户需要具有SYSADMIN权限。 参数说明: node_name 已有复制源名称。 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 lsn 复制源回放位置。 取值范围:LSN pg_replication_origin_progress (node_name, flush) 描述:返回给定复制源的重放位置。 备注:调用该函数的用户需要具有SYSADMIN权限。 参数说明: node_name 复制源名称。 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 flush 决定对应的本地事务是否被确保已经刷入磁盘。 取值范围:boolean pg_show_replication_origin_status() 描述:获取复制源的复制状态。 备注:调用该函数的用户需要具有SYSADMIN权限。 返回值类型: local_id:oid,复制源id。 external_id:text,复制源名称。 remote_lsn:LSN,复制源的lsn位置。 local_lsn:LSN,本地的lsn位置。 pg_get_publication_tables(pub_name) 描述:根据发布的名称,返回对应发布要发布的表的relid列表 参数说明: pub_name 已存在的发布名称 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 返回值类型:relid列表 pg_stat_get_subscription(sub_oid oid) → record 描述: 输入订阅的oid,返回订阅的状态信息。 参数说明: subid 订阅的oid。 取值范围:oid 返回值类型: relid:oid,表的oid。 pid:thread_id,后台apply/sync线程的thread id。 received_lsn:pg_lsn,从发布端接收到的最近的lsn。 last_msg_send_time:timestamp,最近发布端发送消息的时间。 last_msg_receipt_time:timestamp,最新订阅端收到消息的时间。 latest_end_lsn:pg_lsn,最近一次收到保活消息时发布端的lsn。 latest_end_time:timstamp,最近一次收到保活消息的时间。 父主题: 系统管理函数
  • 数据库对象位置函数 pg_relation_filenode(relation regclass) 描述:指定关系的文件节点数。 返回值类型:oid 备注:pg_relation_filenode接受一个表、索引、序列或压缩表的OID或者名称,并且返回当前分配给它的"filenode"数。文件节点是关系使用的文件名称的基本组件。对大多数表来说,结果和pg_class.relfilenode相同,但对确定的系统目录来说, relfilenode为0而且这个函数必须用来获取正确的值。如果传递一个没有存储的关系,比如一个视图,那么这个函数返回NULL。 pg_relation_filepath(relation regclass) 描述:指定关系的文件路径名。 返回值类型:text 备注:pg_relation_filepath类似于pg_relation_filenode,但是它返回关系的整个文件路径名(相对于数据库集群的数据目录PGDATA)。 get_large_table_name(relfile_node text, threshold_size_gb int8) 描述:根据表的文件编码(relfile_node)查询对应的表大小(单位为GB)是否超过阈值(threshold_size_gb),如果超过则返回模式名和表名(形式为schemaname.tablename), 否则返回字符串’null’。 返回值类型:text pg_filenode_relation(tablespacename, relname) 描述:获取到对应的tablespace和relfilenode所对应的表名。 返回类型:regclass pg_partition_filenode(partition_oid) 描述:获取到指定分区表的oid锁对应的filenode。 返回类型:oid pg_partition_filepath(partition_oid) 描述:指定分区的文件路径名。 返回值类型:text
  • 数据库对象尺寸函数 数据库对象尺寸函数计算数据库对象使用的实际磁盘空间。 pg_column_size(any) 描述:存储一个指定的数值需要的字节数(可能压缩过)。 返回值类型:int 备注:pg_column_size显示用于存储某个独立数据值的空间。 12345 openGauss=# SELECT pg_column_size(1); pg_column_size ---------------- 4(1 row) pg_database_size(oid) 描述:指定OID代表的数据库使用的磁盘空间。 返回值类型:bigint pg_database_size(name) 描述:指定名称的数据库使用的磁盘空间。 返回值类型:bigint 备注:pg_database_size接受一个数据库的OID或者名称,然后返回该对象使用的全部磁盘空间。 示例: 12345 openGauss=# SELECT pg_database_size('postgres'); pg_database_size ------------------ 51590112(1 row) pg_relation_size(oid) 描述:指定OID代表的表或者索引所使用的磁盘空间。 返回值类型:bigint get_db_source_datasize() 描述:估算当前数据库非压缩态的数据总容量 返回值类型:bigint 备注:(1)调用该函数前需要做analyze;(2)通过估算列存的压缩率计算非压缩态的数据总容量。 示例: 1234567 openGauss=# analyze;ANALYZEopenGauss=# select get_db_source_datasize(); get_db_source_datasize------------------------ 35384925667(1 row) pg_relation_size(text) 描述:指定名称的表或者索引使用的磁盘空间。表名称可以用模式名修饰。 返回值类型:bigint pg_relation_size(relation regclass, fork text) 描述:指定表或索引的指定分叉树('main','fsm'或'vm')使用的磁盘空间。 返回值类型:bigint pg_relation_size(relation regclass) 描述:pg_relation_size(..., 'main')的简写。 返回值类型:bigint 备注:pg_relation_size接受一个表、索引、压缩表的OID或者名称,然后返回它们的字节大小。 pg_partition_size(oid,oid) 描述:指定OID代表的分区使用的磁盘空间。其中,第一个oid为表的OID,第二个oid为分区的OID。 返回值类型:bigint pg_partition_size(text, text) 描述:指定名称的分区使用的磁盘空间。其中,第一个text为表名,第二个text为分区名。 返回值类型:bigint pg_partition_indexes_size(oid,oid) 描述:指定OID代表的分区的索引使用的磁盘空间。其中,第一个oid为表的OID,第二个oid为分区的OID。 返回值类型:bigint pg_partition_indexes_size(text,text) 描述:指定名称的分区的索引使用的磁盘空间。其中,第一个text为表名,第二个text为分区名。 返回值类型:bigint pg_indexes_size(regclass) 描述:附加到指定表的索引使用的总磁盘空间。 返回值类型:bigint pg_size_pretty(bigint) 描述:将以64位整数表示的字节值转换为具有单位的易读格式。 返回值类型:text pg_size_pretty(numeric) 描述:将以数值表示的字节值转换为具有单位的易读格式。 返回值类型:text 备注:pg_size_pretty用于把其他函数的结果格式化成一种易读的格式,可以根据情况使用kB 、MB 、GB 、TB。 pg_table_size(regclass) 描述:指定的表使用的磁盘空间,不计索引(但是包含TOAST,自由空间映射和可见性映射)。 返回值类型:bigint pg_tablespace_size(oid) 描述:指定OID代表的表空间使用的磁盘空间。 返回值类型:bigint pg_tablespace_size(name) 描述:指定名称的表空间使用的磁盘空间。 返回值类型:bigint 备注: pg_tablespace_size接受一个数据库的OID或者名称,然后返回该对象使用的全部磁盘空间。 pg_total_relation_size(oid) 描述:指定OID代表的表使用的磁盘空间,包括索引和压缩数据。 返回值类型:bigint pg_total_relation_size(regclass) 描述:指定的表使用的总磁盘空间,包括所有的索引和TOAST数据。 返回值类型:bigint pg_total_relation_size(text) 描述:指定名称的表所使用的全部磁盘空间,包括索引和压缩数据。表名称可以用模式名修饰。 返回值类型:bigint 备注:pg_total_relation_size接受一个表或者一个压缩表的OID或者名称,然后返回以字节计的数据和所有相关的索引和压缩表的尺寸。 datalength(any) 描述:计算一个指定的数据需要的字节数(不考虑数据的管理空间和数据压缩,数据类型转换等情况)。 返回值类型:int 备注:datalength用于计算某个独立数据值的空间。 示例: openGauss=# SELECT datalength(1);datalength------------4(1 row) 目前支持的数据类型及计算方式见下表: 数据类型 存储空间 数值类型 整数类型 TINYINT 1 SMALLINT 2 INTEGER 4 BINARY_INTEGER 4 BIGINT 8 任意精度型 DECIMAL 每4位十进制数占两个字节,小数点前后数字分别计算 NUMERIC 每4位十进制数占两个字节,小数点前后数字分别计算 NUMBER 每4位十进制数占两个字节,小数点前后数字分别计算 序列整型 SMALLSERIAL 2 SERIAL 4 BIGSERIAL 8 浮点类型 FLOAT4 4 DOUBLE PRECISION 8 FLOAT8 8 BINARY_DOUBLE 8 FLOAT[(p)] 每4位十进制数占两个字节,小数点前后数字分别计算 DEC[(p[,s])] 每4位十进制数占两个字节,小数点前后数字分别计算 INTEGER[(p[,s])] 每4位十进制数占两个字节,小数点前后数字分别计算 布尔类型 布尔类型 BOOLEAN 1 字符类型 字符类型 CHAR n CHAR(n) n CHARACTER(n) n NCHAR(n) n VARCHAR(n) n CHARACTER 字符实际字节数 VARYING(n) 字符实际字节数 VARCHAR2(n) 字符实际字节数 NVARCHAR2(n) 字符实际字节数 TEXT 字符实际字节数 CLOB 字符实际字节数 时间类型 时间类型 DATE 8 TIME 8 TIMEZ 12 TIMESTAMP 8 TIMESTAMPZ 8 SMALLDATETIME 8 INTERVAL DAY TO SECOND 16 INTERVAL 16 RELTIME 4 ABSTIME 4 TINTERVAL 12
  • 恢复控制函数 恢复信息函数提供了当前备机状态的信息。这些函数可能在恢复期间或正常运行中执行。 pg_is_in_recovery() 描述:如果恢复仍然在进行中则返回true。 返回值类型:bool pg_last_xlog_receive_location() 描述:获取最后接收事务日志的位置并通过流复制将其同步到磁盘。当流复制正在进行时,事务日志将持续递增。如果恢复已完成,则最后一次获取的WAL记录会被静态保持并在恢复过程中同步到磁盘。如果流复制不可用,或还没有开始,这个函数返回NULL。 返回值类型:text pg_last_xlog_replay_location() 描述:获取最后一个事务日志在恢复时重放的位置。如果恢复仍在进行,事务日志将持续递增。如果已经完成恢复,则将保持在恢复期间最后接收WAL记录的值。如果未进行恢复但服务器正常启动时,则这个函数返回NULL。 返回值类型:text pg_last_xact_replay_timestamp() 描述:获取最后一个事务在恢复时重放的时间戳。这是为在主节点上生成事务提交或终止WAL记录的时间。如果在恢复时没有事务重放,则这个函数返回NULL。如果恢复仍在进行,则事务日志将持续递增。如果恢复已经完成,则将保持在恢复期间最后接收WAL记录的值。如果服务器无需恢复就已正常启动,则这个函数返回NULL。 返回值类型:timestamp with time zone 恢复控制函数控制恢复的进程。这些函数可能只在恢复时被执行。 pg_is_xlog_replay_paused() 描述:如果恢复暂停则返回true。 返回值类型:bool pg_xlog_replay_pause() 描述:立即暂停恢复。 返回值类型:void pg_xlog_replay_resume() 描述:如果恢复处于暂停状态,则重新启动。 返回值类型:void gs_get_active_archiving_standby() 描述:查询同一分片内归档备机的信息。返回备机名,备机归档位置和已归档日志个数。 返回值类型:text,text,int gs_pitr_get_warning_for_xlog_force_recycle() 描述:查询开启归档后是否因归档槽不推进日志大量堆积导致日志被回收。 返回值类型:bool gs_pitr_clean_history_global_barriers(stop_barrier_timestamp cstring) 描述:清理指定时间之前所有barrier记录。返回最老的barrier记录。入参为cstring类型,linux时间戳。需要管理员角色或运维管理员角色执行。 返回值类型:text gs_pitr_archive_slot_force_advance(stop_barrier_timestamp cstring) 描述:强制推进归档槽,并清理不需要的barrier记录。返回新的归档槽位置。入参为cstring类型,linux时间戳。需要管理员角色或运维管理员角色执行。 返回值类型:text 当恢复暂停时,没有发生数据库更改。如果是在热备里,所有新的查询将看到一致的数据库快照,并且不会有进一步的查询冲突产生,直到恢复继续。 如果不能使用流复制,则暂停状态将无限的延续。当流复制正在进行时,将连续接收WAL记录,最终将填满可用磁盘空间,这个进度取决于暂停的持续时间,WAL生成的速度和可用的磁盘空间。
  • 备份控制函数 备份控制函数可帮助进行在线备份。 pg_create_restore_point(name text) 描述:为执行恢复创建一个命名点。(需要管理员角色) 返回值类型:text 备注:pg_create_restore_point创建了一个可以用作恢复目的、有命名的事务日志记录,并返回相应的事务日志位置。在恢复过程中,recovery_target_name可以通过这个名称定位对应的日志恢复点,并从此处开始执行恢复操作。避免使用相同的名称创建多个恢复点,因为恢复操作将在第一个匹配(恢复目标)的名称上停止。 pg_current_xlog_location() 描述:获取当前事务日志的写入位置。 返回值类型:text 备注:pg_current_xlog_location使用与前面那些函数相同的格式显示当前事务日志的写入位置。如果是只读操作,不需要系统管理员权限。 pg_current_xlog_insert_location() 描述:获取当前事务日志的插入位置。 返回值类型:text 备注:pg_current_xlog_insert_location显示当前事务日志的插入位置。插入点是事务日志在某个瞬间的“逻辑终点”,而实际的写入位置则是从服务器内部缓冲区写出时的终点。写入位置是可以从服务器外部检测到的终点,如果要归档部分完成事务日志文件,则该操作即可实现。插入点主要用于服务器调试目的。如果是只读操作,不需要系统管理员权限。 gs_current_xlog_insert_end_location() 描述:获取当前事务日志的插入位置。 返回值类型:text 备注:gs_current_xlog_insert_end_location显示当前事务日志的实际插入位置。 pg_start_backup(label text, is_full_backup boolean) 描述:开始执行在线备份(需要管理员角色、复制的角色或运维管理员角色打开operate_mode)。以gs_roach开头的label串为保留命名串,只能由内部备份工具GaussRoach使用。 返回值类型:text 备注:pg_start_backup接受一个用户定义的备份标签(通常这是备份转储文件存放地点的名称)。这个函数向数据库集群的数据目录写入一个备份标签文件,然后以文本方式返回备份的事务日志起始位置。 12345 openGauss=# SELECT pg_start_backup('label_goes_here',true); pg_start_backup----------------- 0/3000020(1 row) pg_stop_backup() 描述:完成执行在线备份。需要管理员角色或复制的角色执行。 返回值类型:text 备注:pg_stop_backup删除pg_start_backup创建的标签文件,并且在事务日志归档区里创建一个备份历史文件。这个历史文件包含给予pg_start_backup的标签、备份的事务日志起始与终止位置、备份的起始和终止时间。返回值是备份的事务日志终止位置。计算出中止位置后,当前事务日志的插入点将自动前进到下一个事务日志文件,这样,结束的事务日志文件可以被立即归档从而完成备份。 pg_switch_xlog() 描述:切换到一个新的事务日志文件。需要管理员角色或运维管理员角色打开operation_mode。 返回值类型:text 备注:pg_switch_xlog移动到下一个事务日志文件,以允许将当前日志文件归档(假定使用连续归档)。返回值是刚完成的事务日志文件的事务日志结束位置+1。如果从最后一次事务日志切换以来没有活动的事务日志,则pg_switch_xlog什么事也不做,直接返回当前事务日志文件的开始位置。 pg_xlogfile_name(location text) 描述:将事务日志的位置字符串转换为文件名。 返回值类型:text 备注:pg_xlogfile_name仅抽取事务日志文件名称。如果给定的事务日志位置恰好位于事务日志文件的交界上,这两个函数都返回前一个事务日志文件的名称。这对于管理事务日志归档来说是非常有利的,因为前一个文件是当前最后一个需要归档的文件。 pg_xlogfile_name_offset(location text) 描述:将事务日志的位置字符串转换为文件名并返回在文件中的字节偏移量。 返回值类型:text,integer 备注:可以使用pg_xlogfile_name_offset从前述函数的返回结果中抽取相应的事务日志文件名称和字节偏移量。例如: 1234567 openGauss=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup());NOTICE: pg_stop_backup cleanup done, waiting for required WAL segments to be archivedNOTICE: pg_stop_backup complete, all required WAL segments have been archived file_name | file_offset --------------------------+-------------000000010000000000000003 | 272(1 row) pg_xlog_location_diff(location text, location text) 描述:计算两个事务日志位置之间在字节上的区别。 返回值类型:numeric pg_cbm_tracked_location() 描述:用于查询cbm解析到的lsn位置。 返回值类型:text pg_cbm_get_merged_file(startLSNArg text, endLSNArg text) 描述:用于将指定lsn范围之内的cbm文件合并成一个cbm文件,并返回合并完的cbm文件名。 返回值类型:text 备注:必须是系统管理员或运维管理员才能获取cbm合并文件。 pg_cbm_get_changed_block(startLSNArg text, endLSNArg text) 描述:用于将指定lsn范围之内的cbm文件合并成一个表,并返回表的各行记录。 返回值类型:records 备注:pg_cbm_get_changed_block返回的表字段包含:合并起始的lsn,合并截止的lsn,表空间oid,库oid,表的relfilenode,表的fork number,表是否被删除,表是否被创建,表是否被截断,表被截断后的页面数,有多少页被修改以及被修改的页号的列表。 pg_cbm_recycle_file(targetLSNArg text) 描述:删除不再使用的cbm文件,并返回删除后的第一条lsn。 返回值类型:text pg_cbm_force_track(targetLSNArg text,timeOut int) 描述:强制执行一次cbm追踪到指定的xlog位置,并返回实际追踪结束点的xlog位置。 返回值类型:text pg_enable_delay_ddl_recycle() 描述:开启延迟DDL功能,并返回开启点的xlog位置。需要管理员角色或运维管理员角色打开operation_mode。 返回值类型:text pg_disable_delay_ddl_recycle(barrierLSNArg text, isForce bool) 描述:关闭延迟DDL功能,并返回本次延迟DDL生效的xlog范围。需要管理员角色或运维管理员角色打开operation_mode。 返回值类型:records pg_enable_delay_xlog_recycle() 描述:开启延迟xlog回收功能,cn修复使用。需要管理员角色或运维管理员角色打开operation_mode。 返回值类型:void pg_disable_delay_xlog_recycle() 描述:关闭延迟xlog回收功能,cn修复使用。需要管理员角色或运维管理员角色打开operation_mode。 返回值类型:void pg_cbm_rotate_file(rotate_lsn text) 描述:等待cbm解析到rotate_lsn之后,强制切换文件,在build期间调用。 返回值类型:void。 gs_roach_stop_backup(backupid text) 描述:停止一个内部备份工具GaussRoach开启的备份。与pg_stop_backup系统函数类似,但更轻量。 返回值类型:text,内容为当前日志的插入位置。 gs_roach_enable_delay_ddl_recycle(backupid name) 描述:开启延迟DDL功能,并返回开启点的日志位置。与pg_enable_delay_ddl_recycle系统函数类似,但更轻量。并且,通过传入不同的backupid,可以支持并发打开延迟DDL。 返回值类型:text,内容为返回开启点的日志位置。 gs_roach_disable_delay_ddl_recycle(backupid text) 描述:关闭延迟DDL功能,并返回本次延迟DDL生效的日志范围,并删除该范围内被用户删除的列存表物理文件。与pg_enable_delay_ddl_recycle系统函数类似,但更轻量。并且,通过传入不同的backupid,可以支持并发关闭延迟DDL功能。 返回值类型:records,内容为本次延迟DDL生效的日志范围。 gs_roach_switch_xlog(request_ckpt bool) 描述:切换当前使用的日志段文件,并且,如果request_ckpt 为true,则触发一个全量检查点。 返回值类型:text,内容为切段日志的位置。 gs_block_dw_io(timeout int, identifier text) 描述:阻塞双写页面刷盘。 参数说明: timeout 阻塞时长。 取值范围:[0, 3600](秒),0为阻塞时长为0。 identifier 此次操作的标识。 取值范围:字符串,不支持除大小写字母,数字,以及下划线(_)以外的字符。 返回值类型:bool 备注:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限,运维管理员角色须打开operate_mode。 gs_is_dw_io_blocked() 描述:查看当前双写页面刷盘是否被阻塞,如果处于阻塞中则返回true。 返回值类型:bool 备注:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限,运维管理员角色须打开operate_mode。
  • 双集群容灾查询函数 gs_get_global_barrier_status() 描述:两地三中心跨Region容灾特性开启后,主集群和灾备集群通过obs进行日志同步,通过barrier日志在主集群的落盘,在灾备集群的回放来确定主集群归档日志进度与灾备集群日志回放进度。gs_get_global_barrier_status用以查询主集群已在obs完成归档的最新global barrier。 返回值类型:text global_barrier_id:全局最新barrier ID global_achive_barrier_id:全局最新归档barrier ID gs_get_local_barrier_status() 描述:两地三中心跨Region容灾特性开启后,主集群和灾备集群通过obs进行日志同步,通过barrier日志在主集群的落盘,在灾备集群的回放来确定主集群归档日志进度与灾备集群日志回放进度。gs_get_local_barrier_status用于查询灾备集群每个节点当前的日志回放情况。 返回值类型:text barrier_id:灾备集群某节点当前回放到的最新barrier ID barrier_lsn:灾备集群某节点当前回放到的最新barrier ID的Log Sequence Number ( LSN ) archive_lsn:灾备集群某节点当前已获得归档日志的位置,该参数当前未生效。 flush_lsn:灾备集群某节点当前已完成刷盘日志位置。 gs_get_global_barriers_status() 描述:两地三中心跨Region容灾特性-基于OBS的解决方案开启后,主数据库实例和多个灾备数据库实例通过obs进行日志同步,通过barrier日志在主数据库实例的落盘,在灾备数据库实例的回放来确定主数据库实例归档日志进度与灾备数据库实例日志回放进度。gs_get_global_barriers_status用以查询主数据库实例已在obs完成归档的最新global barrier。 返回值类型:text slot_name:容灾使用的槽位名。 global_barrier_id:全局最新barrier ID。 global_achive_barrier_id:全局最新归档barrier ID。 gs_upload_obs_file('slot_name', 'src_file', 'dest_file') 描述:两地三中心跨Region容灾特性开启后,主集群上传数据到OBS上的函数。 返回值类型:void slot_name:主集群CN创建的复制槽的名字。 src_file:主集群CN数据目录下的需要上传的文件的文件位置。 dest_file:上传到OBS上对应的文件的文件位置。 gs_download_obs_file('slot_name', 'src_file', 'dest_file') 描述:两地三中心跨Region容灾特性开启后,灾备集群从OBS上下载数据到本地的函数。 返回值类型:void slot_name:灾备集群CN创建的复制槽的名字。 src_file:OBS需要下载的文件的文件位置。 dest_file:灾备集群CN数据目录下需要存放下载文件对应的文件位置。 gs_get_obs_file_context('file_name', 'slot_name') 描述:两地三中心跨Region容灾特性开启后,查询OBS上对应文件的内容。 返回值类型:text file_name:OBS上文件的文件名。 slot_name:主/灾备集群CN创建的复制槽的名字。 gs_set_obs_file_context('file_name', 'file_context','slot_name') 描述:两地三中心跨Region容灾特性开启后,在OBS上创建文件并写入对应的内容。 返回值类型:text file_name:OBS上文件的文件名。 file_context: 写入文件的内容。 slot_name:主/灾备集群CN创建的复制槽的名字。 gs_get_hadr_key_cn() 描述:两地三中心跨Region容灾特性开启后,在OBS上创建文件并写入对应的内容。 返回值类型:text file_name:OBS上文件的文件名。 file_context: 写入文件的内容。 slot_name:主/灾备集群CN创建的复制槽的名字。 gs_hadr_has_barrier_creator() 描述:两地三中心跨Region容灾特性开启后,查询当前cn节点是否存在barrier_creator线程,存在返回true(需要系统管理员角色)。 返回值类型:Boolean 备注:该函数只有在容灾集群启动计划内switchover时使用。 gs_hadr_in_recovery() 描述:两地三中心跨Region容灾特性开启后,查询当前节点是否处于基于目标barrier的日志恢复中,还在恢复中返回true。只有完成日志恢复,才会启动switchover流程中的灾备集群升为生产集群的步骤,需要系统管理员角色执行。 返回值类型:Boolean 该函数只有在容灾集群启动计划内switchover时使用。 gs_streaming_dr_get_switchover_barrier() 描述:两地三中心跨Region容灾-基于流式复制的解决方案中,查询灾备集群参与容灾的CN与首备DN实例是否已接收到switchover barrier日志并完成回放,已完成返回true。灾备集群只有在所有DN实例都完成switchover barrier日志回放,才会启动switchover流程中的灾备数据库实例升为生产数据库实例的步骤(需要系统管理员角色)。 返回值类型:Boolean 备注:该函数只有在流式容灾解决方案中容灾数据库实例启动计划内switchover时使用。 gs_streaming_dr_service_truncation_check() 描述:两地三中心跨Region容灾-基于流式复制的解决方案中,查询主集群参与容灾的CN与主DN实例是否已完成switchover barrier日志发送,已完成返回true。只有完成日志发送,才会启动switchover流程中的生产数据库实例降为灾备数据库实例的步骤(需要系统管理员角色)。 返回值类型:Boolean 备注:该函数只有在容灾数据库实例启动计划内switchover时使用。 gs_hadr_local_rto_and_rpo_stat() 描述:显示流式容灾的本地节点数据库实例和灾备数据库实例日志流控信息(如果在没有参加流式容灾的节点执行,如备DN或部分CN节点,则可能返回空)。 返回值类型:record,具体各个字段的类型和含义如下: 参数 类型 描述 hadr_sender_node_name text 节点的名称,包含主数据库实例和备数据库实例首备。 hadr_receiver_node_name text 备数据库实例首备名称。 source_ip text 主数据库实例主DN IP地址。 source_port int 主数据库实例主DN通信端口。 dest_ip text 备数据库实例首备DN IP地址。 dest_port int 备数据库实例首备DN通信端口。 current_rto int 流控的信息,当前主备数据库实例的日志rto时间(单位:秒)。 target_rto int 流控的信息,目标主备数据库实例间的rto时间(单位:秒)。 current_rpo int 流控的信息,当前主备数据库实例的日志rpo时间(单位:秒)。 target_rpo int 流控的信息,目标主备数据库实例间的rpo时间(单位:秒)。 rto_sleep_time int RTO流控信息,为了达到目标rto,预期主机walsender所需要的睡眠时间(单位:微秒)。 rpo_sleep_time int RPO流控信息,为了达到目标rpo,预期主机xlogInsert所需要的睡眠时间(单位:微秒)。 gs_hadr_remote_rto_and_rpo_stat() 描述:显示流式容灾的其他所有分片或CN数据库实例和灾备数据库实例日志流控信息(一般在CN节点执行;如果在DN节点执行,可能返回为空)。 返回值类型:record,具体各个字段的类型和含义如下: 参数 类型 描述 hadr_sender_node_name text 节点的名称,包含主数据库实例和备数据库实例首备。 hadr_receiver_node_name text 备数据库实例首备名称。 source_ip text 主数据库实例主DN IP地址。 source_port int 主数据库实例主DN通信端口。 dest_ip text 备数据库实例首备DN IP地址。 dest_port int 备数据库实例首备DN通信端口。 current_rto int 流控的信息,当前主备数据库实例的日志rto时间(单位:秒)。 target_rto int 流控的信息,目标主备数据库实例间的rto时间(单位:秒)。 current_rpo int 流控的信息,当前主备数据库实例的日志rpo时间(单位:秒)。 target_rpo int 流控的信息,目标主备数据库实例间的rpo时间(单位:秒)。 rto_sleep_time int RTO流控信息,为了达到目标rto,预期主机walsender所需要的睡眠时间(单位:微秒)。 rpo_sleep_time int RPO流控信息,为了达到目标rpo,预期主机xlogInsert所需要的睡眠时间(单位:微秒)。 父主题: 系统管理函数
  • 咨询锁函数 咨询锁函数用于管理咨询锁(Advisory Lock)。 pg_advisory_lock(key bigint) 描述:获取会话级别的排它咨询锁。 返回值类型:void 备注:pg_advisory_lock锁定应用程序定义的资源,该资源可以用一个64位或两个不重叠的32位键值标识。如果已经有另外的会话锁定了该资源,则该函数将阻塞到该资源可用为止。这个锁是排它的。多个锁定请求将会被压入栈中,因此,如果同一个资源被锁定了三次,它必须被解锁三次以将资源释放给其他会话使用。 pg_advisory_lock(key1 int, key2 int) 描述:获取会话级别的排它咨询锁。 返回值类型:void 备注:只允许sysadmin对键值对(65535, 65535)加会话级别的排它咨询锁,普通用户无权限。 pg_advisory_lock(int4, int4, Name) 描述:获取指定数据库的排它咨询锁。 返回值类型:void pg_advisory_lock_shared(key bigint) 描述:获取会话级别的共享咨询锁。 返回值类型:void pg_advisory_lock_shared(key1 int, key2 int) 描述:获取会话级别的共享咨询锁。 返回值类型:void 备注:pg_advisory_lock_shared类似于pg_advisory_lock,不同之处仅在于共享锁会话可以和其他请求共享锁的会话共享资源,但排它锁除外。 pg_advisory_unlock(key bigint) 描述:释放会话级别的排它咨询锁。 返回值类型:Boolean pg_advisory_unlock(key1 int, key2 int) 描述:释放会话级别的排它咨询锁。 返回值类型:Boolean 备注:pg_advisory_unlock释放先前取得的排它咨询锁。如果释放成功则返回true。如果实际上并未持有指定的锁,将返回false并在服务器中产生一条SQL警告信息。 pg_advisory_unlock(int4, int4, Name) 描述:释放指定数据库上的排它咨询锁。 返回值类型:Boolean 备注:如果释放成功则返回true;如果未持有锁,则返回false。 pg_advisory_unlock_shared(key bigint) 描述:释放会话级别的共享咨询锁。 返回值类型:Boolean pg_advisory_unlock_shared(key1 int, key2 int) 描述:释放会话级别的共享咨询锁。 返回值类型:Boolean 备注:pg_advisory_unlock_shared类似于pg_advisory_unlock,不同之处在于该函数释放的是共享咨询锁。 pg_advisory_unlock_all() 描述:释放当前会话持有的所有咨询锁。 返回值类型:void 备注:pg_advisory_unlock_all将会释放当前会话持有的所有咨询锁,该函数在会话结束的时候被隐含调用,即使客户端异常地断开连接也是一样。 pg_advisory_xact_lock(key bigint) 描述:获取事务级别的排它咨询锁。 返回值类型:void pg_advisory_xact_lock(key1 int, key2 int) 描述:获取事务级别的排它咨询锁。 返回值类型:void 备注:pg_advisory_xact_lock类似于pg_advisory_lock,不同之处在于锁是自动在当前事务结束时释放,而且不能被显式的释放。只允许sysadmin对键值对(65535, 65535)加事务级别的排它咨询锁,普通用户无权限。 pg_advisory_xact_lock_shared(key bigint) 描述:获取事务级别的共享咨询锁。 返回值类型:void pg_advisory_xact_lock_shared(key1 int, key2 int) 描述:获取事务级别的共享咨询锁。 返回值类型:void 备注:pg_advisory_xact_lock_shared类似于pg_advisory_lock_shared,不同之处在于锁是在当前事务结束时自动释放,而且不能被显式的释放。 pg_try_advisory_lock(key bigint) 描述:尝试获取会话级排它咨询锁。 返回值类型:Boolean 备注:pg_try_advisory_lock类似于pg_advisory_lock,不同之处在于该函数不会阻塞以等待资源的释放。它要么立即获得锁并返回true,要么返回false表示目前不能锁定。 pg_try_advisory_lock(key1 int, key2 int) 描述:尝试获取会话级排它咨询锁。 返回值类型:Boolean 备注:只允许sysadmin对键值对(65535, 65535)加会话级别的排它咨询锁,普通用户无权限。 pg_try_advisory_lock_shared(key bigint) 描述:尝试获取会话级共享咨询锁。 返回值类型:Boolean pg_try_advisory_lock_shared(key1 int, key2 int) 描述:尝试获取会话级共享咨询锁。 返回值类型:Boolean 备注:pg_try_advisory_lock_shared类似于pg_try_advisory_lock,不同之处在于该函数尝试获得共享锁而不是排它锁。 pg_try_advisory_xact_lock(key bigint) 描述:尝试获取事务级别的排它咨询锁。 返回值类型:Boolean pg_try_advisory_xact_lock(key1 int, key2 int) 描述:尝试获取事务级别的排它咨询锁。 返回值类型:Boolean 备注:pg_try_advisory_xact_lock类似于pg_try_advisory_lock,不同之处在于如果得到锁,在当前事务的结束时自动释放,而且不能被显式的释放。只允许sysadmin对键值对(65535, 65535)加事务级别的排它咨询锁,普通用户无权限。 pg_try_advisory_xact_lock_shared(key bigint) 描述:尝试获取事务级别的共享咨询锁。 返回值类型:Boolean pg_try_advisory_xact_lock_shared(key1 int, key2 int) 描述:尝试获取事务级别的共享咨询锁。 返回值类型:Boolean 备注:pg_try_advisory_xact_lock_shared类似于pg_try_advisory_lock_shared,不同之处在于如果得到锁,在当前事务结束时自动释放,而且不能被显式的释放。 lock_cluster_ddl() 描述:尝试对集群内所有存活的CN节点获取会话级别的排他咨询锁。 返回值类型:Boolean 备注:只允许sysadmin调用,普通用户无权限。 unlock_cluster_ddl() 描述:尝试对CN节点会话级别的排他咨询锁。 返回值类型:Boolean 父主题: 系统管理函数
  • 双集群容灾控制函数 双集群容灾控制函数可以创建归档槽,归档槽指定了保存物理日志的obs信息。 pg_create_physical_replication_slot_extern(slotname text, dummy_standby bool, extra_content text, need_recycle_xlog bool) 描述:创建OBS/NAS归档槽。slotname 为本次灾备的slotname ,主备必须使用同一个slotname 。dummy_standby标志是主备从还是一主多备,false表示一主多备,true表示主备从。extra_content包含了归档槽的一些信息。对于OBS归档槽,其格式为"OBS;obs_server_ip;obs_bucket_name;obs_ak;obs_sk;archive_path;is_recovery;is_vote_replicate",OBS表示归档槽的归档的介质,obs_server_ip为obs的ip,obs_bucket_name为obs的桶名,obs_ak为obs的ak,obs_sk为obs的sk,archive_path为归档的路径i,is_recovery标志是归档槽还是恢复槽,0表示是归档槽,主要是主集群使用;1表示是恢复槽,主要是灾备集群使用。is_vote_replicate标志是否是投票副本优先,0表示同步备机归档优先,1表示投票副本归档优先,当前版本该字段为预留字段,暂未适配。对于NAS归档槽,其格式为"NAS;archive_path;is_recovery;is_vote_replicate",相比OBS归档槽,缺少了OBS相关的配置信息,其余字段意义相同。 如果是不指定OBS或NAS介质的话,默认指定的是OBS归档槽,其extra_content格式为"obs_server_ip;obs_bucket_name;obs_ak;obs_sk;archive_path;is_recovery;is_vote_replicate"。 need_recycle_xlog标志创建归档槽时是否回收老的归档日志,true表示回收,false表示不回收。 返回值类型:records包含本次灾备的slotname和xlog_position 备注:调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。 例如: 创建OBS归档槽: 12345 openGauss=# select * from pg_create_physical_replication_slot_extern('uuid', false, 'OBS;obs.cn-north-7.ulanqab.huawei.com;dyk;19D772JBCACXX3KWS51D;********;openGauss_uuid/dn1;0;0', false); slotname | xlog_position----------+--------------- uuid |(1 row) 创建NAS归档槽: 1234 openGauss=# select * from pg_create_physical_replication_slot_extern('uuid', false, 'NAS;/data/nas/media/openGauss_uuid/dn1;0;0', false); slotname | xlog_position----------+--------------- uuid | gs_set_obs_delete_location(delete_location text) 描述:设置obs归档日志可删除的位置。delete_location实际为Log Sequence Number ( LSN ),该位置之前的日志在灾备集群已经完成回放并且落盘,可以在obs上进行删除。 返回值类型:xlog_file_name text,表明此次可删除点所在的日志文件名。无论obs删除是否成功,该值都会正常返回。 openGauss=# select gs_set_obs_delete_location('0/54000000'); gs_set_obs_delete_location ----------------------------- 000000010000000000000054_00(1 row) gs_hadr_do_switchover() 描述:异地容灾集群中主集群在执行计划内swithover过程中截断业务的接口。 返回值类型:bool,表明此次业务截断是否成功,是否可以正常进行switchover流程。 gs_set_obs_delete_location_with_slotname(cstring, cstring ) 描述:设置某个容灾关系上obs归档日志可删除的位置。第一个参数实际为Log Sequence Number ( LSN ),该位置之前的日志在灾备数据库实例已经完成回放并且落盘,可以在obs上进行删除,第二个参数为归档槽的名称。 返回值类型:xlog_file_name text,表明此次可删除点所在的日志文件名。无论obs删除是否成功,该值都会正常返回。 gs_streaming_dr_in_switchover() 描述:基于流式复制的异地容灾解决方案中主集群在执行计划内swithover过程中截断业务的接口。 返回值类型:bool,表明此次业务截断是否成功,是否可以正常进行switchover流程。 父主题: 系统管理函数
  • 服务器信号函数 服务器信号函数向其他服务器进程发送控制信号。仅系统管理员有权执行以下函数。 pg_cancel_backend(pid int) 描述:取消一个后端的当前查询。 返回值类型:Boolean 备注:pg_cancel_backend向由pid标识的后端进程发送一个查询取消(SIGINT)信号。一个活动的后端进程的PID可以从pg_stat_activity视图的pid字段找到,或者在服务器上用ps列出数据库进程。具有SYSADMIN权限的用户,后端进程所连接的数据库的属主,后端进程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。 pg_cancel_session(pid bigint, sessionid bigint) 描述:取消一个后台会话。 返回值类型:Boolean 备注:pg_cancel_session的入参可以通过pg_stat_activity中的pid字段和sessionid的字段查询,可以用于清理线程池模式下,非活跃状态的会话。 pg_cancel_invalid_query() 描述:取消一个后端的无效查询。 返回值类型:Boolean 备注:只有系统管理员才有权限取消连接到降级的GTM的后端中运行的查询。 pg_reload_conf() 描述:导致所有服务器进程重新装载它们的配置文件。 返回值类型:Boolean 备注:pg_reload_conf给服务器发送一个SIGHUP信号,导致所有服务器进程重新装载配置文件。 pg_rotate_logfile() 描述:滚动服务器的日志文件。 返回值类型:Boolean 备注:pg_rotate_logfile给日志文件管理器发送信号,告诉它立即切换到一个新的输出文件。这个函数只有在redirect_stderr用于日志输出的时候才有用,否则根本不存在日志文件管理器子进程。 pg_terminate_session(pid bigint, sessionid bigint) 描述:终止一个后台会话。 返回值类型:Boolean 备注:本函数的入参可以通过pg_stat_activity中的pid字段和sessionid的字段查询。可以用于清理线程池模式下,非活跃状态的会话。具有SYSADMIN权限的用户,会话所连接的数据库的属主,会话的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。 pg_terminate_backend(pid int) 描述:终止一个后台线程。仅系统管理员和线程所有者可执行该函数。 返回值类型:Boolean 备注:如果成功,函数返回true,否则返回false。具有SYSADMIN权限的用户,后端线程所连接的数据库的属主,后端线程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。 示例: 1 2 3 4 5 6 7 8 91011 openGauss=# SELECT pid from pg_stat_activity; pid ----------------- 140657876268816(1 rows)openGauss=# SELECT pg_terminate_backend(140657876268816); pg_terminate_backend ---------------------- t(1 row) 父主题: 系统管理函数
  • 快照同步函数 快照同步函数是导出当前快照的标识符。 pg_export_snapshot() 描述:保存当前的快照并返回它的标识符。 返回值类型:text 备注:函数pg_export_snapshot保存当前的快照并返回一个文本字符串标识此快照。这个字符串必须传递给想要导入快照的客户端。可用在set transaction snapshot snapshot_id时导入snapshot,但是应用的前提是该事务设置了SERIALIZABLE或REPEATABLE READ隔离级别。而GaussDB目前是不支持这两种隔离级别的。该函数的输出不可用做set transaction snapshot的输入。 pg_export_snapshot_and_csn() 描述:保存当前的快照并返回它的标识符。比pg_export_snapshot()多返回一列CSN,表示当前快照的CSN。 返回值类型:text 父主题: 系统管理函数
  • 通用文件访问函数 通用文件访问函数提供了对数据库服务器上的文件的本地访问接口。只有数据库集群目录和log_directory目录里面的文件可以访问。使用相对路径访问集群目录里面的文件,以及匹配log_directory配置而设置的路径访问日志文件。只有数据库初始化用户才能使用这些函数。 pg_ls_dir(dirname text) 描述:列出目录中的文件。 返回值类型:setof text 备注:pg_ls_dir返回指定目录里面的除了特殊项“.”和“..”之外所有名称。 示例: 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536 openGauss=# SELECT pg_ls_dir('./'); pg_ls_dir ---------------------- .postgresql.conf.swp postgresql.conf pg_tblspc PG_VERSION pg_ident.conf core server.crt pg_serial pg_twophase postgresql.conf.lock pg_stat_tmp pg_notify pg_subtrans pg_ctl.lock pg_xlog pg_clog base pg_snapshots postmaster.opts postmaster.pid server.key.rand server.key.cipher pg_multixact pg_errorinfo server.key pg_hba.conf pg_replslot .pg_hba.conf.swp cacert.pem pg_hba.conf.lock global gaussdb.state(32 rows) pg_read_file(filename text, offset bigint, length bigint) 描述:返回一个文本文件的内容。 返回值类型:text 备注:pg_read_file返回一个文本文件的一部分,从offset开始,最多返回length字节(如果先达到文件结尾,则小于这个数值)。如果offset是负数,则它是相对于文件结尾回退的长度。如果省略了offset和length,则返回整个文件。仅数据库初始化用户可执行该函数。 示例: 1 2 3 4 5 6 7 8 91011 openGauss=# SELECT pg_read_file('postmaster.pid',0,100); pg_read_file --------------------------------------- 53078 + /srv/BigData/testdir/data1/coordinator+ 1500022474 + 8000 + /var/run/FusionInsight + localhost + 2(1 row) pg_read_binary_file(filename text [, offset bigint, length bigint,missing_ok boolean]) 描述:返回一个二进制文件的内容,只有初始用户有权限调用。 返回值类型:bytea 备注:pg_read_binary_file的功能与pg_read_file类似,除了结果的返回值为bytea类型不一致,相应地不会执行编码检查。与convert_from函数结合,这个函数可以用来读取用指定编码的一个文件。 1 openGauss=# SELECT convert_from(pg_read_binary_file('filename'), 'UTF8'); pg_stat_file(filename text) 描述:返回一个文本文件的状态信息。 返回值类型:record 备注:pg_stat_file返回一条记录,其中包含:文件大小、最后访问时间戳、最后更改时间戳、最后文件状态修改时间戳以及标识传入参数是否为目录的Boolean值。典型的用法: 1 openGauss=# SELECT * FROM pg_stat_file('filename'); 1 openGauss=# SELECT (pg_stat_file('filename')).modification; 示例: 1 2 3 4 5 6 7 8 9101112 openGauss=# SELECT convert_from(pg_read_binary_file('postmaster.pid'), 'UTF8'); convert_from -------------------------------------- 4881 + /srv/BigData/gaussdb/data1/coordinator+ 1496308688 + 25108 + /opt/huawei/Bigdata/gaussdb/gaussdb_tmp + * + 25108001 43352069 +(1 row) 123456789 openGauss=# SELECT * FROM pg_stat_file('postmaster.pid'); size | access | modification | change | creation | isdir ------+------------------------+------------------------+------------------------+----------+------- 117 | 2017-06-05 11:06:34+08 | 2017-06-01 17:18:08+08 | 2017-06-01 17:18:08+08 | | f(1 row) 12345 openGauss=# SELECT (pg_stat_file('postmaster.pid')).modification; modification ------------------------ 2017-06-01 17:18:08+08(1 row) 父主题: 系统管理函数
  • 配置设置函数 配置设置函数是可以用于查询以及修改运行时配置参数的函数。 current_setting(setting_name) 描述:当前的设置值。 返回值类型:text 备注:current_setting用于以查询形式获取setting_name的当前值。和SQL语句SHOW是等效的。比如: 123456 openGauss=# SELECT current_setting('datestyle'); current_setting----------------- ISO, MDY(1 row) set_working_grand_version_num_manually(tmp_version) 描述:通过切换授权版本号来更新和升级高斯数据库的新特性。 返回值类型:void shell_in(type) 描述:为shell类型输入路由(那些尚未填充的类型)。 返回值类型:void shell_out(type) 描述:为shell类型输出路由(那些尚未填充的类型)。 返回值类型:void set_config(setting_name, new_value, is_local) 描述:设置参数并返回新值。 返回值类型:text 备注:set_config将参数setting_name设置为new_value,如果is_local为true,则新值将只应用于当前事务。如果希望新值应用于当前会话,可以使用false,和SQL语句SET是等效的。 示例: 123456 openGauss=# SELECT set_config('log_statement_stats', 'off', false); set_config------------ off(1 row) 父主题: 系统管理函数
共100000条