云数据库 GAUSSDB-系统信息函数:会话信息函数

时间:2024-12-06 14:14:48

会话信息函数

  • SYS_CONTEXT()

    描述:返回当前时刻与上下文命名空间'namespace'关联的参数'parameter'的值,该函数功能在第一个入参为'userenv'时与USERENV()功能一致。

    当前支持的第二个入参参数:

    'current_edition_name'、'current_schema'、'current_sql'、'current_user'、'current_userid'、'database_role'、'ip_address'、'is_apply_server'、'isdba'、'nls_currency'、'nls_date_format'、'nls_date_language'、'server_host'、'service_name'、'session_user'、'session_userid'、'db_name'、'db_unique_name'、'instance'、'instance_name'、'current_edition_id'、'current_schemaid'、'lang'、'language'、'sid'

    返回值类型:text

    示例:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    SELECT SYS_CONTEXT('userenv','NLS_CURRENCY');
     sys_context 
    -------------
     $
    (1 row)
    
    SELECT SYS_CONTEXT('userenv','NLS_DATE_FORMAT');
      sys_context  
    ---------------
     ISO, MDY
    (1 row)
    
    SELECT SYS_CONTEXT('userenv','NLS_DATE_LANGUAGE');
     sys_context 
    -------------
     en_US.UTF-8
    (1 row)
    
  • USERENV()

    描述:返回当前时刻与上下文命名空间'namespace'关联的参数'parameter'的值,该函数功能与SYS_CONTEXT()在第一个入参为'userenv'时功能一致。

    当前支持的入参:

    'current_edition_name'、'current_schema'、'current_sql'、'current_user'、'current_userid'、'database_role'、'ip_address'、'is_apply_server'、'isdba'、'nls_currency'、'nls_date_format'、'nls_date_language'、'server_host'、'service_name'、'session_user'、'session_userid'、'db_name'、'db_unique_name'、'instance'、'instance_name'、'current_edition_id'、'current_schemaid'、'lang'、'language'、'sid'

    当前不支持的入参:

    'action'、'is_application_root'、'is_application_pdb'、'audited_cursorid'、'authenticated_identity'、'authentication_data'、'authentication_method'、'cdb_domain'、'cdb_name'、'client_identifier'、'con_id'、'con_name'、'current_sql_length'、'db_domain'、'db_supplemental_log_level'、'dblink_info'、'drain_status'、'entryid'、'enterprise_identity'、'fg_job_id'、'global_uid'、'identification_type'、'is_dg_rolling_upgrade'、'ldap_server_type'、'module'、'network_protocol'、'nls_calendar'、'nls_sort'、'nls_territory'、'oracle_home'、'os_user'、'platform_slash'、'policy_invoker'、'proxy_enterprise_identity'、'proxy_user'、'proxy_userid'、'scheduler_job'、'session_edition_id'、'session_edition_name'、'sessionid'、'statementid'、'terminal'、'unified_audit_sessionid'、'session_default_collation'、'client_info'、'bg_job_id'、'client_program_name'、'current_bind'、'global_context_memory'、'host'、'current_sqln'

    返回值类型:text

    示例:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    SELECT USERENV('sid');
     userenv 
    ---------
     955
    (1 row)
    
    SELECT USERENV('instance');
     userenv 
    ---------
     14524
    (1 row)
    
    SELECT USERENV('action');
     userenv 
    ---------
    
    (1 row)
    
    SELECT USERENV('actijj');
    ERROR:  unrecognized configuration parameter "actijj"
    CONTEXT:  PL/pgSQL function userenv(text) line 114 at RETURN
    referenced column: userenv
    

    当入参为当前不支持的入参时,则返回NULL;入参为非法入参时报错。

  • current_catalog()

    描述:当前数据库的名称(在标准SQL中称"catalog")。

    返回值类型:name

    示例:

    1
    2
    3
    4
    5
    testdb=# SELECT current_catalog;
     current_database
    ------------------  
     testdb
    (1 row)
    
  • current_database()

    描述:当前数据库的名称。

    返回值类型:name

    示例:

    1
    2
    3
    4
    5
    testdb=# SELECT current_database();
     current_database
    ------------------
     testdb
    (1 row)
    
  • current_query()

    描述:由客户端提交的当前执行语句(可能包含多个声明)。

    返回值类型:text

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT current_query();
          current_query
    -------------------------
     SELECT current_query();
    (1 row)
    
  • current_schema[()]

    描述:当前模式的名称。

    返回值类型:name

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT current_schema();
     current_schema
    ----------------
     public
    (1 row)
    

    备注:current_schema返回在搜索路径中第一个顺位有效的模式名。(如果搜索路径为空则返回NULL,没有有效的模式名也返回NULL)。如果创建表或者其他命名对象时没有声明目标模式,则将使用这些对象的模式。

  • current_schemas(Boolean)

    描述:搜索路径中的模式名称。

    返回值类型:name[]

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT current_schemas(true);
       current_schemas
    ---------------------
     {pg_catalog,public}
    (1 row)
    

    备注:

    current_schemas(Boolean)返回搜索路径中所有模式名称的数组。布尔选项决定像pg_catalog这样隐含包含的系统模式是否包含在返回的搜索路径中。

    搜索路径可以通过运行时设置更改。命令是:

    1
    SET search_path TO schema [, schema, ...]
    
  • database()

    描述:返回当前的schema的名称。

    参数:无

    返回值类型:name

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT database();
     database 
    ----------
     public
    (1 row)
    

    此函数在MYSQL模式数据库中,且GUC参数b_format_version = '5.7'和b_format_dev_version = 's1'时生效。

  • current_user()

    描述:当前执行环境下的用户名。

    返回值类型:name

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT current_user;
     current_user
    --------------
     omm
    (1 row)
    

    备注:current_user用于权限检查的用户标识。通常表示会话用户,可以通过SET ROLE进行修改。在函数执行的过程中,受SECURITY DEFINER属性影响。

  • definer_current_user

    描述:当前执行环境下的用户名。

    返回值类型:name

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT definer_current_user();
     definer_current_user
    ----------------------
     omm
    (1 row)
    

    备注:通常definer_current_user和current_user结果相同,但在存储过程中执行该函数会返回定义当前存储过程的用户名。

  • pg_current_sessionid()

    描述:当前执行环境下的会话ID。

    返回值类型:text

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT pg_current_sessionid();
        pg_current_sessionid
    ----------------------------
     1579228402.140190434944768
    (1 row)
    

    备注:pg_current_sessionid()是用于获取当前执行环境下的会话ID。其组成结构为:时间戳.会话ID,当线程池模式开启(enable_thread_pool=on)时,会话ID为SessionID;而线程池模式关闭时,会话ID实际为线程ID。

  • 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)
  • tablespace_oid_name(oid)

    描述:根据表空间oid,查找表空间名称。

    返回值类型:text

    示例:

    1
    2
    3
    4
    5
    gaussdb=# select tablespace_oid_name(1663);
     tablespace_oid_name
    ---------------------
     pg_default
    (1 row)
    
  • inet_client_addr()

    描述:连接的远端地址。inet_client_addr返回当前客户端的IP地址。

    此函数只有在远程连接模式下有效。

    返回值类型:inet

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT inet_client_addr();
     inet_client_addr
    ------------------
     10.10.0.50
    (1 row)
    
  • inet_client_port()

    描述:连接的远端端口。inet_client_port返回当前客户端的端口号。

    此函数只有在远程连接模式下有效。

    返回值类型:int

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT inet_client_port();
     inet_client_port
    ------------------
                33143
    (1 row)
    
  • inet_server_addr()

    描述:连接的本地地址。inet_server_addr返回服务器接收当前连接用的IP地址。

    此函数只有在远程连接模式下有效。

    返回值类型:inet

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT inet_server_addr();
     inet_server_addr
    ------------------
     10.10.0.13
    (1 row)
    
  • inet_server_port()

    描述:连接的本地端口。inet_server_port返回接收当前连接的端口号。如果是通过Unix-domain socket连接的,则所有这些函数都返回NULL。

    此函数只有在远程连接模式下有效。

    返回值类型:int

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT inet_server_port();
     inet_server_port
    ------------------
                 8000
    (1 row)
    
  • pg_backend_pid()

    描述:当前会话连接的服务线程的线程ID。

    返回值类型:int

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT pg_backend_pid();
     pg_backend_pid
    -----------------
     140229352617744
    (1 row)
    
  • pg_conf_load_time()

    描述:配置加载时间。pg_conf_load_time返回最后加载服务器配置文件的时间戳。

    返回值类型:timestamp with time zone

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT pg_conf_load_time();
          pg_conf_load_time       
    ------------------------------
     2017-09-01 16:05:23.89868+08
    (1 row)
    
  • pg_my_temp_schema()

    描述:会话的临时模式的OID,不存在则为0。

    返回值类型:oid

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT pg_my_temp_schema();
     pg_my_temp_schema 
    -------------------
                     0
    (1 row)
    

    备注:pg_my_temp_schema返回当前会话中临时模式的OID,如果不存在(没有创建临时表)的话则返回0。如果给定的OID是其它会话中临时模式的OID,pg_is_other_temp_schema则返回true。

  • pg_is_other_temp_schema(oid)

    描述:是否为另一个会话的临时模式。

    返回值类型:Boolean

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT pg_is_other_temp_schema(25356);
     pg_is_other_temp_schema
    -------------------------
     f
    (1 row)
    
  • pg_listening_channels()

    描述:会话正在侦听的信道名称。

    返回值类型:setof text

    示例:

    1
    2
    3
    4
    gaussdb=# SELECT pg_listening_channels();
     pg_listening_channels
    -----------------------
    (0 rows)
    

    备注:pg_listening_channels返回当前会话正在侦听的一组信道名称。

  • pg_postmaster_start_time()

    描述:服务器启动时间。pg_postmaster_start_time返回服务器启动时的timestamp with time zone。

    返回值类型:timestamp with time zone

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT pg_postmaster_start_time();
       pg_postmaster_start_time   
    ------------------------------
     2017-08-30 16:02:54.99854+08
    (1 row)
    
  • sessionid2pid()

    描述:从sessionid中得到pid信息(如: pv_session_stat中sessid列)。

    返回值类型:int8

    示例:

    1
    2
    3
    4
    5
    6
    gaussdb=# select sessionid2pid(sessid::cstring) from pv_session_stat limit 2;
      sessionid2pid
    -----------------
     139973107902208
     139973107902208
    (2 rows)
    
  • session_context( 'namespace' , 'parameter')

    描述:获取并返回指定namespace下参数parameter的值。

    返回值类型:VARCHAR

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT session_context('USERENV', 'CURRENT_SCHEMA');
     session_context 
    -------------
     public
    (1 row)
    

    根据当前所在的实际schema而变化。

    备注:目前仅支持SESSION_CONTEXT('USERENV', 'CURRENT_SCHEMA') 和SESSION_CONTEXT('USERENV', 'CURRENT_USER')两种格式。

  • pg_trigger_depth()

    描述:触发器的嵌套层次。

    返回值类型:int

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT pg_trigger_depth();
     pg_trigger_depth 
    ------------------
                    0
    (1 row)
    
  • opengauss_version()

    描述:引用的openGauss内核版本信息。

    返回值类型:text

    使用示例如下,查询结果中的x.x.x请已实际输出为准:

    1
    2
    3
    4
    5
    gaussdb=# SELECT opengauss_version();
     opengauss_version
    -------------------
     x.x.x
    (1 row)
    
  • gs_deployment()

    描述:当前系统的部署形态信息,对于分布式系统来说返回的是“Distribute”。

    返回值类型:text

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT gs_deployment();
     gs_deployment
    ---------------
     Distribute
    (1 row)
    
  • session_user

    描述:会话用户名。

    返回值类型:name

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT session_user;
     session_user
    --------------
     omm
    (1 row)
    

    备注:session_user通常是连接当前数据库的初始用户,不过系统管理员可以用SET SESSION AUTHORIZATION修改这个设置。

  • user

    描述:等价于current_user。

    返回值类型:name

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT user;
     current_user
    --------------
     omm
    (1 row)
    
  • get_shard_oids_byname()

    描述:输入node的名字返回node的oid。

    返回值类型:oid

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT get_shard_oids_byname('datanode1');
     get_shard_oids_byname
    -----------------------
     {16385}
    (1 row)
    
  • getpgusername()

    描述:获取数据库用户名。

    返回值类型:name

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT getpgusername();
     getpgusername 
    ---------------
      GaussDB _userna
    (1 row)
    
  • getdatabaseencoding()

    描述:获取数据库编码方式。

    返回值类型:name

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT getdatabaseencoding();
     getdatabaseencoding 
    ---------------------
     SQL_ASCII
    (1 row)
    
  • version()

    描述:版本信息。version返回一个描述服务器版本信息的字符串。

    返回值类型:text

    示例:

    1
    2
    3
    4
    5
    gaussdb=# SELECT version();
                                                                                             version
    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     gaussdb (GaussDB XXX.XXX.XXX build f521c606) compiled at 2021-09-16 14:55:22 commit 2935 last mr 6385 release
    (1 row)
    
support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0380.html