十二、系统信息函数:
    
1. PostgreSQL中提供的和数据库相关的函数列表:

名字返回类型描述
current_database()name当前数据库的名字
current_schema()name当前模式的名字
current_schemas(boolean)name[]在搜索路径中的模式名字
current_username目前执行环境下的用户名
inet_client_addr()inet连接的远端地址
inet_client_port()int连接的远端端口
inet_server_addr()inet连接的本地地址
inet_server_port()int连接的本地端口
session_username会话用户名
pg_postmaster_start_time()timestamppostmaster启动的时间
usernamecurrent_user
version()textPostgreSQL版本信息

    2. 允许用户在程序里查询对象访问权限的函数:

名字描述可用权限
has_table_privilege(user,table,privilege)用户是否有访问表的权限SELECT/INSERT/UPDATE/DELETE/RULE/REFERENCES/TRIGGER
has_table_privilege(table,privilege)当前用户是否有访问表的权限SELECT/INSERT/UPDATE/DELETE/RULE/REFERENCES/TRIGGER
has_database_privilege(user,database,privilege)用户是否有访问数据库的权限CREATE/TEMPORARY
has_database_privilege(database,privilege)当前用户是否有访问数据库的权限CREATE/TEMPORARY
has_function_privilege(user,function,privilege)用户是否有访问函数的权限EXECUTE
has_function_privilege(function,privilege)当前用户是否有访问函数的权限EXECUTE
has_language_privilege(user,language,privilege)用户是否有访问语言的权限USAGE
has_language_privilege(language,privilege)当前用户是否有访问语言的权限USAGE
has_schema_privilege(user,schema,privilege)用户是否有访问模式的权限CREAT/USAGE 
has_schema_privilege(schema,privilege)当前用户是否有访问模式的权限CREAT/USAGE
has_tablespace_privilege(user,tablespace,privilege)用户是否有访问表空间的权限CREATE
has_tablespace_privilege(tablespace,privilege)当前用户是否有访问表空间的权限CREATE

    注:以上函数均返回boolean类型。要评估一个用户是否在权限上持有赋权选项,给权限键字附加 WITH GRANT OPTION;比如 'UPDATE WITH GRANT OPTION'。 
    3. 模式可视性查询函数:
    那些判断一个对象是否在当前模式搜索路径中可见的函数。 如果一个表所在的模式在搜索路径中,并且没有同名的表出现在搜索路径的更早的地方,那么就说这个表视可见的。 它等效于表可以不带明确模式修饰进行引用。

名字描述应用类型
pg_table_is_visible(table_oid)该表/视图是否在搜索路径中可见regclass
pg_type_is_visible(type_oid)该类/视图型是否在搜索路径中可见regtype
pg_function_is_visible(function_oid)该函数是否在搜索路径中可见regprocedure
pg_operator_is_visible(operator_oid)该操作符是否在搜索路径中可见regoperator
pg_opclass_is_visible(opclass_oid)该操作符表是否在搜索路径中可见regclass
pg_conversion_is_visible(conversion_oid)转换是否在搜索路径中可见regoperator

    注:以上函数均返回boolean类型,所有这些函数都需要对象 OID 标识作为检查的对象。
    postgres=# SELECT pg_table_is_visible('testtable'::regclass);
     pg_table_is_visible
    ---------------------
     t
    (1 row)

    4. 系统表信息函数:

