华为云用户手册

  • 废弃函数 GaussDB Kernel中下列函数在最新版本中已废弃: gs_wlm_get_session_info gs_wlm_get_user_session_info pgxc_get_csn pgxc_get_stat_dirty_tables pgxc_get_thread_wait_status pgxc_gtm_snapshot_status pgxc_is_committed pgxc_lock_for_backup pgxc_lock_for_sp_database pgxc_lock_for_transfer pgxc_log_comm_status pgxc_max_datanode_size pgxc_node_str pgxc_pool_check pgxc_pool_connection_status pgxc_pool_reload pgxc_prepared_xact pgxc_snapshot_status pgxc_stat_dirty_tables pgxc_unlock_for_sp_database pgxc_unlock_for_transfer pgxc_version array_extend prepare_statement_status remote_rto_stat dbe_perf.global_slow_query_info dbe_perf.global_slow_query_info_bytime dbe_perf.global_slow_query_history pg_stat_get_pooler_status pg_stat_get_wlm_node_resource_info pg_stat_get_wlm_session_info_internal DBE_PERF.get_wlm_controlgroup_ng_config() DBE_PERF.get_wlm_user_resource_runtime() global_space_shrink pg_pool_validate gs_stat_ustore table_skewness(text) table_skewness(text, text, text) - - - - 父主题: 函数和操作符
  • 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 示例: gaussdb=# 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 示例: gaussdb=# 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 示例: gaussdb=# 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) 父主题: 函数和操作符
  • 层次递归查询函数 层次递归查询语句中可使用以下函数返回连接路径上的相关信息。 sys_connect_by_path(col, separator) 描述:仅在层次递归查询中适用,用于返回从根节点到当前行的连接路径。 参数col为在路径中显示的列的名称,只支持类型为CHAR/VARCHAR/NVARCHAR2/TEXT的列,参数separator为路径节点之间的分隔符。 返回值类型:text 示例: 12345678 gaussdb=# select *, sys_connect_by_path(name, '-') from connect_table start with id = 1 connect by prior id = pid; id | pid | name | sys_connect_by_path----+-----+------+--------------------- 1 | 0 | a | -a 2 | 1 | b | -a-b 4 | 1 | d | -a-d 3 | 2 | c | -a-b-c(4 rows) connect_by_root(col) 描述:仅在层次递归查询中适用,用于返回当前行最顶层父亲行中某列的值。 参数col为输出列的名称。 返回值类型:即为所指定列col的数据类型。 示例: 12345678 gaussdb=# select *, connect_by_root(name) from connect_table start with id = 1 connect by prior id = pid; id | pid | name | connect_by_root----+-----+------+----------------- 1 | 0 | a | a 2 | 1 | b | a 4 | 1 | d | a 3 | 2 | c | a(4 rows) 父主题: 函数和操作符
  • 其它函数 plan_seed() 描述:获取前一次查询语句的seed值(内部使用)。 返回值类型:int pg_stat_get_env() 描述:获取当前节点的环境变量信息,仅sysadmin和monitor admin可以访问。 返回值类型:record 示例: gaussdb=# select pg_stat_get_env(); pg_stat_get_env--------------------------------------------------------------------------------------------------------------------------------------- (sgnode,"localhost,XXX.XXX.XXX.XXX",28589,26000,/home/omm,/home/omm/data/single_node,pg_log)(1 row) pg_catalog.plancache_clean() 描述:清理节点上无人使用的全局计划缓存。 返回值类型:bool pg_catalog.plancache_status() 描述:显示节点上全局计划缓存的信息,函数返回信息和GLOBAL_PLANCACHE_STATUS一致。 返回值类型:record textlen(text) 描述:提供查询text的逻辑长度的方法。 返回值类型:int threadpool_status() 描述:显示线程池中工作线程及会话的状态信息。 返回值类型:record get_local_active_session() 描述:提供当前节点保存在内存中的历史活跃session状态的采样记录。 返回值类型:record pg_stat_get_thread() 描述:提供当前节点下所有线程的状态信息,sysadmin和monitor admin用户可以查看所有线程信息,普通用户查看本用户的线程信息。 返回值类型:record pg_stat_get_sql_count() 描述:提供当前节点中用户执行的SELECT/UPDATE/INSERT/DELETE/MERGE INTO语句的计数结果,sysadmin和monitor admin用户可以查看所有用户的信息,普通用户查看本用户的统计信息。 返回值类型:record pg_stat_get_data_senders() 描述:提供当前活跃的数据复制发送线程的详细信息。 返回值类型:record get_wait_event_info() 描述:提供wait event事件的具体信息。 返回值类型:record generate_wdr_report(begin_snap_id bigint, end_snap_id bigint, report_type cstring, report_scope cstring, node_name cstring) 描述:基于两个snapshot生成系统诊断报告。需要在postgres库下执行,默认初始化用户或monadmin用户可以访问。只可在系统库中查询到结果,用户库中无法查询。 返回值类型:record 表1 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时,需要把该参数指定为对应节点的名称。(节点名称可以执行select * from pg_node_env;查询)。 在report_scope为cluster时,该值可以省略或者指定为空或NULL。 cluster:省略/空/NULL node:GaussDB Kernel中的节点名称 create_wdr_snapshot() 描述:手工生成系统诊断快照,该函数需要sysadmin权限。 返回值类型: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 描述:用来清理数据库节点内存中的Unique SQL(需要sysadmin权限)。 返回值类型:bool 表2 reset_unique_sql参数说明 参数 类型 描述 scope text 清理范围类型: 'GLOBAL':清理所有的节点,如果是'GLOBAL',则只可以为主节点执行此函数。 'LOCAL':清理本节点。 clean_type text 'BY_USERID':按用户ID来进行清理Unique SQL。 'BY_CNID':按主节点的ID来进行清理Unique SQL。 'ALL':全部清理。 clean_value int8 具体清理type对应的清理值。 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) 描述:调整任务到数据库主节点队列的最前端。 返回值类型:boolean true:成功。 false:失败。 gs_wlm_switch_cgroup(pid int, cgroup text) 描述:调整作业的优先级到新控制组。 返回值类型:boolean true:成功。 false:失败。 pv_session_memctx_detail(threadid tid, MemoryContextName text) 描述:将线程tid的MemoryContextName内存上下文信息记录到“$GAUSS LOG /pg_log/${node_name}/dumpmem”目录下的“threadid_timestamp.log”文件中。其中threadid可通过视图GS_SESSION_MEMORY_DETAIL中的sessid后获得。在正式发布的版本中仅接受MemoryContextName为空串(两个单引号表示输入为空串,即'')的输入,此时会记录所有的内存上下文信息,否则不会有任何操作。该函数需要管理员权限的用户才能执行。 返回值类型:boolean true:成功。 false:失败。 pg_shared_memctx_detail(MemoryContextName text) 描述:将MemoryContextName内存上下文信息记录到“$GAUSSLOG/pg_log/${node_name}/dumpmem”目录下的“threadid_timestamp.log”文件中。该函数功能仅在DEBUG版本中供内部开发人员和测试人员调试使用,在正式发布版本中调用该函数不会有任何操作。该函数需要管理员权限的用户才能执行。 返回值类型:boolean true:成功。 false:失败。 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 表3 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 gs_wlm_node_recover(boolean isForce) 描述:获取当前内存中记录的TopSQL查询语句级别相关统计信息,当传入的参数不为0时,会将这部分信息从内存中清理掉。 返回值类型:record gs_wlm_node_clean(cstring nodename) 描述:动态负载管理(当前特性是实验室特性,使用时请联系华为工程师提供技术支持)节点故障后做数据清理操作。该函数只有管理员用户可以执行,属于数据库实例管理模块调用的,不建议用户直接调用。该视图在集中式和单机环境上不支持。 返回值类型:bool gs_cgroup_map_ng_conf(group name) 描述:读取指定逻辑数据库的cgroup配置文件。 返回值类型:record gs_wlm_switch_cgroup(sess_id int8, cgroup name) 描述:切换指定会话的控制组。 返回值类型:record 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() 该函数当前版本暂不可用。 dbe_perf.get_global_full_sql_by_timestamp(start_timestamp timestamp with time zone, end_timestamp timestamp with time zone) 描述:获取数据库级的全量SQL(Full SQL)信息。只可在系统库中查询到结果,用户库中无法查询。 返回值类型:record 表4 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 表5 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 表6 statement_detail_decode参数说明 参数 类型 描述 detail text SQL语句产生的事件的集合(不可读)。 format text 解析输出格式,取值为 plaintext。 pretty boolean 当format为plaintext时,是否以优雅的格式展示: true表示通过“\n”分隔事。 false表示通过“,”分隔事件。 pg_control_system() 描述:返回系统控制文件状态。 返回类型:SETOF record pg_control_checkpoint() 描述:返回系统检查点状态。 返回类型:SETOF record get_prepared_pending_xid 描述:当恢复完成时,返回nextxid。 参数:nan 返回值类型:text pg_clean_region_info 描述:清理regionmap。 参数:nan 返回值类型:character varying pg_get_delta_info 描述:从单个dn获取delta info。 参数:rel text, schema_name text 返回值类型:part_name text, live_tuple bigint, data_size bigint, blocknum bigint pg_get_replication_slot_name 描述:获取slot name。 参数:nan 返回值类型:text pg_get_running_xacts 描述:获取运行中的xact。 参数:nan 返回值类型:handle integer, gxid xid, state tinyint, node text, xmin xid, vacuum boolean, timeline bigint, prepare_xid xid, pid bigint, next_xid xid pg_get_variable_info 描述:获取共享内存变量cache。 参数:nan 返回值类型:node_name text, nextOid oid, nextXid xid, oldestXid xid, xidVacLimit xid, oldestXidDB oid, lastExtend CS NLogpage xid, startExtendCSNLogpage xid, nextCommitSeqNo xid, latestCompletedXid xid, startupMaxXid xid pg_get_xidlimit 描述:从共享内存获取事物id信息。 参数:nan 返回值类型:nextXid xid, oldestXid xid, xidVacLimit xid, xidWarnLimit xid, xidStopLimit xid, xidWrapLimit xid, oldestXidDB oid pg_relation_compression_ratio 描述:查询表压缩率,默认返回1.0。 参数:text 返回值类型:real pg_relation_with_compression 描述:查询表是否压缩。 参数:text 返回值类型:boolean pg_stat_file_recursive 描述:列出路径下所有文件。 参数:location text 返回值类型:path text, filename text, size bigint, isdir boolean pg_stat_get_activity_for_temptable 描述:返回临时表相关的后台进程的记录。 参数:nan 返回值类型:datid oid, timelineid integer, tempid integer, sessionid bigint pg_stat_get_activity_ng 描述:返回nodegroup相关的后台进程的记录。 参数:pid bigint 返回值类型:datid oid, pid bigint, sessionid bigint, node_group text pg_stat_get_cgroup_info 描述:返回cgroup信息。 参数:nan 返回值类型:cgroup_name text, percent integer, usage_percent integer, shares bigint, usage bigint, cpuset text, relpath text, valid text, node_group text pg_stat_get_realtime_info_internal 描述:返回实时信息,当前该接口已不可用,返回FailedToGetSessionInfo。 参数:oid, oid, bigint, cstring, oid 返回值类型:text pg_stat_get_workload_struct_info 描述:返回负载管理(当前特性是实验室特性,使用时请联系华为工程师提供技术支持)数据结构。 参数:nan 返回值类型:text pg_test_err_contain_err 描述:测试错误类型和返回信息。 参数:integer 返回值类型:void 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) 该函数当前版本暂不可用。 copy_error_log_create() 描述:创建COPY FROM容错机制所需要的错误表(public.pgxc_copy_error_log)。 返回值类型:Boolean 此函数会尝试创建public.pgxc_copy_error_log表,表的详细信息请参见表7。 在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 Kernel默认为off)。 此函数自身权限为Sysadmin及以上(与错误表、COPY权限一致)。 若创建前public.pgxc_copy_error_log表已存在或者copy_error_log_relname_idx索引已存在,则此函数会报错回滚。 表7 错误表public.pgxc_copy_error_log信息 列名称 类型 描述 relname character varying 表名称。以模式名.表名形式显示。 begintime timestamp with time zone 出现数据格式错误的时间。 filename character varying 出现数据格式错误的数据源文件名。 lineno bigint 在数据源文件中,出现数据格式错误的行号。 rawrecord text 在数据源文件中,出现数据格式错误的原始记录。 detail text 详细错误信息。 dynamic_func_control(scope text, function_name text, action text, "{params}" text[]) 描述:动态开启内置的功能,当前仅支持动态开启全量SQL。 返回值类型:record 表8 dynamic_func_control参数说明 参数 类型 描述 scope text 动态开启功能的范围,当前仅支持'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 备注:必须是系统管理员或运维管理员才能执行此函数。 表9 gs_parse_page_bypath参数说明 参数 类型 描述 path text 对于普通表或段页式表,相对路径为:tablespace name/database oid/表的relfilenode(物理文件名)。例如:base/16603/16394。 对于普通表的visibility map,相对路径为:tablespace name/database oid/表的vm文件。例如:base/16603/16394_vm。 对于clog文件,相对路径为:pg_clog目录下的clog文件。例如:000000000000。 对于csnlog文件,相对路径为:pg_csnlog目录下的csnlog文件。例如:000000000000。 表文件的相对路径可以通过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 blocknum bigint -1:所有block的信息(强制从磁盘解析)。 0~MaxBlockNumber:对应block的信息。 对于BTree/UBTree索引,block 0为索引元页面。 relation_type text heap(astore 表)。 uheap(ustore 表)。 btree(BTree 索引)。 ubtree(UBTree 索引)。 segment(段页式)。 vm(astore普通表的visibility map)。 clog(事务状态日志commit log)。 csnlog(快照时间戳日志commit sequence number log)。 read_memory boolean false,从磁盘文件解析。 true,首先尝试从共享缓冲区中解析该页面;如果共享缓冲区中不存在,则从磁盘文件解析。 正常使用示例: # 解析BTree索引文件中所有页面的信息内容gaussdb=# select gs_parse_page_bypath('base/16603/16394', -1, 'btree', false); gs_parse_page_bypath -------------------------------------------------------------------- /data_dir/1663_16603_16394_-1.page(1 row)# 解析vm文件中所有block的可见性结果gaussdb=# select gs_parse_page_bypath('base/12828/16771_vm', -1, 'vm', false); gs_parse_page_bypath ----------------------------------------------------------------------- /data_dir/1663_12828_16771_-1_vm.page(1 row)# 解析clog文件中0号block的commit log日志gaussdb=# select gs_parse_page_bypath('000000000000', 0, 'clog', false); gs_parse_page_bypath -------------------------------------------------------------------- /data_dir/000000000000.clog(1 row) 异常场景报错示例: # 入参blocknum超出取值范围时报错gaussdb=# select gs_parse_page_bypath('base/12828/16777', -10, 'heap', false);ERROR: Blocknum should be between -1 and 4294967294.CONTEXT: referenced column: gs_parse_page_bypath gs_xlogdump_lsn(start_lsn text, end_lsn text) 描述:用于解析指定lsn范围之内的XLOG日志,并返回存放解析内容的路径。可以通过pg_current_xlog_location()获取当前XLOG位置。 返回值类型:text 参数:LSN起始位置,LSN结束位置 备注:必须是系统管理员或运维管理员才能执行此函数。 gs_xlogdump_xid(c_xid xid) 描述:用于解析指定xid的XLOG日志,并返回存放解析内容的路径。可以通过txid_current()获取当前事务ID。 参数:事务ID 返回值类型:text 备注:必须是系统管理员或运维管理员才能执行此函数。 gs_xlogdump_tablepath(path text, blocknum bigint, relation_type text) 描述:用于解析指定表页面对应的日志,并返回存放解析内容的路径。 返回值类型:text 备注:必须是系统管理员或运维管理员才能执行此函数。 表10 gs_xlogdump_tablepath参数说明 参数 类型 描述 path text 对于普通表或段页式表,相对路径为:tablespace name/database oid/表的relfilenode(物理文件名)。例如:base/16603/16394。 表文件的相对路径可以通过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 blocknum bigint -1:所有block的信息(强制从磁盘解析)。 0~MaxBlockNumber:对应block的信息。 relation_type text heap(astore 表) uheap(ustore 表) btree(BTree 索引) ubtree(UBTree 索引) 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 备注:必须是系统管理员或运维管理员才能执行此函数。 表11 gs_xlogdump_parsepage_tablepath参数说明 参数 类型 描述 path text 对于普通表或段页式表,相对路径为:tablespace name/database oid/表的relfilenode(物理文件名);例如:base/16603/16394 表文件的相对路径可以通过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 blocknum bigint -1:所有block的信息(强制从磁盘解析)。 0~MaxBlockNumber:对应block的信息。 relation_type text heap(astore 表) uheap(ustore 表) btree(BTree 索引) ubtree(UBTree 索引) segment(段页式) read_memory boolean false,从磁盘文件解析 true,首先尝试从共享缓冲区中解析该页面;如果共享缓冲区中不存在,则从磁盘文件解析 gs_index_verify(Oid oid, uint32 blkno) 描述:用于校验UBtree索引页面或者索引树上key的顺序是否正确。 返回值类型:record 表12 gs_index_verify参数说明 参数 类型 描述 oid Oid 索引文件relfilenode,可以通过select relfilenode from pg_class where relname='name'查询,其中name表示对应的索引文件名字。 blkno uint32 0 ,表示检验整个索引树上所有页面。 大于0,表示校验页面编码等于blkno的索引页面。 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 当前时间。 gs_catalog_attribute_records() 描述:对于指定的系统表oid,返回该系统表对应的各个字段的定义。仅支持oid小于10000的普通系统表(不支持索引、toast表等)。 参数:系统表oid 返回值类型:record gs_comm_proxy_thread_status() 描述:用于在数据库实例配置用户态网络的场景下,代理通信库comm_proxy收发数据包统计。 参数:nan 返回值类型:record 此函数的查询仅在集中式环境开始部署用户态网络,且comm_proxy_attr参数中enable_dfx配置为true的条件下显示具体信息。其他场景报错不支持查询。 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_write_term_log(void) 描述:写入一条日志记录DN节点当前的term值。备DN节点返回false,主DN节点写入成功后返回true。 返回值类型:Boolean gs_stat_space(bool init) 描述:用于查询UStore中做Insert操作时拓展页面的状态。 返回值类型:record 参数类型 参数名 类型 描述 输入参数 init bool 是否重置已统计的数据 输出参数 access_func int8 relation_get_buffer_for_utuple接口访问总次数。 输出参数 cache_blk int8 relation_get_buffer_for_utuple获取缓存次数。 输出参数 cache_succ int8 relation_get_buffer_for_utuple获取缓存成功次数。 输出参数 nblk_first int8 relation_get_buffer_for_utuple中第一次获取nblocks-1次数。 输出参数 nblk_first_succ int8 relation_get_buffer_for_utuple中第一次获取nblocks-1成功次数。 输出参数 nblk_second int8 relation_get_buffer_for_utuple中第二次获取nblocks-1次数。 输出参数 nblk_second_succ int8 relation_get_buffer_for_utuple中第二次获取nblocks-1成功次数。 输出参数 fsm_first int8 第一次访问FSM次数。 输出参数 fsm_first_success int8 第一次访问FSM成功次数。 输出参数 fsm_rewrite int8 FSM回写次数。 输出参数 fsm_second int8 第二次访问FSM次数。 输出参数 fsm_second_sucess int8 第二次访问FSM成功次数。 输出参数 prune_count int8 relation_get_buffer_for_utuple中Prune次数。 输出参数 prune_space int8 relation_get_buffer_for_utuple中Prune总空间。 输出参数 coprune_count int8 联合清理执行次数。 输出参数 coprune_scan_blocks int8 联合清理扫描总页数。 输出参数 coprune_prune_count int8 联合清理Prune次数。 输出参数 coprune_prune_space int8 联合清理Prune总空间。 输出参数 con_extend_count int8 并发扩页数量。 输出参数 con_extend_time int8 并发扩页总时间。 输出参数 single_extend_time int8 单一扩页次数。 示例: gaussdb=# select * from gs_stat_space(false); access_func | cache_blk | cache_succ | nblk_first | nblk_first_succ | nblk_sencond | nblk_sencond_succ | fsm_first | fsm_first_success | fsm_rewrite | fsm_second | fsm_second_success | prune_count | prune_space | coprune_count | coprune_scan_blocks | coprune_prune_count | coprune_prune_space | con_extend_count | con_extend_time | single_extend_count-------------+-----------+------------+------------+-----------------+--------------+-------------------+-----------+-------------------+-------------+------------+--------------------+-------------+-------------+---------------+---------------------+---------------------+---------------------+------------------+-----------------+--------------------- 10082397 | 10082397 | 10082235 | 88 | 78 | 47021 | 47021 | 162 | 74 | 360996 |360996 | 270948 | 6711 | 0 | 45497 | 222619 | 0 | 0 | 3675 | 25542884 | 26791(1 row) 备注:请重点关注cache_succ此值较小说明系统缓存失效,prune_space 此值较小表示UStore数据页页面清理机制可能存在问题,con_extend_time此值过高可能表明UStore并发拓页时耗时较高。 gs_index_dump_read(int8 reset, text out_type) 描述:用于查询索引获取新页面时在循环队列中产生的buffer read信息和索引页面相同key从左到右遍历叶子页面的buffer read信息。 返回值类型:record 参数类型 参数名 类型 描述 输入参数 reset int8 0:将统计信息reset为初始值0,重新开始统计。 1:直接show出当前的统计信息。 输入参数 out_type text urq:输出循环队列的统计信息。 ubtree:输出索引页的统计信息。 all:循环队列和索引页的统计信息全部输出。 输出参数 relfilenode oid 统计到的最大buffer read值对应的索引relfilenode。 输出参数 max_count int8 最大buffer read值。 输出参数 ave_count int8 平均buffer read值。 该接口当前仅支持USTORE索引表。 该接口执行时,先reset清理、将记录全部置为0。再进行查询,直到下次统计到信息值之前,查询记录会一直为0。查询示例如下: gaussdb=# select * from gs_index_dump_read(0, 'all');relfilenode | max_count | ave_count--------------+-------------+-------------| |(1 row)gaussdb=# select * from gs_index_dump_read(1, 'all');relfilenode | max_count | ave_count--------------+-------------+-------------0 | 0 | 00 | 0 | 0(2 rows) gs_redo_upage(directory_path text, backup_path text, blocknum bigint, relation_type text, xlog_path text, lsn text) 描述:用于将备份的特定UStore数据页面重放到指定LSN,并在重放期间校验页面,若检测到页面受损或页面记录受损则告警受损信息,并在重放后落盘页面,返回落盘路径、页面LSN以及受损信息,否则重放至指定LSN并落盘页面后返回,必须是系统管理员或运维管理员才能执行此函数。 返回值类型:record 参数类型 参数 类型 描述 输入参数 directory_path text 备份文件所在目录。 输入参数 backup_path text 备份表文件的相对路径,与备份文件所在目录拼成表文件的完整路径,例如,base/15635/12488,若备份文件不存在,传入null。 输入参数 blocknum bigint 0~MaxBlockNumber:对应页面的块号。 输入参数 relation_type text uheap(Ustore数据页)。 ubtree(Ustore索引页)。 indexurq(Urq页面)。 undo_record(Undo record页面)。 undo_slot(Transaction slot页面)。 输入参数 xlog_path text 归档日志目录的绝对路径。 输入参数 lsn text lsn由两个16进制数(各32 bits)组成,中间通过"/"隔开,例如:2/962D1DF8。如果是0则重放到最新版本。 输出参数 output_filename text 文件的落盘路径与文件名。 输出参数 output_lsn text 最后一次页面重放的LSN。 输出参数 corruption_desc text 页面受损情况描述。 gs_xlogdump_bylastlsn(last_lsn text, blocknum bigint, relation_type text) 描述:传入一个页面LSN以及块号,解析LSN对应的WAL日志,并获取对应块号的last LSN继续解析,直到last LSN为0或者更老版本的WAL日志已被复用回收,并将解析后的日志落盘到指定路径,必须是系统管理员或运维管理员才能执行此函数。本系统函数不支持备机调用。 返回值类型:text 参数类型 参数名 类型 描述 输入参数 last_lsn text 解析指定页面的LSN,基于十六进制表示,如12BA/32CDEDDD,LSN可通过页面解析工具(gs_parse_page_bypath等)获取。 输入参数 blocknum bigint 指定页面的逻辑块号。 参数范围:-1~MaxBlockNumber。 块号指定为-1时表示从WAL日志中获取默认块号。 输入参数 relation_type text 指定解析页面的类型。 参数范围:uheap、ubtree、heap、btree、undo_record、undo_slot。 输出参数 output_filepath text WAL日志解析结果的落盘路径。 示例: # 获取页面LSN信息gaussdb=# select * from gs_parse_page_bypath('base/15833/16768', 0, 'uheap', false); output_filepath--------------------------------------------------------------- /data1/database/cluster/primary/data/1663_15833_16768_0.page(1 row)gaussdb=# select * from gs_xlogdump_bylastlsn('0/4593570', -1, 'uheap'); output_filepath------------------------------------------------------------------- /data1/database/cluster/primary/data/pg_log/dump/4593570_-1.xlog(1 row)gaussdb=# select * from gs_xlogdump_bylastlsn('0/4593570', 0, 'ubtree');ERROR: The input lsn 0/4593570 related xlog is not ubtree. 父主题: 系统管理函数
  • 注释信息函数 col_description(table_oid, column_number) 描述:获取一个表字段的注释 返回类型:text 备注:col_description返回一个表中字段的注释,通过表OID和字段号来声明。 obj_description(object_oid, catalog_name) 描述:获取一个数据库对象的注释 返回类型:text 备注:带有两个参数的obj_description返回一个数据库对象的注释,该对象是通过其OID和其所属的系统表名称声明。比如,obj_description(123456,'pg_class')将返回OID为123456的表的注释。只带一个参数的obj_description只要求对象OID。 obj_description不能用于表字段,因为字段没有自己的OID。 obj_description(object_oid) 描述:获取一个数据库对象的注释 返回类型:text shobj_description(object_oid, catalog_name) 描述:获取一个共享数据库对象的注释 返回类型:text 备注:shobj_description和obj_description差不多,不同之处仅在于前者用于共享对象。一些系统表是通用于GaussDB Kernel中所有数据库的全局表,因此这些表的注释也是全局存储的。
  • 系统表信息函数 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 gaussdb=# SELECT format_type((SELECT oid FROM pg_type WHERE typname='varchar'), 10); format_type ---------------------- character varying(6)(1 row) getdistributekey(table_name) 描述:获取一个hash表的分布列。单机环境下不支持分布,该函数返回为空。 pg_check_authid(role_oid) 描述:检查是否存在给定oid的角色名 返回类型:bool 示例: gaussdb=# select pg_check_authid(1);pg_check_authid-----------------f(1 row) pg_describe_object(catalog_id, object_id, object_sub_id) 描述:获取数据库对象的描述 返回类型:text 备注:pg_describe_object返回由目录OID,对象OID和一个(或许0个)子对象ID指定的数据库对象的描述。这有助于确认存储在pg_depend系统表中对象的身份。 pg_get_constraintdef(constraint_oid) 描述:获取约束的定义 返回类型:text pg_get_constraintdef(constraint_oid, pretty_bool) 描述:获取约束的定义 返回类型:text 备注:pg_get_constraintdef和pg_get_indexdef分别从约束或索引上使用创建命令进行重构。 pg_get_expr(pg_node_tree, relation_oid) 描述:反编译表达式的内部形式,假设其中的任何Vars都引用第二个参数指定的关系。 返回类型:text pg_get_expr(pg_node_tree, relation_oid, pretty_bool) 描述:反编译表达式的内部形式,假设其中的任何Vars都引用第二个参数指定的关系。 返回类型:text 备注:pg_get_expr反编译一个独立表达式的内部形式,比如一个字段的缺省值。在检查系统表的内容的时候很有用。如果表达式可能包含关键字,则指定他们引用相关的OID作为第二个参数;如果没有关键字,零就足够了。 pg_get_functiondef(func_oid) 描述:获取函数的定义 返回类型:text 示例: gaussdb=# select * from pg_get_functiondef(598); headerlines | definition -------------+---------------------------------------------------- 4 | CREATE OR REPLACE FUNCTION pg_catalog.abbrev(inet)+ | RETURNS text + | LANGUAGE internal + | IMMUTABLE STRICT NOT FENCED NOT SHIPPABLE + | AS $function$inet_abbrev$function$ + | (1 row) pg_get_function_arguments(func_oid) 描述:获取函数定义的参数列表(带默认值) 返回类型:text 备注:pg_get_function_arguments返回一个函数的参数列表,需要在CREATE FUNCTION中使用这种格式。 pg_get_function_identity_arguments(func_oid) 描述:获取参数列表来确定一个函数 (不带默认值) 返回类型:text 备注:pg_get_function_identity_arguments返回需要的参数列表用来标识函数,这种形式需要在ALTER FUNCTION中使用,并且这种形式省略了默认值。 pg_get_function_result(func_oid) 描述:获取函数的RETURNS子句 返回类型:text 备注:pg_get_function_result为函数返回适当的RETURNS子句。 pg_get_indexdef(index_oid) 描述:获取索引的CREATE INDEX命令 返回类型:text 示例: gaussdb=# select * from pg_get_indexdef(16416); pg_get_indexdef ------------------------------------------------------------------------- CREATE INDEX test3_b_idx ON test3 USING btree (b) TABLESPACE pg_default(1 row) pg_get_indexdef(index_oid, dump_schema_only) 描述:获取索引的CREATE INDEX命令,仅用于dump场景。对于包含local索引的间隔分区表,当dump_schema_only为true时,返回的创建索引语句中不包含自动创建的分区的local索引信息;当dump_schema_only为false时,返回的创建索引语句中包含自动创建的分区的local索引信息。对于非间隔分区表或者不包含local索引的间隔分区分区表,dump_schema_only参数取值不影响函数返回结果。 返回类型:text 示例: gaussdb=# CREATE TABLE salesgaussdb-# (prod_id NUMBER(6),gaussdb(# cust_id NUMBER,gaussdb(# time_id DATE,gaussdb(# channel_id CHAR(1),gaussdb(# promo_id NUMBER(6),gaussdb(# quantity_sold NUMBER(3),gaussdb(# amount_sold NUMBER(10,2)gaussdb(# )PARTITION BY RANGE( time_id) INTERVAL('1 day')gaussdb-# (gaussdb(# partition p1 VALUES LESS THAN ('2019-02-01 00:00:00'),gaussdb(# partition p2 VALUES LESS THAN ('2019-02-02 00:00:00')gaussdb(# );CREATE TABLEgaussdb=# create index index_sales on sales(prod_id) local (PARTITION idx_p1 ,PARTITION idx_p2);CREATE INDEXgaussdb=# -- 插入数据没有匹配的分区,新创建一个分区,并将数据插入该分区gaussdb=# INSERT INTO sales VALUES(1, 12, '2019-02-05 00:00:00', 'a', 1, 1, 1);INSERT 0 1gaussdb=# select oid from pg_class where relname = 'index_sales'; oid------- 24632(1 row)gaussdb=# select * from pg_get_indexdef(24632, true); pg_get_indexdef-------------------------------------------------------------------------------------------------------------------------- CREATE INDEX index_sales ON sales USING btree (prod_id) LOCAL(PARTITION idx_p1, PARTITION idx_p2) TABLESPACE pg_default(1 row)gaussdb=# select * from pg_get_indexdef(24632, false); pg_get_indexdef-------------------------------------------------------------------------------------------------------------------------------------------------------- CREATE INDEX index_sales ON sales USING btree (prod_id) LOCAL(PARTITION idx_p1, PARTITION idx_p2, PARTITION sys_p1_prod_id_idx) TABLESPACE pg_default(1 row pg_get_indexdef(index_oid, column_no, pretty_bool) 描述:获取索引的CREATE INDEX命令,或者如果column_no不为零,则只获取一个索引字段的定义。 示例: gaussdb=# select * from pg_get_indexdef(16416, 0, false); pg_get_indexdef ------------------------------------------------------------------------- CREATE INDEX test3_b_idx ON test3 USING btree (b) TABLESPACE pg_default(1 row)gaussdb=# select * from pg_get_indexdef(16416, 1, false); pg_get_indexdef ----------------- b(1 row) 返回类型:text 备注:pg_get_functiondef为函数返回一个完整的CREATE OR REPLACE FUNCTION语句。 pg_get_keywords() 描述:获取SQL关键字和类别列表 返回类型:setof record 备注:pg_get_keywords返回一组关于描述服务器识别SQL关键字的记录。word列包含关键字。catcode列包含一个分类代码:U表示通用的,C表示列名,T表示类型或函数名,或R表示保留。catdesc列包含了一个可能本地化描述分类的字符串。 pg_get_userbyid(role_oid) 描述:获取给定OID的角色名 返回类型:name 备注:pg_get_userbyid通过角色的OID抽取对应的用户名。 pg_check_authid(role_id) 描述:通过role_id检查用户是否存在 返回类型:text 示例: gaussdb=# select pg_check_authid(20);pg_check_authid-----------------f(1 row) pg_get_viewdef(view_name) 描述:为视图获取底层的SELECT命令 返回类型:text pg_get_viewdef(view_name, pretty_bool) 描述:为视图获取底层的SELECT命令,如果pretty_bool为true,行字段可以包含80列。 返回类型:text 备注:pg_get_viewdef重构出定义视图的SELECT查询。这些函数大多数都有两种形式,其中带有pretty_bool参数,且参数为true时,是"适合打印"的结果,这种格式更容易读。另一种是缺省的格式,更有可能被将来的不同版本用同样的方法解释。如果是用于转储,那么尽可能避免使用适合打印的格式。给pretty-print参数传递false生成的结果和没有这个参数的变种生成的结果是完全一样。 pg_get_viewdef(view_oid) 描述:为视图获取底层的SELECT命令 返回类型:text pg_get_viewdef(view_oid, pretty_bool) 描述:为视图获取底层的SELECT命令,如果pretty_bool为true,行字段可以包含80列。 返回类型:text pg_get_viewdef(view_oid, wrap_column_int) 描述:为视图获取底层的SELECT命令;行字段被换到指定的列数,打印是隐含的。 返回类型:text pg_get_tabledef(table_oid) 描述:根据table_oid获取表定义 示例: gaussdb=# select * from pg_get_tabledef(16384); pg_get_tabledef ------------------------------------------------------- SET search_path = public; + CREATE TABLE t1 ( + c1 bigint DEFAULT nextval('serial'::regclass)+ ) + WITH (orientation=row, compression=no) + TO GROUP group1;(1 row) 返回类型:text pg_get_tabledef(table_name) 描述:根据table_name获取表定义 示例: gaussdb=# select * from pg_get_tabledef('t1'); pg_get_tabledef ------------------------------------------------------- SET search_path = public; + CREATE TABLE t1 ( + c1 bigint DEFAULT nextval('serial'::regclass)+ ) + WITH (orientation=row, compression=no) + TO GROUP group1;(1 row) 返回类型:text 备注: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 gaussdb=# SELECT pg_typeof(33); pg_typeof ----------- integer(1 row)gaussdb=# SELECT typlen FROM pg_type WHERE oid = pg_typeof(33); typlen -------- 4(1 row) collation for (any) 描述:获取参数的排序 返回类型:text 备注:表达式collation for返回传递给他的值的排序。 示例: 12345 gaussdb=# SELECT collation for (description) FROM pg_description LIMIT 1; pg_collation_for ------------------ "default"(1 row) 值可能是引号括起来的并且模式限制的。如果没有为参数表达式排序,则返回一个null值。如果参数不是排序的类型,则抛出一个错误。 pg_extension_update_paths(name) 描述:返回指定扩展的版本更新路径。 返回类型:text(source text), text(path text), text(target text) pg_get_serial_sequence(tablename, colname) 描述:获取对应表名和列名上的序列。 返回类型:text 示例: gaussdb=# select * from pg_get_serial_sequence('t1', 'c1'); pg_get_serial_sequence ------------------------ public.serial(1 row) pg_sequence_parameters(sequence_oid) 描述:获取指定sequence的参数,包含起始值,最小值和最大值,递增值等。 返回类型:int16, int16, int16, int16, Boolean 示例: gaussdb=# select * from pg_sequence_parameters(16420); start_value | minimum_value | maximum_value | increment | cycle_option -------------+---------------+---------------------+-----------+-------------- 101 | 1 | 9223372036854775807 | 1 | f(1 row)
  • 模式可见性查询函数 每个函数执行检查数据库对象类型的可见性。对于函数和操作符,如果在前面的搜索路径中没有相同的对象名称和参数的数据类型,则此对象是可见的。对于操作符类,则要同时考虑名称和相关索引的访问方法。 所有这些函数都需要使用OID来标识要需要检查的对象。如果用户想通过名称测试对象,则使用OID别名类型(regclass、regtype、regprocedure、regoperator、regconfig或regdictionary)将会很方便。 比如,如果一个表所在的模式在搜索路径中,并且在前面的搜索路径中没有同名的表,则这个表是可见的。它等效于表可以不带明确模式修饰进行引用。比如,要列出所有可见表的名称: 1 gaussdb=# SELECT relname FROM pg_class WHERE pg_table_is_visible(oid); pg_collation_is_visible(collation_oid) 描述:该排序是否在搜索路径中可见。 返回类型:Boolean pg_conversion_is_visible(conversion_oid) 描述:该转换是否在搜索路径中可见。 返回类型:Boolean pg_function_is_visible(function_oid) 描述:该函数是否在搜索路径中可见。 返回类型:Boolean pg_opclass_is_visible(opclass_oid) 描述:该操作符类是否在搜索路径中可见。 返回类型:Boolean pg_operator_is_visible(operator_oid) 描述:该操作符是否在搜索路径中可见。 返回类型:Boolean pg_opfamily_is_visible(opclass_oid) 描述:该操作符族是否在搜索路径中可见。 返回类型:Boolean pg_table_is_visible(table_oid) 描述:该表是否在搜索路径中可见。 返回类型:Boolean pg_ts_config_is_visible(config_oid) 描述:该文本检索配置是否在搜索路径中可见。 返回类型:Boolean pg_ts_dict_is_visible(dict_oid) 描述:该文本检索词典是否在搜索路径中可见。 返回类型:Boolean pg_ts_parser_is_visible(parser_oid) 描述:该文本搜索解析是否在搜索路径中可见。 返回类型:Boolean pg_ts_template_is_visible(template_oid) 描述:该文本检索模板是否在搜索路径中可见。 返回类型:Boolean pg_type_is_visible(type_oid) 描述:该类型(或域)是否在搜索路径中可见。 返回类型:Boolean
  • 访问权限查询函数 DDL类权限ALTER、DROP、COMMENT、INDEX、VACUUM属于所有者固有的权限,隐式拥有。 以下访问权限查询函数仅表示用户是否具有某对象上的某种对象权限,即返回记录在系统表acl字段中的对象权限拥有情况。 has_any_column_privilege(user, table, privilege) 描述:指定用户是否有访问表任何列的权限。 表1 参数类型说明 参数名 合法入参类型 user name, oid table text, oid privilege text 返回类型:Boolean has_any_column_privilege(table, privilege) 描述:当前用户是否有访问表任何列的权限,合法参数类型见表1。 返回类型:Boolean 备注:has_any_column_privilege检查用户是否以特定方式访问表的任何列。其参数可能与has_table_privilege类似,除了访问权限类型必须是SELECT、INSERT、UPDATE、COMMENT或REFEREN CES 的一些组合。 拥有表的表级别权限则隐含的拥有该表每列的列级权限,因此如果与has_table_privilege参数相同,has_any_column_privilege总是返回true。但是如果授予至少一列的列级权限也返回成功。 has_column_privilege(user, table, column, privilege) 描述:指定用户是否有访问列的权限。 表2 参数类型说明 参数名 合法入参类型 user name, oid table text, oid column text, smallint privilege text 返回类型:Boolean has_column_privilege(table, column, privilege) 描述:当前用户是否有访问列的权限,合法参数类型见表2。 返回类型:Boolean 备注:has_column_privilege检查用户是否以特定方式访问一列。其参数类似于has_table_privilege,可以通过列名或属性号添加列。想要的访问权限类型必须是SELECT、INSERT、UPDATE、COMMENT或REFERENCES的一些组合。 拥有表的表级别权限则隐含的拥有该表每列的列级权限。 has_cek_privilege(user, cek, privilege) 描述:指定用户是否有访问列加密密钥CEK的权限。参数说明如下。 表3 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或id。 cek text,oid 列加密密钥 列加密密钥名称或id。 privilege text 权限 USAGE:允许使用指定列加密密钥。 DROP:允许删除指定列加密密钥。 返回类型:Boolean has_cmk_privilege(user, cmk, privilege) 描述:指定用户是否有访问客户端加密主密钥CMK的权限。参数说明如下。 表4 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或id。 cmk text,oid 客户端加密主密钥 客户端加密主密钥名称或id。 privilege text 权限 USAGE:允许使用指定客户端加密主密钥。 DROP:允许删除指定客户端加密主密钥。 返回类型:Boolean has_database_privilege(user, database, privilege) 描述:指定用户是否有访问数据库的权限。参数说明如下。 表5 参数类型说明 参数名 合法入参类型 user name, oid database text, oid privilege text 返回类型:Boolean has_database_privilege(database, privilege) 描述:当前用户是否有访问数据库的权限,合法参数类型请参见表5。 返回类型:Boolean 备注:has_database_privilege检查用户是否能以在特定方式访问数据库。其参数类似has_table_privilege。访问权限类型必须是CREATE、CONNECT、TEMPORARY、ALTER、DROP、COMMENT或TEMP(等价于TEMPORARY)的一些组合。 has_directory_privilege(user, directory, privilege) 描述:指定用户是否有访问directory的权限。 表6 参数类型说明 参数名 合法入参类型 user name, oid directory text, oid privilege text 返回类型:Boolean has_directory_privilege(directory, privilege) 描述:当前用户是否有访问directory的权限,合法参数类型请参见表6。 返回类型:Boolean has_foreign_data_wrapper_privilege(user, fdw, privilege) 描述:指定用户是否有访问外部数据封装器的权限。 表7 参数类型说明 参数名 合法入参类型 user name, oid fdw text, oid privilege text 返回类型:Boolean has_foreign_data_wrapper_privilege(fdw, privilege) 描述:当前用户是否有访问外部数据封装器的权限。合法参数类型请参见表7。 返回类型:Boolean 备注:has_foreign_data_wrapper_privilege检查用户是否能以特定方式访问外部数据封装器。其参数类似has_table_privilege。访问权限类型必须是USAGE。 has_function_privilege(user, function, privilege) 描述:指定用户是否有访问函数的权限。 表8 参数类型说明 参数名 合法入参类型 user name, oid function text, oid privilege text 返回类型:Boolean has_function_privilege(function, privilege) 描述:当前用户是否有访问函数的权限。合法参数类型请参见表8。 返回类型:Boolean 备注:has_function_privilege检查一个用户是否能以指定方式访问一个函数。其参数类似has_table_privilege。使用文本字符而不是OID声明一个函数时,允许输入的类型和regprocedure数据类型一样(请参考对象标识符类型)。访问权限类型必须是EXECUTE、ALTER、DROP或COMMENT。 has_language_privilege(user, language, privilege) 描述:指定用户是否有访问语言的权限。 表9 参数类型说明 参数名 合法入参类型 user name, oid language text, oid privilege text 返回类型:Boolean has_language_privilege(language, privilege) 描述:当前用户是否有访问语言的权限。合法参数类型请参见表9。 返回类型:Boolean 备注:has_language_privilege检查用户是否能以特定方式访问一个过程语言。其参数类似has_table_privilege。访问权限类型必须是USAGE。 has_nodegroup_privilege(user, nodegroup, privilege) 描述:检查用户是否有数据库节点访问权限。 返回类型:Boolean 表10 参数类型说明 参数名 合法入参类型 user name, oid nodegroup text, oid privilege text has_nodegroup_privilege(nodegroup, privilege) 描述:检查用户是否有数据库节点访问权限。参数与has_table_privilege类似。访问权限类型必须是USAGE、CREATE、COMPUTE、ALTER或DROP。 返回类型:Boolean has_schema_privilege(user, schema, privilege) 描述:指定用户是否有访问模式的权限。 返回类型:Boolean has_schema_privilege(schema, privilege) 描述:当前用户是否有访问模式的权限。 返回类型:Boolean 备注:has_schema_privilege检查用户是否能以特定方式访问一个模式。其参数类似has_table_privilege。访问权限类型必须是CREATE、USAGE、ALTER、DROP或COMMENT的一些组合。 has_server_privilege(user, server, privilege) 描述:指定用户是否有访问外部服务的权限。 返回类型:Boolean has_server_privilege(server, privilege) 描述:当前用户是否有访问外部服务的权限。 返回类型:Boolean 备注:has_server_privilege检查用户是否能以指定方式访问一个外部服务器。其参数类似has_table_privilege。访问权限类型必须是USAGE、ALTER、DROP或COMMENT之一的值。 has_table_privilege(user, table, privilege) 描述:指定用户是否有访问表的权限。 返回类型:Boolean has_table_privilege(table, privilege) 描述:当前用户是否有访问表的权限。 返回类型:Boolean 备注:has_table_privilege检查用户是否以特定方式访问表。用户可以通过名称或OID(pg_authid.oid)来指定,public表明PUBLIC伪角色,或如果缺省该参数,则使用current_user。该表可以通过名称或者OID声明。如果用名称声明,则在必要时可以用模式进行修饰。如果使用文本字符串来声明所希望的权限类型,这个文本字符串必须是SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、TRIGGER、ALTER、DROP、COMMENT、INDEX或VACUUM之一的值。可以给权限类型添加WITH GRANT OPTION,用来测试权限是否拥有授权选项。也可以用逗号分隔列出的多个权限类型,如果拥有任何所列出的权限,则结果便为true。 示例: 1 2 3 4 5 6 7 8 91011 gaussdb=# SELECT has_table_privilege('tpcds.web_site', 'select'); has_table_privilege --------------------- t (1 row)gaussdb=# SELECT has_table_privilege('omm', 'tpcds.web_site', 'select,INSERT WITH GRANT OPTION '); has_table_privilege --------------------- t (1 row) has_tablespace_privilege(user, tablespace, privilege) 描述:指定用户是否有访问表空间的权限。 返回类型:Boolean has_tablespace_privilege(tablespace, privilege) 描述:当前用户是否有访问表空间的权限。 返回类型:Boolean 备注:has_tablespace_privilege检查用户是否能以特定方式访问一个表空间。其参数类似has_table_privilege。访问权限类型必须是CREATE、ALTER、DROP或COMMENT之一的值。 pg_has_role(user, role, privilege) 描述:指定用户是否有角色的权限。 返回类型:Boolean pg_has_role(role, privilege) 描述:当前用户是否有角色的权限。 返回类型:Boolean 备注:pg_has_role检查用户是否能以特定方式访问一个角色。其参数类似has_table_privilege,除了public不能用做用户名。访问权限类型必须是MEMBER或USAGE的一些组合。 MEMBER表示的是角色中的直接或间接成员关系(也就是SET ROLE的权限),而USAGE表示无需通过SET ROLE也直接拥有角色的使用权限。
  • 会话信息函数 SYS_CONTEXT() 描述:返回当前时刻与上下文命名空间'namespace'关联的参数'parameter'的值。 返回值类型:text 示例: 1 2 3 4 5 6 7 8 91011121314151617 select SYS_CONTEXT('userenv','NLS_CURRENCY'); sys_context ------------- $(1 row)select SYS_CONTEXT('userenv','NLS_DATE_FORMAT'); sys_context --------------- Postgres, MDY(1 row)select SYS_CONTEXT('userenv','NLS_DATE_LANGUAGE'); sys_context ------------- en_US.UTF-8(1 row) current_catalog 描述:当前数据库的名称(在标准SQL中称"catalog")。 返回值类型:name 示例: 12345 gaussdb=# SELECT current_catalog; current_database------------------ testdb(1 row) current_database() 描述:当前数据库的名称。 返回值类型:name 示例: 12345 gaussdb=# SELECT current_database(); current_database------------------ testdb(1 row) current_query() 描述:由客户端提交的当前执行语句(可能包含多个声明)。 返回值类型:text 示例: 12345 gaussdb=# SELECT current_query(); current_query------------------------- SELECT current_query();(1 row) current_schema[()] 描述:当前模式的名称。 返回值类型:name 示例: 12345 gaussdb=# SELECT current_schema(); current_schema---------------- public(1 row) 备注:current_schema返回在搜索路径中第一个顺位有效的模式名。(如果搜索路径为空则返回NULL,没有有效的模式名也返回NULL)。如果创建表或者其他命名对象时没有声明目标模式,则将使用这些对象的模式。 current_schemas(Boolean) 描述:搜索路径中的模式名称。 返回值类型:name[] 示例: 12345 gaussdb=# 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 gaussdb=# SELECT current_user; current_user-------------- omm(1 row) 备注:current_user是用于权限检查的用户标识。通常,他表示会话用户,但是可以通过SET ROLE改变他。在函数执行的过程中随着属性SECURITY DEFINER的改变,其值也会改变。 definer_current_user 描述:当前执行环境下的用户名。 返回值类型:name 示例: 12345 gaussdb=# SELECT definer_current_user(); definer_current_user---------------------- omm(1 row) pg_current_sessionid() 描述:当前执行环境下的会话ID。 返回值类型:text 示例: 12345 gaussdb=# SELECT pg_current_sessionid(); pg_current_sessionid---------------------------- 1579228402.140190434944768(1 row) 备注:pg_current_sessionid()是用于获取当前执行环境下的会话ID。其组成结构为:时间戳.会话ID,当线程池模式开启(enable_thread_pool=on)时,会话ID为SessionID;而线程池模式关闭时,会话ID为ThreadID。 pg_current_sessid 描述:当前执行环境下的会话ID。 返回值类型:text 示例: gaussdb=# select pg_current_sessid();pg_current_sessid-------------------140308875015936(1 row) 备注:在线程池模式下获得当前会话的会话ID,非线程池模式下获得当前会话对应的后台线程ID。 pg_current_userid 描述:当前用户ID。 返回值类型:text gaussdb=# SELECT pg_current_userid();pg_current_userid-------------------10(1 row) working_version_num() 描述:版本序号信息。返回一个系统兼容性有关的版本序号。 返回值类型:int 示例: 12345 gaussdb=# SELECT working_version_num(); working_version_num--------------------- 92231(1 row) tablespace_oid_name() 描述: 根据表空间oid,查找表空间名称。 返回值类型:text 示例: 12345 gaussdb=# select tablespace_oid_name(1663); tablespace_oid_name--------------------- pg_default(1 row) inet_client_addr() 描述:连接的远端地址。inet_client_addr返回当前客户端的IP地址。 此函数只有在远程连接模式下有效。 返回值类型:inet 示例: 12345 gaussdb=# SELECT inet_client_addr(); inet_client_addr------------------ 10.10.0.50(1 row) inet_client_port() 描述:连接的远端端口。inet_client_port返回当前客户端的端口号。 此函数只有在远程连接模式下有效。 返回值类型:int 示例: 12345 gaussdb=# SELECT inet_client_port(); inet_client_port------------------ 33143(1 row) inet_server_addr() 描述:连接的本地地址。inet_server_addr返回服务器接收当前连接用的IP地址。 此函数只有在远程连接模式下有效。 返回值类型:inet 示例: 12345 gaussdb=# SELECT inet_server_addr(); inet_server_addr------------------ 10.10.0.13(1 row) inet_server_port() 描述:连接的本地端口。inet_server_port返回接收当前连接的端口号。如果是通过Unix-domain socket连接的,则所有这些函数都返回NULL。 此函数只有在远程连接模式下有效。 返回值类型:int 示例: 12345 gaussdb=# SELECT inet_server_port(); inet_server_port------------------ 8000(1 row) pg_backend_pid() 描述:当前会话连接的服务进程的进程ID。 返回值类型:int 示例: 12345 gaussdb=# SELECT pg_backend_pid(); pg_backend_pid----------------- 140229352617744(1 row) pg_conf_load_time() 描述:配置加载时间。pg_conf_load_time返回最后加载服务器配置文件的时间戳。 返回值类型:timestamp with time zone 示例: 12345 gaussdb=# SELECT pg_conf_load_time(); pg_conf_load_time ------------------------------ 2017-09-01 16:05:23.89868+08(1 row) pg_my_temp_schema() 描述:会话的临时模式的OID,不存在则为0。 返回值类型:oid 示例: 12345 gaussdb=# SELECT pg_my_temp_schema(); pg_my_temp_schema ------------------- 0(1 row) 备注:pg_my_temp_schema返回当前会话中临时模式的OID,如果不存在(没有创建临时表)的话则返回0。如果给定的OID是其它会话中临时模式的OID,pg_is_other_temp_schema则返回true。 pg_is_other_temp_schema(oid) 描述:是否为另一个会话的临时模式。 返回值类型:Boolean 示例: 12345 gaussdb=# SELECT pg_is_other_temp_schema(25356); pg_is_other_temp_schema------------------------- f(1 row) pg_listening_channels() 描述:会话正在侦听的信道名称。 返回值类型:setof text 示例: 1234 gaussdb=# SELECT pg_listening_channels(); pg_listening_channels-----------------------(0 rows) 备注:pg_listening_channels返回当前会话正在侦听的一组信道名称。 pg_postmaster_start_time() 描述:服务器启动时间。pg_postmaster_start_time返回服务器启动时的timestamp with time zone。 返回值类型:timestamp with time zone 示例: 12345 gaussdb=# SELECT pg_postmaster_start_time(); pg_postmaster_start_time ------------------------------ 2017-08-30 16:02:54.99854+08(1 row) pg_get_ruledef(rule_oid) 描述:获取规则的CREATE RULE命令。 返回值类型:text 示例: gaussdb=# select * from pg_get_ruledef(24828); pg_get_ruledef------------------------------------------------------------------- CREATE RULE t1_ins AS ON INSERT TO t1 DO INSTEAD INSERT INTO t2 (id) VALUES (new.id);(1 row) sessionid2pid() 描述: 从sessionid中得到pid信息(例如,gs_session_stat中sessid列)。 返回值类型: int8 示例: 123456 gaussdb=# select sessionid2pid(sessid::cstring) from gs_session_stat limit 2; sessionid2pid----------------- 139973107902208 139973107902208(2 rows) session_context( 'namespace' , 'parameter') 描述:获取并返回指定namespace下参数parameter的值。 返回值类型:VARCHAR 示例: 12345 gaussdb=# SELECT session_context('USERENV', 'CURRENT_SCHEMA');session_context ------------------ public(1 row) 备注:当前支持的parameter:current_user, current_schema, client_info, ip_address, sessionid, sid. pg_trigger_depth() 描述:触发器的嵌套层次。 返回值类型:int 示例: 12345 gaussdb=# SELECT pg_trigger_depth(); pg_trigger_depth ------------------ 0(1 row) session_user 描述:会话用户名。 返回值类型:name 示例: 12345 gaussdb=# SELECT session_user; session_user-------------- omm(1 row) 备注:session_user通常是连接当前数据库的初始用户,不过系统管理员可以用SET SESSION AUTHORIZATION修改这个设置。 user 描述:等价于current_user。 返回值类型:name 示例: 12345 gaussdb=# SELECT user; current_user-------------- omm(1 row) getpgusername() 描述:获取数据库用户名。 返回值类型:name 示例: 12345 gaussdb=# select getpgusername(); getpgusername --------------- GaussDB_userna(1 row) getdatabaseencoding() 描述:获取数据库编码方式。 返回值类型:name 示例: 12345 gaussdb=# select getdatabaseencoding(); getdatabaseencoding --------------------- SQL_ASCII(1 row) version() 描述:版本信息。version返回一个描述服务器版本信息的字符串。 返回值类型:text 示例: gaussdb=# select version();version-------------------------------------------------------------------------------------------------------------------------------------------------------------gaussdb (GaussDB Kernel 503.1.XXX build fab4f5ea) compiled at 2021-10-24 11:58:22 commit 3086 last mr 6592 release(1 row) opengauss_version() 描述:openGauss版本信息。 返回值类型:text 示例: 12345 gaussdb=# select opengauss_version(); opengauss_version------------------- 2.0.0(1 row) gs_deployment() 描述:当前系统的部署形态信息。 返回值类型:text 示例: 12345 gaussdb=# select gs_deployment(); gs_deployment--------------------- BusinessCentralized(1 row) get_hostname() 描述:返回当前节点的hostname。 返回值类型:text 示例: 12345 gaussdb=# SELECT get_hostname(); get_hostname-------------- linux-user(1 row) get_nodename() 描述:返回当前节点的名字。 返回值类型:text 示例: 12345 gaussdb=# SELECT get_nodename(); get_nodename-------------- datanode1(1 row) get_schema_oid(cstring) 描述:返回查询schema的oid。 返回值类型:oid 示例: 12345 gaussdb=# SELECT get_schema_oid('public'); get_schema_oid---------------- 2200(1 row) get_client_info() 描述:返回客户端信息。 返回值类型:record
  • 动态数据脱敏函数 该函数为内部功能调用函数,详见《特性描述》中“数据库安全-动态数据脱敏机制”章节。 creditcardmasking(col text, letter char default 'x') 描述:将col字符串后四位之前的数字使用letter替换。 参数:待替换的字符串、替换字符。 返回值类型:text basicmailmasking(col text, letter char default 'x') 描述:将col字符串中第一个'@'之前的字符使用letter替换。 参数:待替换的字符串、替换字符。 返回值类型:text fullmailmasking(col text, letter char default 'x') 描述:将col字符串中出现最后一个'.'之前的字符(除'@'外)使用letter替换。 参数:待替换的字符串、替换字符。 返回值类型:text alldigitsmasking(col text, letter char default '0') 描述:将col字符串中出现的数字使用letter替换。 参数:待替换的字符串、替换字符。 返回值类型:text shufflemasking(col text) 描述:将col字符串中的字符乱序排列。 参数:待替换的字符串、替换字符。 返回值类型:text randommasking(col text) 描述:将col字符串中的字符随机化。 参数:待替换的字符串、替换字符。 返回值类型:text regexpmasking 描述:脱敏策略的内部函数,对字符进行正则表达式替换。 参数:col text, reg text, replace_text text, pos INTEGER default 0, reg_len INTEGER default -1 返回值类型:text 父主题: 函数和操作符
  • 故障注入系统函数 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 父主题: 函数和操作符
  • 全局临时表函数 pg_get_gtt_relstats(relOid) 描述:显示当前会话指定的全局临时表的基本信息。 参数:全局临时表的OID。 返回值类型:record 示例: gaussdb=# select * from pg_get_gtt_relstats(74069); relfilenode | relpages | reltuples | relallvisible | relfrozenxid | relminmxid -------------+----------+-----------+---------------+--------------+------------ 74069 | 58 | 13000 | 0 | 11151 | 0(1 row) pg_get_gtt_statistics(relOid, attnum, ''::text) 描述:显示当前会话指定的全局临时表的单列统计信息。 参数:全局临时表的OID和属性attnum。 返回值类型:record 示例: gaussdb=# select * from pg_get_gtt_statistics(74069,1,''::text); starelid | starelkind | staattnum | stainherit | stanullfrac | stawidth | stadistinct | stakind1 | stakind2 | stakind3 | stakind4 | stakind5 | staop1 | staop2 | staop3 | staop4 | staop5 | stanumbers1 | stanumbers2 | stanumbers3 | stanumbers4 | stanumbers5 | stavalues1 | stavalues2 | stavalues3 | stavalues4 | stavalues5 | stadndistinct | staextinfo ----------+------------+-----------+------------+-------------+----------+-------------+----------+----------+----------+----------+----------+--------+--------+--------+--------+--------+-------------+-------------+-------------+-------------+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+---------------+------------ 74069 | c | 1 | f | 0 | 4 | -1 | 2 | 3 | 0 | 0 | 0 | 97 | 97 | 0 | 0 | 0 | | {1} | | | | {1,130,260,390,520,650,780,910,1040,1170,1300,1430,1560,1690,1820,1950,2080,2210,2340,2470,2600,2730,2860,2990,3120,3250,3380,3510,3640,3770,3900,4030,4160,4290,4420,4550,4680,4810,4940,5070,5200,5330,5460,5590,5720,5850,5980,6110,6240,6370,6500,6630,6760,6890,7020,7150,7280,7410,7540,7670,7800,7930,8060,8190,8320,8450,8580,8710,8840,8970,9100,9230,9360,9490,9620,9750,9880,10010,10140,10270,10400,10530,10660,10790,10920,11050,11180,11310,11440,11570,11700,11830,11960,12090,12220,12350,12480,12610,12740,12870,13000} | | | | | 0 | (1 row) pg_gtt_attached_pid(relOid) 描述:显示正在使用指定全局临时表的所有线程pid和会话ID。当线程池开启时,如果正在使用全局临时表的会话为detach状态,pid会显示为0,sessionid为会话的ID。 参数:全局临时表的OID。 返回值类型:record 示例: gaussdb=# select * from pg_gtt_attached_pid(74069); relid | pid | sessionid -------+-----------------+----------------- 74069 | 139648170456832 | 139648170456832 74069 | 139648123270912 | 139648123270912(2 rows) dbe_perf.get_global_full_sql_by_timestamp(start_timestamp timestamp, end_timestamp timestamp) 描述:获取实例级的全量SQL(Full SQL)信息。 返回值类型:record 表1 dbe_perf.get_global_full_sql_by_timestamp参数说明 参数 类型 描述 start_timestamp timestamp SQL启动时间范围的开始时间点。 end_timestamp timestamp SQL启动时间范围的结束时间点。 dbe_perf.get_global_slow_sql_by_timestamp(start_timestamp timestamp, end_timestamp timestamp) 描述:获取实例级的慢SQL(Slow SQL)信息。 返回值类型:record 表2 dbe_perf.get_global_slow_sql_by_timestamp参数说明 参数 类型 描述 start_timestamp timestamp SQL启动时间范围的开始时间点。 end_timestamp timestamp SQL启动时间范围的结束时间点。 statement_detail_decode(detail text, format text, pretty bool) 解析全量/慢SQL语句中的details字段的信息。 表3 statement_detail_decode参数说明 参数 类型 描述 detail text SQL语句产生的事件的集合(不可读)。 format text 解析输出格式,取值为plaintext或json。 pretty bool 当format为plaintext时,是否以优雅的格式展示: true表示通过“\n”分隔事件。 false表示通过“,”分隔事件。 pg_list_gtt_relfrozenxids() 描述:显示各会话的冻结事务xid。 pid=0的行,显示所有会话中最老的冻结事务xid。 参数:无。 返回值类型:record 示例: gaussdb=# select * from pg_list_gtt_relfrozenxids(); pid | relfrozenxid -----------------+-------------- 139648123270912 | 11151 139648170456832 | 11155 0 | 11151(3 rows) 父主题: 函数和操作符
  • HashFunc函数 ora_hash(expression,[seed]) 描述:用于计算给定表达式的哈希值。expression:可输入的类型覆盖字符串,时间类型,数字类型,根据expression进行计算哈希值。seed:可选参数,一个int8值,可以对同一个输入值返回不同的结果, 用于计算带随机数的hash值。 返回类型:int8类型的哈希值。 示例: 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031323334353637383940 gaussdb=# select ora_hash(123); ora_hash ------------ 4089882933(1 row)gaussdb=# select ora_hash('123'); ora_hash ------------ 2034089965(1 row)gaussdb=# select ora_hash('sample'); ora_hash ------------ 1573005290(1 row)gaussdb=# select ora_hash(to_date('2012-1-2','yyyy-mm-dd')); ora_hash ------------ 1171473495(1 row)gaussdb=# select ora_hash(123,234); ora_hash ------------ -9089505052966355682(1 row)gaussdb=# select ora_hash('123',234); ora_hash ------------ 5742589019960764616(1 row)gaussdb=# select ora_hash('sample',234); ora_hash ------------ -1747984408055821656(1 row)gaussdb=# select ora_hash(to_date('2012-1-2','yyyy-mm-dd'),234); ora_hash ------------ -3306025179710572679(1 row) 此函数在参数a_format_version值为10c和a_format_dev_version值为s2的情况下才能生效。 hash_array(anyarray) 描述:数组哈希,将数组的元素通过哈希函数得到结果,并返回合并结果。 参数:数据类型为anyarray。 返回值类型:integer 示例: 12345 gaussdb=# 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 910111213141516171819202122232425262728293031 按照步骤依次执行。gaussdb=# CREATE TABLE tt(a int, b int,c int,d int);CREATE TABLEgaussdb=# select * from tt; a | b | c | d ---+---+---+---(0 rows)gaussdb=# insert into tt values(1,2,3,4);INSERT 0 1gaussdb=# select * from tt; a | b | c | d ---+---+---+--- 1 | 2 | 3 | 4(1 row)gaussdb=# insert into tt values(5,6,7,8);INSERT 0 1gaussdb=# select * from tt; a | b | c | d ---+---+---+--- 1 | 2 | 3 | 4 5 | 6 | 7 | 8(2 rows)gaussdb=# 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 gaussdb=# select hash_numeric(30); hash_numeric -------------- -282860963(1 row) hash_range(anyrange) 描述:计算range的哈希值。 参数:anyrange类型的数据。 返回值类型:integer 示例: 12345 gaussdb=# select hash_range(numrange(1.1,2.2)); hash_range ------------ 683508754(1 row) hashbpchar(character) 描述:计算bpchar的哈希值。 参数:character类型的数据。 返回值类型:integer 示例: 12345 gaussdb=# select hashbpchar('hello'); hashbpchar ------------- -1870292951(1 row) hashchar(char) 描述:char和布尔数据转换为哈希值。 参数:char类型的数据或者bool类型的数据。 返回值类型:integer 示例: 1 2 3 4 5 6 7 8 91011 gaussdb=# select hashbpchar('hello'); hashbpchar ------------- -1870292951(1 row)gaussdb=# select hashchar('true'); hashchar ------------ 1686226652(1 row) hashenum(anyenum) 描述:枚举类型转哈希值。 参数:anyenum类型的数据。 返回值类型:integer 示例: 1234567 gaussdb=# CREATE TYPE b1 AS ENUM('good', 'bad', 'ugly');CREATE TYPEgaussdb=# call hashenum('good'::b1); hashenum ------------ 1821213359(1 row) hashfloat4(real) 描述:float4转哈希值。 参数:real类型的数据。 返回值类型:integer 示例: 12345 gaussdb=# select hashfloat4(12.1234); hashfloat4 ------------ 1398514061(1 row) hashfloat8(double precision) 描述:float8转哈希值。 参数:double precision类型的数据。 返回值类型:integer 示例: 12345 gaussdb=# select hashfloat8(123456.1234); hashfloat8 ------------ 1673665593(1 row) hashinet(inet) 描述:支持inet / cidr上的哈希索引的功能。返回传入inet的hash值。 参数:inet类型的数据。 返回值类型:integer 示例: 12345 gaussdb=# select hashinet('127.0.0.1'::inet); hashinet ------------- -1435793109(1 row) hashint1(tinyint) 描述:INT1转哈希值。 参数:tinyint类型的数据。 返回值类型:uint32 示例: 12345 gaussdb=# select hashint1(20); hashint1 ------------- -2014641093(1 row) hashint2(smallint) 描述:INT2转哈希值。 参数:smallint类型的数据。 返回值类型:uint32 示例: gaussdb=# select hashint2(20000); hashint2 ------------ -863179081(1 row) 父主题: 函数和操作符
  • 提示信息函数 report_application_error 描述:PL执行过程中,可以使用此函数来抛ERROR。 返回值类型:void 表1 report_application_error参数说明 参数 类型 说明 是否必选 log text error消息的内容。 是 code int4 error消息对应的error code,范围为:-20999 ~ -20000。 否 父主题: 函数和操作符
  • 数据库对象位置函数 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)。 pg_filenode_relation(tablespace oid, filenode oid) 描述:获取对应的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 gaussdb=# 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 gaussdb=# 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 gaussdb=# analyze;ANALYZEgaussdb=# 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用于计算某个独立数据值的空间。 示例: gaussdb=# 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 LARGESERIAL 每4位十进制数占两个字节,小数点前后数字分别计算 浮点类型 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) 字符实际字节数 NVARCHAR(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_get_triggerdef(oid) 描述:获取触发器的定义信息。 参数:待查触发器的OID。 返回值类型:text 示例: gaussdb=# select pg_get_triggerdef(oid) from pg_trigger; pg_get_triggerdef-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- CREATE TRIGGER tg1 BEFORE INSERT ON gtest26 FOR EACH STATEMENT EXECUTE PROCEDURE gtest_trigger_func() CREATE TRIGGER tg03 AFTER INSERT ON gtest26 FOR EACH ROW WHEN ((new.a IS NOT NULL)) EXECUTE PROCEDURE gtest_trigger_func()(2 rows) pg_get_triggerdef(oid, boolean) 描述:获取触发器的定义信息。 参数:待查触发器的OID及是否以pretty方式展示。 仅在创建trigger时指定WHEN条件的情况下,布尔类型参数才生效。 返回值类型:text 示例: gaussdb=# select pg_get_triggerdef(oid,true) from pg_trigger; pg_get_triggerdef-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- CREATE TRIGGER tg1 BEFORE INSERT ON gtest26 FOR EACH STATEMENT EXECUTE PROCEDURE gtest_trigger_func() CREATE TRIGGER tg03 AFTER INSERT ON gtest26 FOR EACH ROW WHEN (new.a IS NOT NULL) EXECUTE PROCEDURE gtest_trigger_func()(2 rows)gaussdb=# select pg_get_triggerdef(oid,false) from pg_trigger; pg_get_triggerdef-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- CREATE TRIGGER tg1 BEFORE INSERT ON gtest26 FOR EACH STATEMENT EXECUTE PROCEDURE gtest_trigger_func() CREATE TRIGGER tg03 AFTER INSERT ON gtest26 FOR EACH ROW WHEN ((new.a IS NOT NULL)) EXECUTE PROCEDURE gtest_trigger_func()(2 rows) 父主题: 函数和操作符
  • 行存压缩系统函数 compress_buffer_stat_info() 描述:查看pca buffer统计信息。 返回值类型:record 表1 compress_buffer_stat_info参数说明 参数类型 参数名 类型 描述 输出参数 ctrl_cnt bigint pca_page_ctrl_t结构体。 输出参数 main_cnt bigint 各个分区所有的main lru链的总数。 输出参数 free_cnt bigint 各分区上free lru链的总数。 输出参数 recycle_times bigint buffer进行lru的淘汰次数。 compress_ratio_info(file_path text) 描述:查看文件压缩率信息。 返回值类型:record 表2 compress_ratio_info参数说明 参数类型 参数名 类型 描述 输入参数 file_path text 相对文件路径。 输出参数 path text 文件相对路径。 输出参数 is_compress boolean 是否为压缩文件。 输出参数 file_count bigint 包含段文件个数。 输出参数 logic_size bigint 逻辑大小,单位是byte。 输出参数 physic_size bigint 实际物理大小,单位byte。 输出参数 compress_ratio text 文件的压缩率。 compress_statistic_info(file_path text,step smallint) 描述:统计文件压缩后的离散度信息。 返回值类型:record 表3 compress_statistic_info参数说明 参数类型 参数名 类型 描述 输入参数 file_path text 文件相对路径。 输入参数 step smallint 采样统计步长。 输出参数 path text 文件相对路径。 输出参数 extent_count bigint extent的数量。 输出参数 dispersion_count bigint 含有离散chunk的页面个数。 输出参数 void_count bigint 还有chunk空洞的页面个数。 compress_address_header(oid regclass, seg_id bigint) 描述:查看文件压缩页面的管理信息。 返回值类型:record 表4 compress_address_header参数说明 参数类型 参数名 类型 描述 输入参数 oid regclass 文件所属表的reloid。 输入参数 seg_id bigint segment文件的序号。 输出参数 extent bigint extent的编号。 输出参数 nblocks bigint extent里的page个数。 输出参数 alocated_chunks integer ext中分配了配多少个chunk。 输出参数 chunk_size integer chunksize大小,单位是byte。 输出参数 algorithm bigint 使用的压缩算法。 compress_address_details(oid regclass, seg_id bigint) 描述:页面chunk使用的详细信息。 返回值类型:record 表5 compress_address_details参数说明 参数类型 参数名 类型 描述 输入参数 oid regclass 文件所属表的reloid。 输入参数 seg_id bigint segment文件的序号。 输出参数 extent bigint extent的编号。 输出参数 extent_block_number bigint 该extent内的页面编号,0~127。 输出参数 block_number bigint 整体页面编号。 输出参数 alocated_chunks integer 该页面用了多少个chunk。 输出参数 nchunks integer 该页面实际用了多少个chunk,不大于alocated_chunks。 输出参数 chunknos integer 用的chunks的编号,从1开始。 父主题: 系统管理函数
  • 段页式存储函数 当前特性是实验室特性,使用时请联系华为工程师提供技术支持。 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) 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段头。 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 | Data extent | 4294967295 | 04158 | 1 | Data extent | 4157 | 0 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表示段页式元数据,目前不支持对元数据所在的物理文件做收缩。该函数仅限工具使用,不建议用户直接使用。 返回值:空 gs_stat_remain_segment_info() 描述:在主机上执行,展示在当前节点上,因为故障等原因而残留的extent。默认只有初始用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以查看,其余用户需要赋权后才可以使用。只支持在主机上执行。残留extent主要分为两类:分配而未被利用的segment和分配出去而未被利用的extent。两者主要区别在于segment会包含多个extent,回收时,要将segment上的extent一并全部回收。 返回值类型: 名称 描述 node_name 节点名称。 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 gs_stat_remain_segment_info(); node_name | space_id | db_id | block_id | type ----------------+----------+-------+----------+--------------- dn_6001 | 16804 | 16803 | 4157 | ALLOC_SEGMENT(1 row) gs_free_remain_segment() 描述:在主机上执行,清理通过函数pg_stat_remain_segment_info查询出的当前库的残留。默认只有初始用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以执行,其余用户需要赋权后才可以使用。只支持在主机上执行。 返回值:bool gs_local_stat_remain_segment_info() 描述:在主机上执行,显示当前节点的段页式残留信息。用户权限、返回值请参考gs_stat_remain_segment_info。 gs_local_free_remain_segment() 描述:在主机上执行,清理当前节点当前库的段页式残留。用户权限、返回值请参考gs_free_remain_segment。 父主题: 系统管理函数
  • 恢复控制函数 恢复信息函数提供了当前备机状态的信息。这些函数可能在恢复期间或正常运行中执行。 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 [, fast boolean ]) 描述:开始执行在线备份。(需要管理员角色或复制的角色) 返回值类型:text 备注:pg_start_backup接受一个用户定义的备份标签(通常这是备份转储文件存放地点的名称)。这个函数向数据库的数据目录写入一个备份标签文件,然后以文本方式返回备份的事务日志起始位置。 12345 gaussdb=# SELECT pg_start_backup('label_goes_here'); pg_start_backup----------------- 0/3000020(1 row) pg_stop_backup() 描述:完成执行在线备份。(需要管理员角色或复制的角色) 返回值类型:text 备注:pg_stop_backup删除pg_start_backup创建的标签文件,并且在事务日志归档区里创建一个备份历史文件。这个历史文件包含给予pg_start_backup的标签、备份的事务日志起始与终止位置、备份的起始和终止时间。返回值是备份的事务日志终止位置。计算出中止位置后,当前事务日志的插入点将自动前进到下一个事务日志文件,这样,结束的事务日志文件可以被立即归档从而完成备份。 pg_switch_xlog() 描述:切换到一个新的事务日志文件。(需要管理员角色) 返回值类型: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 gaussdb=# 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_start_tracked_location() 描述:用于查询cbm解析的起始lsn位置。 返回值类型:text 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回收功能,数据库主节点修复使用。 返回值类型:void pg_disable_delay_xlog_recycle() 描述:关闭延迟xlog回收功能,数据库主节点修复使用。 返回值类型: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_pitr_advance_last_updated_barrier() 描述:在PITR模式下,强制推进上次上传到OBS/NAS介质中的全局最大已归档恢复点到当前点,无入参。 返回值类型:text 备注:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限,运维管理员角色须打开operate_mode。同时只能在集中式的主DN上使用才有效。返回值为当前推进到的最新本地最大已归档恢复点。 gs_pitr_clean_local_barrier_files('delete_timestamp') 描述:清理本地缓存的barrier记录文件。 参数范围:delete_timestamp参数类型为text,为linux时间戳,长度为10位。 返回值类型:text 备注:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限,运维管理员角色须打开operate_mode。返回的结果是删除后本地最老barrier文件的开始时间戳。
  • 咨询锁函数 咨询锁函数用于管理咨询锁(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() 描述:尝试对数据库内所有存活的数据库主节点获取会话级别的排他咨询锁。 返回值类型:Boolean 备注:只允许sysadmin调用,普通用户无权限。 unlock_cluster_ddl() 描述:尝试对数据库主节点会话级别的排他咨询锁。 返回值类型:Boolean 父主题: 系统管理函数
  • 双数据库实例容灾查询函数 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_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_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_upload_obs_file('slot_name', 'src_file', 'dest_file') 描述:两地三中心跨Region容灾特性开启后,主数据库实例上传数据到OBS上的函数。 返回值类型:void slot_name:主数据库实例创建的复制槽的名字。 src_file:主数据库实例数据目录下的需要上传的文件位置。 dest_file:上传到OBS上对应的文件位置。 gs_download_obs_file('slot_name', 'src_file', 'dest_file') 描述:两地三中心跨Region容灾特性开启后,灾备数据库实例从OBS上下载数据到本地的函数。 返回值类型:void slot_name:灾备数据库实例创建的复制槽的名字。 src_file:OBS需要下载的文件位置。 dest_file:灾备数据库实例数据目录下需要存放下载文件对应的文件位置。 gs_get_obs_file_context('file_name', 'slot_name') 描述:两地三中心跨Region容灾特性开启后,查询OBS上对应文件的内容。 返回值类型:text file_name:OBS上文件的文件名。 slot_name:主/灾备数据库实例创建的复制槽的名字。 gs_set_obs_file_context('file_name', 'file_context','slot_name') 描述:两地三中心跨Region容灾特性开启后,在OBS上创建文件并写入对应的内容。 返回值类型:text file_name:OBS上文件的文件名。 file_context: 写入文件的内容。 slot_name:主/灾备数据库实例创建的复制槽的名字。 gs_get_hadr_key_cn() 描述:两地三中心跨Region容灾特性开启后,在OBS上创建文件并写入对应的内容。 返回值类型:text file_name:OBS上文件的文件名。 file_context:写入文件的内容。 slot_name:主/灾备数据库实例创建的复制槽的名字。 gs_hadr_has_barrier_creator() 描述:两地三中心跨Region容灾特性开启后,查询当前节点是否存在barrier_creator线程,存在返回true(需要系统管理员角色)。 返回值类型:Boolean 备注:该函数只有在容灾数据库实例启动计划内switchover时使用。 gs_hadr_in_recovery() 描述:两地三中心跨Region容灾特性开启后,查询当前节点是否处于基于目标barrier的日志恢复中,还在恢复中返回true。只有完成日志恢复,才会启动switchover流程中的灾备数据库实例升为生产数据库实例的步骤(需要系统管理员角色)。 返回值类型:Boolean 备注:该函数只有在容灾数据库实例启动计划内switchover时使用。 gs_streaming_dr_get_switchover_barrier() 描述:两地三中心跨Region容灾-基于流式复制的解决方案中,查询灾备数据库实例的DN实例是否已接收到switchover barrier日志并完成回放,已完成返回true。灾备数据库实例只有在所有DN实例都完成switchover barrier日志回放,才会启动switchover流程中的灾备数据库实例升为生产数据库实例的步骤(需要系统管理员角色)。 返回值类型:Boolean 备注:该函数只有在流式容灾解决方案中容灾数据库实例启动计划内switchover时使用。 gs_streaming_dr_service_truncation_check() 描述:两地三中心跨Region容灾-基于流式复制的解决方案中,查询主数据库实例的DN实例是否已完成switchover barrier日志发送,已完成返回true。只有完成日志发送,才会启动switchover流程中的生产数据库实例降为灾备数据库实例的步骤(需要系统管理员角色)。 返回值类型:Boolean 备注:该函数只有在容灾数据库实例启动计划内switchover时使用。 gs_hadr_local_rto_and_rpo_stat() 描述:显示流式容灾的主数据库实例和备数据库实例日志流控信息(只可在主数据库实例的主DN使用,备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所需要的睡眠时间(单位:微秒)。 gs_hadr_remote_rto_and_rpo_stat() 描述:显示流式容灾其它非本地数据分片的主数据库实例和备数据库实例日志流控信,集中式部署场景不支持该函数。 父主题: 系统管理函数
  • 快照同步函数 快照同步函数是导出当前快照的标识符。 pg_export_snapshot() 描述:保存当前的快照并返回它的标识符。 返回值类型:text 备注:函数pg_export_snapshot保存当前的快照并返回一个文本字符串标识此快照。这个字符串必须传递给想要导入快照的客户端。可用在set transaction snapshot snapshot_id时导入snapshot,但是应用的前提是该事务设置了SERIALIZABLE或REPEATABLE READ隔离级别。而GaussDB Kernel目前是不支持这两种隔离级别的。该函数的输出不可用做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 gaussdb=# 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 gaussdb=# SELECT pg_read_file('postmaster.pid',0,100); pg_read_file --------------------------------------- 53078 + /srv/BigData/hadoop/data1/dbnode+ 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 gaussdb=# SELECT convert_from(pg_read_binary_file('filename'), 'UTF8'); pg_stat_file(filename text) 描述:返回一个文本文件的状态信息。 返回值类型:record 备注:pg_stat_file返回一条记录,其中包含:文件大小、最后访问时间戳、最后更改时间戳、最后文件状态修改时间戳以及标识传入参数是否为目录的Boolean值。典型的用法: 1 gaussdb=# SELECT * FROM pg_stat_file('filename'); 1 gaussdb=# SELECT (pg_stat_file('filename')).modification; 示例: 1 2 3 4 5 6 7 8 9101112 gaussdb=# SELECT convert_from(pg_read_binary_file('postmaster.pid'), 'UTF8'); convert_from -------------------------------------- 4881 + /srv/BigData/gaussdb/data1/dbnode+ 1496308688 + 25108 + /opt/user/Bigdata/gaussdb/gaussdb_tmp + * + 25108001 43352069 +(1 row) 123456789 gaussdb=# 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 gaussdb=# SELECT (pg_stat_file('postmaster.pid')).modification; modification ------------------------ 2017-06-01 17:18:08+08(1 row) 父主题: 系统管理函数
  • 双数据库实例容灾控制函数 双数据库实例容灾控制函数可以创建归档槽,归档槽指定了保存物理日志的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的权限。在正常集群下不要使用is_recovery值为1,否则会创建出恢复槽,导致集群进入恢复不可用。 例如: 创建OBS归档槽: 12345 gaussdb=# 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 gaussdb=# 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删除是否成功,该值都会正常返回。 gaussdb=# select gs_set_obs_delete_location('0/54000000'); gs_set_obs_delete_location ----------------------------- 000000010000000000000054_00(1 row) gs_set_obs_delete_location_with_slotname(cstring, cstring ) 描述:设置某个容灾关系上obs归档日志可删除的位置。第一个参数实际为Log Sequence Number ( LSN ),该位置之前的日志在灾备数据库实例已经完成回放并且落盘,可以在obs上进行删除,第二个参数为归档槽的名称。 返回值类型:xlog_file_name text,表明此次可删除点所在的日志文件名。无论obs删除是否成功,该值都会正常返回。 gs_hadr_do_switchover() 描述:基于OBS的异地容灾解决方案中主数据库实例在执行计划内swithover过程中截断业务的接口。 返回值类型:bool,表明此次业务截断是否成功,是否可以正常进行switchover流程。 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_reload_conf() 描述:导致所有服务器进程重新装载它们的配置文件(需要系统管理员角色)。 返回值类型:Boolean 备注:pg_reload_conf给服务器发送一个SIGHUP信号,导致所有服务器进程重新装载配置文件。 pg_rotate_logfile() 描述:滚动服务器的日志文件(需要系统管理员角色)。 返回值类型:Boolean 备注:pg_rotate_logfile给日志文件管理器发送信号,告诉它立即切换到一个新的输出文件。这个函数只有在redirect_stderr用于日志输出的时候才有用,否则不会产生日志文件管理器子进程。 pg_terminate_backend(pid int) 描述:终止一个后台线程。 返回值类型:Boolean 备注:如果成功,函数返回true,否则返回false。具有SYSADMIN权限的用户,后端进程所连接的数据库的属主,后端进程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。 示例: 1 2 3 4 5 6 7 8 91011 gaussdb=# SELECT pid from pg_stat_activity; pid ----------------- 140657876268816(1 rows)gaussdb=# SELECT pg_terminate_backend(140657876268816); pg_terminate_backend ---------------------- t(1 row) pg_terminate_session(pid int64, sessionid int64) 描述:终止一个后台session。 返回值类型:Boolean 备注:如果成功,函数返回true,否则返回false。具有SYSADMIN权限的用户、会话所连接的数据库的属主、会话的属主、或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。 pg_terminate_active_session_socket(pid int64, sessionid int64) 描述:关闭一个活跃session和客户端的socket连接。 返回值类型:Boolean 备注:如果成功,函数返回true,否则返回false。仅限初始化用户才可使用该函数。 父主题: 系统管理函数
  • 条件表达式函数 coalesce(expr1, expr2, ..., exprn) 描述: 返回参数列表中第一个非NULL的参数值。 COALESCE(expr1, expr2) 等价于CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END。 示例: 12345 gaussdb=# SELECT coalesce(NULL,'hello'); coalesce---------- hello(1 row) 备注: 如果表达式列表中的所有表达式都等于NULL,则本函数返回NULL。 它常用于在显示数据时用缺省值替换NULL。 和CASE表达式一样,COALESCE不会计算不需要用来判断结果的参数;即在第一个非空参数右边的参数不会被计算。 decode(base_expr, compare1, value1, Compare2,value2, … default) 描述:把base_expr与后面的每个compare(n) 进行比较,如果匹配返回相应的value(n)。如果没有发生匹配,则返回default。 示例: 12345 gaussdb=# SELECT decode('A','A',1,'B',2,0); case------ 1(1 row) 备注: 不支持对xml数据类型的操作 nullif(expr1, expr2) 描述:当且仅当expr1和expr2相等时,NULLIF才返回NULL,否则它返回expr1。 nullif(expr1, expr2) 逻辑上等价于CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END。 示例: 12345 gaussdb=# SELECT nullif('hello','world'); nullif -------- hello(1 row) 备注: 不支持对xml数据类型的操作。 如果两个参数的数据类型不同,则: 若两种数据类型之间存在隐式转换,则以其中优先级较高的数据类型为基准将另一个参数隐式转换成该类型,转换成功则进行计算,转换失败则返回错误。如: 12345 gaussdb=# SELECT nullif('1234'::VARCHAR,123::INT4); nullif -------- 1234(1 row) 12 gaussdb=# SELECT nullif('1234'::VARCHAR,'2012-12-24'::DATE);ERROR: invalid input syntax for type timestamp: "1234" 若两种数据类型之间不存在隐式转换,则返回错误。如: 12345 gaussdb=# SELECT nullif(TRUE::BOOLEAN,'2012-12-24'::DATE);ERROR: operator does not exist: boolean = timestamp without time zoneLINE 1: SELECT nullif(TRUE::BOOLEAN,'2012-12-24'::DATE) FROM sys_dummy;^HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. nvl( expr1 , expr2 ) 描述: 如果expr1为NULL则返回expr2。 如果expr1非NULL,则返回expr1。 示例: 12345 gaussdb=# SELECT nvl('hello','world'); nvl ------- hello(1 row) 备注:参数expr1和expr2可以为任意类型,当NVL的两个参数不属于同类型时,看第二个参数是否可以向第一个参数进行隐式转换。如果可以则返回第一个参数类型,否则返回错误。 nvl2( expr1 , expr2,expr3 ) 描述: 如果expr1为NULL,则返回expr3。 如果expr1非NULL,则返回expr2。 此函数在参数a_format_version值为10c和a_format_dev_version值为s1的情况下有效。 示例: 12345 gaussdb=# SELECT nvl2('hello','world','other'); case ------- world(1 row) 备注:参数expr2和expr3可以为任意类型, 当NVL2的后面两个参数不属于同类型时,看expr3参数是否可以向expr2参数进行隐式转换,如果不能隐式转换,会返回错误。如果第一个参数是数值类型,函数在将本参数和其他参数都转换为numeric类型,然后进行比较,对于不能转换的,提示出错信息;第一个参数是其他类型的,函数将其他参数都转换为第一个参数的类型进行比较,对于不能转换的,提示出错信息。 greatest(expr1 [, ...]) 描述:获取并返回参数列表中值最大的表达式的值。 返回值类型: 示例: 12345 gaussdb=# SELECT greatest(1*2,2-3,4-1); greatest ---------- 3(1 row) 12345 gaussdb=# SELECT greatest('HARRY', 'HARRIOT', 'HAROLD'); greatest ---------- HARRY(1 row) 备注: 不支持对xml数据类型的操作。 此函数在参数a_format_version值为10c和a_format_dev_version值为s1的情况下: 如果参数中有任意一个参数的值为null,函数返回null。 如果第一个参数是数值类型,函数将第一个参数和其他参数都转换为numeric类型,然后进行比较,对于不能转换的,提示出错信息;第一个参数是其他类型的,函数将其他参数都转换为第一个参数的类型进行比较,对于不能转换的,提示出错信息。 least(expr1 [, ...]) 描述:获取并返回参数列表中值最小的表达式的值。 示例: 12345 gaussdb=# SELECT least(1*2,2-3,4-1); least ------- -1(1 row) 12345 gaussdb=# SELECT least('HARRY','HARRIOT','HAROLD'); least -------- HAROLD(1 row) 备注: 不支持对xml数据类型的操作。 此函数在参数a_format_version值为10c和a_format_dev_version值为s1的情况下: 如果参数中有任意一个参数的值为null,函数返回null。 如果第一个参数是数值类型,函数将第一个参数和其他参数都转换为numeric类型,然后进行比较,对于不能转换的,提示出错信息;第一个参数是其他类型的,函数将其他参数都转换为第一个参数的类型进行比较,对于不能转换的,提示出错信息。 EMPTY_BLOB() 描述:使用EMPTY_BLOB在INSERT或UPDATE语句中初始化一个BLOB变量,取值为NULL。 返回值类型:BLOB 示例: 123456 --新建表gaussdb=# CREATE TABLE blob_tb(b blob,id int);--插入数据gaussdb=# INSERT INTO blob_tb VALUES (empty_blob(),1);--删除表gaussdb=# DROP TABLE blob_tb; 备注:使用DBE_LOB.GET_LENGTH求得的长度为0。 EMPTY_CLOB() 描述:使用EMPTY_CLOB在INSERT或UPDATE语句中初始化一个CLOB变量,取值为空。 此函数在参数a_format_version值为10c和a_format_dev_version值为s1的情况下有效。 返回值类型:CLOB 示例: 123456 --新建表gaussdb=# CREATE TABLE clob_tb(c clob,id int);--插入数据gaussdb=# INSERT INTO clob_tb VALUES (empty_clob(),1);--删除表gaussdb=# DROP TABLE clob_tb; 备注:使用DBE_LOB.GET_LENGTH求得的长度为0。 lnnvl(condition) 描述:lnnvl用于某个查询语句的where子句中,如果条件为true就返回false,如果条件为unknown或者false,就返回true。 condition:必须为逻辑表达式,但不能用于复合条件如and,or,或者between。 返回类型:bool 示例: 1 2 3 4 5 6 7 8 910111213141516171819 --新建表gaussdb=# CREATE TABLE student_demo (name VARCHAR2(20), grade NUMBER(10,2));CREATE TABLE--插入数据gaussdb=# INSERT INTO student_demo VALUES ('name0',0);INSERT 0 1gaussdb=# INSERT INTO student_demo VALUES ('name1',1);INSERT 0 1gaussdb=# INSERT INTO student_demo VALUES ('name2',2);INSERT 0 1--调用lnnvlgaussdb=# SELECT * FROM student_demo WHERE LNNVL(name = 'name1'); name | grade -------+------- name0 | 0.00 name2 | 2.00(2 rows) 此函数在参数a_format_version值为10c和a_format_dev_version值为s2的情况下生效。
  • 配置设置函数 配置设置函数是可以用于查询以及修改运行时配置参数的函数。 current_setting(setting_name) 描述:当前的设置值。 返回值类型:text 备注:current_setting用于以查询形式获取setting_name的当前值。和SQL语句SHOW是等效的。比如: 123456 gaussdb=# 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,则new_value将只应用于当前事务。如果希望new_value应用于当前会话,可以使用false,和SQL语句SET是等效的。例如: 123456 gaussdb=# SELECT set_config('log_statement_stats', 'off', false); set_config------------ off(1 row) 父主题: 系统管理函数
  • 示例 byteawithoutorderwithequalcolin、byteawithoutorderwithequalcolout等密态等值函数为数据库内核中数据类型byteawithoutorderwithequalcol指定的in、out、send、recv等读写格式转换函数,具体可参考bytea类型的byteain、byteaout等函数,但会对本地的cek进行验证,需要密文字段中有本地存在的cekoid才能执行成功。 1 2 3 4 5 6 7 8 9101112131415 -- 例如存在加密表int_type,int_col2为其加密列-- 使用非密态客户端连接数据库,查询加密列密文gaussdb=# select int_col2 from int_type; int_col2------------------------------------------------------------------------------------------------------------------------------------------------------ \x01c35301bf421c8edf38c34704bcc82838742917778ccb402a1b7452ad4a6ac7371acc0ac33100000035fe3424919854c86194f1aa5bb4e1ca656e8fc6d05324a1419b69f488bdc3c6(1 row)-- 将加密列密文当做byteawithoutorderwithequalcolin入参,格式从cstring输入转码转化成内部byteawithoutorderwithequalcol形式gaussdb=# select byteawithoutorderwithequalcolin('\x01c35301bf421c8edf38c34704bcc82838742917778ccb402a1b7452ad4a6ac7371acc0ac33100000035fe3424919854c86194f1aa5bb4e1ca656e8fc6d05324a1419b69f488bdc3c6'); byteawithoutorderwithequalcolin------------------------------------------------------------------------------------------------------------------------------------------------------ \x01c35301bf421c8edf38c34704bcc82838742917778ccb402a1b7452ad4a6ac7371acc0ac33100000035fe3424919854c86194f1aa5bb4e1ca656e8fc6d05324a1419b69f488bdc3c6(1 row) 由于byteawithoutorderwithequalcolin等的实现会对cek进行查找,并且判断是否为正常加密后的数据类型。 因此如果用户输入数据的格式不是加密后的数据格式,并且在本地不存在对应cek的情况下,会返回错误。 1 2 3 4 5 6 7 8 9101112131415 gaussdb=# SELECT * FROM byteawithoutorderwithequalcolsend('\x907219912381298461289346129'::byteawithoutorderwithequalcol);ERROR: cek with OID 596711794 not foundLINE 1: SELECT * FROM byteawithoutorderwithequalcolsend('\x907219912... ^gaussdb=# SELECT * FROM byteawithoutordercolout('\x90721901999999999999912381298461289346129');ERROR: cek with OID 2566986098 not foundLINE 1: SELECT * FROM byteawithoutordercolout('\x9072190199999999999... SELECT * FROM byteawithoutorderwithequalcolrecv('\x90721901999999999999912381298461289346129'::byteawithoutorderwithequalcol);ERROR: cek with OID 2566986098 not found ^gaussdb=# SELECT * FROM byteawithoutorderwithequalcolsend('\x90721901999999999999912381298461289346129'::byteawithoutorderwithequalcol);ERROR: cek with OID 2566986098 not foundLINE 1: SELECT * FROM byteawithoutorderwithequalcolsend('\x907219019... ^
共100000条