其他系统函数
openGauss的内建函数和操作符继承自开源PG,下述函数不作赘述,详情请参见PG官方文档。
下述列表为openGauss实现系统内部功能所使用的函数,不推荐使用,若需使用,请联系华为技术支持工程师。
pv_compute_pool_workload()
描述:提供云上加速集群当前负载信息。
返回值类型:record
locktag_decode(locktag text)
描述:从locktag中解析锁的具体信息。
返回值类型:text
smgreq(a smgr, b smgr)
描述:比较两个smgr是否一样。
参数:smgr、 smgr
返回值类型:boolean
smgrne(a smgr, b smgr)
描述:判断两个smgr是否不一样。
参数:smgr、 smgr
返回值类型:boolean
xidin4
描述:输入4字节的xid。
参数:cstring
返回值类型:xid32
set_hashbucket_info
描述:设置哈希桶信息。
参数:text
返回值类型:boolean
hs_concat
描述:拼接两个hstore类型数据。
参数:hstore、 hstore
返回值类型:hstore
hs_contained
描述:判断两个hstore类型数据是否包含,返回值布尔类型。
参数:hstore、 hstore
返回值类型:boolean
hs_contains
描述:判断两个hstore类型数据是否包含,返回值布尔类型。
参数:hstore、 hstore
返回值类型:boolean
hstore
描述:将参数转为hstore类型。
参数:text、 text
返回值类型:hstore
hstore_in
描述:以string格式接收hstore数据。
参数:cstring
返回值类型:hstore
hstore_out
描述:以string格式发送hstore数据。
参数:hstore
返回值类型:cstring
hstore_send
描述:以bytea格式发送hstore数据。
参数:hstore
返回值类型:bytea
hstore_to_array
描述:以text数组格式发送hstore数据。
参数:hstore
返回值类型:text[]
hstore_to_matrix
描述:以text数组格式发送hstore数据。
参数:hstore
返回值类型:text[]
hstore_version_diag
描述:以integer数组格式发送hstore数据。
参数:hstore
返回值类型:integer
int1send
描述:将无符号一字节整数打包放入内部数据缓冲流。
参数:tinyint
返回值类型:bytea
isdefined
描述:判断指定key是否存在。
参数:hstore、 text
返回值类型:boolean
listagg
描述:list类型agg聚集函数。
参数:smallint、 text
返回值类型:text
log_fdw_validator
描述:验证函数。
参数:text[]、 oid
返回值类型:void
nvarchar2typmodin
描述:获取varchar的typmod信息。
参数:cstring[]
返回值类型:integer
nvarchar2typmodout
描述:获取varchar的typmod信息,并构造字符串返回。
参数:integer
返回值类型:cstring
read_disable_conn_file
描述:读取禁止的连接文件。
参数:nan
返回值类型:disconn_mode text、 disconn_host text、 disconn_port text、 local_host text、 local_port text、 redo_finished text
regex_like_m
描述:正则匹配,判断字符串是否符合给定的正则表达式。
参数:text、 text
返回值类型:boolean
update_pgjob
描述:更新job。
参数:bigint、 “char”、 bigint、 timestamp without time zone、 timestamp without time zone、 timestamp without time zone、 timestamp without time zone、 timestamp without time zone、 smallint
返回值类型:void
enum_cmp
描述:枚举类比较函数,用于判断两个枚举类是否相等,以及相对大小。
参数:anyenum、 anyenum
返回值类型:integer
enum_eq
描述:枚举类比较函数,用于实现=符号。
参数:anyenum、 anyenum
返回值类型:boolean
enum_first
描述:返回枚举类中的第一个元素。
参数:anyenum
返回值类型:anyenum
enum_ge
描述:枚举类比较函数,用于实现>=符号。
参数:anyenum、 anyenum
返回值类型:boolean
enum_gt
描述:枚举类比较函数,用于实现>符号。
参数:anyenum、 anyenum
返回值类型:boolean
enum_in
描述:枚举类比较函数,用于判断元素是否在枚举类中。
参数:cstring、 oid
返回值类型:anyenum
enum_larger
描述:枚举类比较函数,用于实现>符号。
参数:anyenum、 anyenum
返回值类型:anyenum
enum_last
描述:返回枚举类中的最后一个元素。
参数:anyenum
返回值类型:anyenum
enum_le
描述:枚举类比较函数,用于实现<=符号。
参数:anyenum、 anyenum
返回值类型:boolean
enum_lt
描述:枚举类比较函数,用于实现<符号。
参数:anyenum、 anyenum
返回值类型:boolean
enum_smaller
描述:枚举类比较函数,用于实现<符号。
参数:anyenum、 anyenum
返回值类型:boolean
node_oid_name
描述:不支持。
参数:oid
返回值类型:cstring
pg_buffercache_pages
描述:读取共享缓冲区的状态数据。
参数:nan
返回值类型:setof record
返回字段说明如下:
pg_check_xidlimit
描述:判断nextxid是否>= xidwarnlimit。
参数:nan
返回值类型:boolean
pg_comm_delay
描述:展示单个DN的通信库时延状态。
参数:nan
返回值类型:text、 text、 integer、 integer、 integer、 integer
pg_comm_recv_stream
描述:展示单个DN上所有的通信库接收流状态。
参数:nan
返回值类型:text、 bigint、 text、 bigint、 integer、 integer、 integer、 text、 bigint、 integer、 integer、 integer、 bigint、 bigint、 bigint、 bigint、 bigint
pg_comm_send_stream
描述:展示单个DN上所有的通信库发送流状态。
参数:nan
返回值类型:text、 bigint、 text、 bigint、 integer、 integer、 integer、 text、 bigint、 integer、 integer、 integer、 bigint、 bigint、 bigint、 bigint、 bigint
pg_comm_status
描述:展示单个DN的通信状态。
参数:nan
返回值类型:text、 integer、 integer、 bigint、 bigint、 bigint、 bigint、 bigint、 integer、 integer、 integer、 integer、 integer
pg_log_comm_status
描述:在DN上打印一些log。
参数:nan
返回值类型:boolean
pg_parse_clog
描述:解析clog获取xid的status。
参数:nan
返回值类型:xid xid、 status text
pg_pool_ping
描述:设置PoolerPing。
参数:boolean
返回值类型:SETOF boolean
pg_resume_bkp_flag
描述:用于备份恢复获取delay xlong标志。
参数:slot_name name
返回值类型:start_backup_flag boolean、 to_delay boolean、 ddl_delay_recycle_ptr text、 rewind_time text
pgfadvise_DONTNEED
描述: 这个函数为当前关系设置DONTNEED标记。这意味着如果需要释放一些内存,操作系统会首先卸载该文件的页。主要思想是卸载不再使用的文件(而不是可能会被使用的页面)。
参数:表名称或者索引名称,支持分区表和二级分区表,不支持列存表和段页式表
示例:
cedric=# select * from pgfadvise_dontneed('pgbench_accounts');
relpath | os_page_size | rel_os_pages | os_pages_free
--------------------+--------------+--------------+---------------
base/11874/16447 | 4096 | 262144 | 342071
base/11874/16447.1 | 4096 | 65726 | 408103
pgfadvise_WILLNEED
描述:这个函数为当前关系设置WILLNEED标记。这意味着操作系统将尝试加载该关系尽可能多的页面。主要思想是在服务器启动时预加载文件,预加载文件时可能使用缓存命中率/失误率以及最可能被使用的关系/索引等信息。
参数:表名称或者索引名称,支持分区表和二级分区表,不支持列存表和段页式表
示例:
cedric=# select * from pgfadvise_willneed('pgbench_accounts');
relpath | os_page_size | rel_os_pages | os_pages_free
--------------------+--------------+--------------+---------------
base/11874/16447 | 4096 | 262144 | 80650
base/11874/16447.1 | 4096 | 65726 | 80650
pgfadvise_NORMAL
描述:这个函数为当前关系设置NORMAL标记。
pgfadvise_SEQUENTIAL
描述:这个函数为当前关系设置SEQUENTIAL标记。
pgfadvise_RANDOM
描述:这个函数为当前关系设置RANDOM标记。
pgfadvise_loader
描述:这个函数允许直接与页面缓存交互。它可以用于根据表示要加载/卸载的页面映射的varbit从内存加载和/或卸载页面。
参数:
- 第一个参数:表名称或者索引名称,支持分区表、二级分区表,不支持列存表和段页式表。
- 第二个参数:forkname,每个关系的数据都存储在一个所谓的fork中: 通常情况下,forkname的默认值是main,该参数可以省略。
- 第三个参数:关系的类型,需要传入一个char字符,如果是普通的关系,该参数为’r’; 如果是分区表,该参数是’p’; 如果是二级分区表,该参数是’s’。
- 第四个参数:如果是分区表,该参数为分区的名称;如果是二级分区表,该参数是二级分区的名称;如果是普通表,填写NULL,如果传入其他值,对于普通表的查询没有影响。
- 第五个参数:段号。
- 第六个参数:布尔值,是否进行load操作。
- 第七个参数:布尔值,是否进行unload操作。
- 第八个参数:databit,该参数一般通过pgfincore()获得。
示例: 该示例使用的关系名称为pgbench_accounts, 段号为0以及任意的varbit映射
-- 加载与卸载
cedric=# select * from pgfadvise_loader('pgbench_accounts', 'r', NULL, 0, true, true, B'111000');
relpath | os_page_size | os_pages_free | pages_loaded | pages_unloaded
------------------+--------------+---------------+--------------+----------------
base/11874/16447 | 4096 | 408376 | 3 | 3
-- 加载
cedric=# select * from pgfadvise_loader('pgbench_accounts', 'r', NULL, 0, true, false, B'111000');
relpath | os_page_size | os_pages_free | pages_loaded | pages_unloaded
------------------+--------------+---------------+--------------+----------------
base/11874/16447 | 4096 | 408370 | 3 | 0
-- 卸载
cedric=# select * from pgfadvise_loader('pgbench_accounts', 'r', NULL, 0, false, true, B'111000');
relpath | os_page_size | os_pages_free | pages_loaded | pages_unloaded
------------------+--------------+---------------+--------------+----------------
base/11874/16447 | 4096 | 408370 | 0 | 3
-- 该函数可以用于恢复一个表在操作系统缓存的状态
-- Snapshot
cedric=# create table pgfincore_snapshot as
cedric-# select 'pgbench_accounts'::text as relname,*,now() as date_snapshot
cedric-# from pgfincore('pgbench_accounts',true);
-- Restore
cedric=# select * from pgfadvise_loader('pgbench_accounts', 'r', NULL, 0, true, true,
(select databit from pgfincore_snapshot
where relname='pgbench_accounts' and segment = 0));
relpath | os_page_size | os_pages_free | pages_loaded | pages_unloaded
------------------+--------------+---------------+--------------+----------------
base/11874/16447 | 4096 | 80867 | 262144 | 0
pgfincore
描述:这个函数提供关于文件系统缓存(页面缓存)的信息。
参数:
- 第一个参数:表名称或者索引名称,支持分区表和二级分区表,不支持列存表和段页式表。
- 第二个参数:forkname,每个关系的数据都存储在一个所谓的fork中: 通常情况下,forkname的默认值是main,该参数可以省略。
- 第三个参数:布尔值,true即需要返回databit, false不需要返回databit;该参数可以省略,省略不返回databit;对于整形或者浮点数,零相当于false, 非零相当于true. (布尔值不建议传入整形或者浮点型)。
示例:
cedric=# select * from pgfincore('pgbench_accounts');
relpath | segment | os_page_size | rel_os_pages | pages_mem | group_mem | os_pages_free | databit | pages_dirty | group_dirty
--------------------+---------+--------------+--------------+-----------+-----------+---------------+---------+-------------+-------------
base/11874/16447 | 0 | 4096 | 262144 | 3 | 1 | 408444 | | 0 | 0
base/11874/16447.1 | 1 | 4096 | 65726 | 0 | 0 | 408444 | | 0 | 0
对于一个指定的关系,该函数返回包括以下字段:
- relpath : 该关系的路径。
- segment : 被分析的段号。
- os_page_size : 一个页面的大小。
- rel_os_pages : 该关系的总页面数。
- pages_mem : 关系在页面缓存中的页面总数。 (不是来自PostgreSQL的共享缓冲区,而是操作系统缓存)。
- group_mem : 相邻pages_mem的组数。
- os_page_free : 操作系统页面缓存中空闲的页面数。
- databit : 该文件的varbit映射,因为该字段的大小关系,若需要输出该字段,需要使用pgfincore(‘pgbench_accounts’,true)来激活它。如果对于一个没有插入数据的表,使用true激活后,该字段不回显数值。
- pages_dirty : 如果定义了HAVE_FINCORE常量,平台将提供相关的信息,和pages_mem类似,只不过是对于脏页面的。
- group_dirty : 如果定义了HAVE_FINCORE常量,平台将提供相关的信息,和group_mem类似,只不过是对于脏页面的。
pgsysconf
描述: 这个函数输出操作系统块的大小,操作系统页面缓冲区中空闲页面的数量。
示例:
cedric=# select * from pgsysconf();
os_page_size | os_pages_free | os_total_pages
--------------+---------------+----------------
4096 | 80431 | 4094174
pgsysconf_pretty
描述: 该函数的功能同上,不同之处在于该函数进行了单位转换,便于阅读。
示例:
cedric=# select * from pgsysconf_pretty();
os_page_size | os_pages_free | os_total_pages
--------------+---------------+----------------
4096 bytes | 314 MB | 16 GB
pgfincore_drawer
描述: 一个非常简单的渲染器。这个函数需要一个varbit类型的参数。通常,这个参数的值来源于pgfincore函数的databit返回字段。databit字段的值由0和1组成,如果是0,意味着该页不在操作系统页面缓存中,如果是1,则意味着该页在操作系统页面缓存中。
示例:
cedric=# select * from pgfincore_drawer(B'000111');
drawer
--------------
...
cedric=# select * from pgfincore_drawer(B'111000');
drawer
--------------
...
psortoptions
描述:返回psort属性。
参数:text[]、 boolean
返回值类型:bytea
xideq4
描述:对比两个xid类型的值是否相等。
参数:xid32、 xid32
返回值类型:boolean
xideqint8
描述:对比xid类型和int8类型的值是否相等。
参数:xid、 bigint
返回值类型:boolean
xidlt
描述:返回xid1 < xid2是否成立。
参数:xid、 xid
返回值类型:boolean
xidlt4
描述:返回xid1 < xid2是否成立。
参数:xid32、 xid32
返回值类型:boolean