名字返回类型描述
format_type(type_oid,typemod)text获取一个数据类型的SQL名称
pg_get_viewdef(view_oid)text为视图获取CREATE VIEW命令
pg_get_viewdef(view_oid,pretty_bool)text为视图获取CREATE VIEW命令
pg_get_ruledef(rule_oid)text为规则获取CREATE RULE命令
pg_get_ruledef(rule_oid,pretty_bool)text为规则获取CREATE RULE命令
pg_get_indexdef(index_oid)text为索引获取CREATE INDEX命令
pg_get_indexdef(index_oid,column_no,pretty_bool)text为索引获取CREATE INDEX命令, 如果column_no不为零,则是只获取一个索引字段的定义
pg_get_triggerdef(trigger_oid)text为触发器获取CREATE [CONSTRAINT] TRIGGER
pg_get_constraintdef(constraint_oid)text获取一个约束的定义
pg_get_constraintdef(constraint_oid,pretty_bool)text获取一个约束的定义
pg_get_expr(expr_text,relation_oid)text反编译一个表达式的内部形式,假设其中的任何Vars都引用第二个参数指出的关系
pg_get_expr(expr_text,relation_oid, pretty_bool)text反编译一个表达式的内部形式,假设其中的任何Vars都引用第二个参数指出的关系
pg_get_userbyid(roleid)name获取给出的ID的角色名
pg_get_serial_sequence(table_name,column_name)text获取一个serial或者bigserial字段使用的序列名字
pg_tablespace_databases(tablespace_oid)setof oid获取在指定表空间(OID表示)中拥有对象的一套数据库的OID的集合

    这些函数大多数都有两个变种,其中一个可以选择对结果的"漂亮的打印"。 漂亮打印的格式更容易读,但是缺省的格式更有可能被将来的PostgreSQL版本用同样的方法解释;如果是用于转储,那么尽可能避免使用漂亮打印。 给漂亮打印参数传递false生成的结果和那个没有这个参数的变种生成的结果完全一样。

、系统管理函数:
    1. 查询以及修改运行时配置参数的函数:

名字返回类型描述
current_setting(setting_name)text当前设置的值
set_config(setting_name,new_value,is_local)text设置参数并返回新值

    current_setting用于以查询形式获取setting_name设置的当前数值。它和SQL命令SHOW是等效的。 比如:
    MyTest=# SELECT current_setting('datestyle');
     current_setting
    -----------------
     ISO, YMD
    (1 row)
    set_config将参数setting_name设置为new_value。如果is_local设置为true,那么新数值将只应用于当前事务。如果你希望新的数值应用于当前会话,那么应该使用false。它等效于SQL命令SET。比如: 
    MyTest=# SELECT set_config('log_statement_stats','off', false);
     set_config
    ------------
     off
    (1 row)
    
    2. 数据库对象尺寸函数:

名字返回类型描述
pg_tablespace_size(oid)bigint指定OID代表的表空间使用的磁盘空间
pg_tablespace_size(name)bigint指定名字的表空间使用的磁盘空间
pg_database_size(oid)bigint指定OID代表的数据库使用的磁盘空间
pg_database_size(name)bigint指定名称的数据库使用的磁盘空间
pg_relation_size(oid)bigint指定OID代表的表或者索引所使用的磁盘空间
pg_relation_size(text)bigint指定名称的表或者索引使用的磁盘空间。这个名字可以用模式名修饰
pg_total_relation_size(oid)bigint指定OID代表的表使用的磁盘空间,包括索引和压缩数据
pg_total_relation_size(text)bigint指定名字的表所使用的全部磁盘空间,包括索引和压缩数据。表名字可以用模式名修饰。
pg_size_pretty(bigint)text把字节计算的尺寸转换成一个人类易读的尺寸单位

    3. 数据库对象位置函数:  

名字返回类型描述
pg_relation_filenode(relation regclass)oid获取指定对象的文件节点编号(通常为对象的oid值)。
pg_relation_filepath(relation regclass)text获取指定对象的完整路径名。

    mydatabase=# select pg_relation_filenode('testtable');
     pg_relation_filenode
    ----------------------
                    17877
    (1 row)    
    mydatabase=# select pg_relation_filepath('testtable');
                 pg_relation_filepath
    ----------------------------------------------
     pg_tblspc/17633/PG_9.1_201105231/17636/17877
    (1 row)
    

 

One Response


    还没有评论!
1  

Leave your comment

请留下您的姓名(*)

请输入正确的邮箱地址(*)

请输入你的评论(*)


感谢开源 © 2016. All rights reserved.&3Q Open Source&^_^赣ICP备15012863号-1^_^
乐于分享共同进步 KreativeThemes