# 9.26.系统信息功能和操作员

表9.65显示了提取会话和系统信息的几个函数。

除了本节列出的功能外,还有许多与统计系统相关的功能,它们也提供系统信息。看见第28.2.2节了解更多信息。

表9.65.会话信息功能

作用

描述
当前目录名称

当前_数据库() →名称

返回当前数据库的名称。(在SQL标准中,数据库被称为“目录”,所以当前目录是标准的拼写。)
当前查询() →文本

返回客户端提交的当前执行查询的文本(可能包含多条语句)。
当前职位名称

这相当于当前用户.
当前_模式名称

当前_模式 () → 名称

返回搜索路径中第一个架构的名称(如果搜索路径为空,则返回空值)。这是一个模式,将用于在未指定目标模式的情况下创建的任何表或其他命名对象。
当前_模式 ( 包括 布尔值 ) → 姓名[]

按优先级顺序返回当前在有效搜索路径中的所有架构的名称数组。(当前版本中的项目)搜索_路径与现有可搜索模式不对应的设置将被忽略。)如果布尔参数为符合事实的,然后隐式搜索系统模式,如pg_目录包括在结果中。
当前用户名称

返回当前执行上下文的用户名。
inet_客户地址 () → 内特

返回当前客户端的IP地址,或无效的如果当前连接是通过Unix域套接字进行的。
inet_客户端_端口 () → 整数

返回当前客户端的IP端口号,或无效的如果当前连接是通过Unix域套接字进行的。
inet_服务器_地址 () → 内特

返回服务器接受当前连接的IP地址,或无效的如果当前连接是通过Unix域套接字进行的。
inet_服务器_端口 () → 整数

返回服务器接受当前连接的IP端口号,或无效的如果当前连接是通过Unix域套接字进行的。
pg_后端_pid () → 整数

返回附加到当前会话的服务器进程的进程ID。
屏蔽屏蔽 ( 整数 ) → 整数[]

返回会话的进程ID数组,这些会话使用指定的进程ID阻止服务器进程获取锁,如果没有这样的服务器进程或它未被阻止,则返回空数组。

如果一个服务器进程持有一个与被阻止进程的锁请求冲突的锁(硬块),或者正在等待一个与被阻止进程的锁请求冲突且在等待队列中位于其前面的锁(软块),则会阻止另一个服务器进程。当使用并行查询时,结果总是列出客户端可见的进程ID(即,pg_后端_pid结果)即使实际锁由童工进程持有或等待。因此,结果中可能存在重复的PID。还要注意,当准备好的事务持有冲突锁时,它将由零进程ID表示。

频繁调用此函数可能会对数据库性能产生一定影响,因为它需要在短时间内以独占方式访问锁管理器的共享状态。
pg_conf_load_time () → 带时区的时间戳

返回上次加载服务器配置文件的时间。如果当前会话当时处于活动状态,则此时会话本身将重新读取配置文件(因此,不同会话中的读取将略有不同)。否则,邮局主管进程将重新读取配置文件。
当前日志文件 ( [ 文本 ] ) → 文本

返回日志收集器当前使用的日志文件的路径名。路径包括日志_目录目录和单个日志文件名。结果是无效的如果日志收集器被禁用。当存在多个日志文件时,每个文件的格式不同,当前日志文件不带参数返回在有序列表中找到的第一种格式的文件路径:标准错误, csvlog. 无效的如果没有任何日志文件具有这些格式,则返回。要请求有关特定日志文件格式的信息,请提供csvlog标准错误作为可选参数的值。结果是无效的如果未在中配置请求的日志格式日志_目的地.结果反映了当前日志文件文件
pg_我的临时模式 () → 老年人

返回当前会话临时架构的OID,如果没有,则返回零(因为它没有创建任何临时表)。
pg_是另一个临时模式 ( 老年人 ) → 布尔值

如果给定OID是另一个会话的临时架构的OID,则返回true。(例如,这可能有助于从目录显示中排除其他会话的临时表。)
pg_jit_可用 () → 布尔值

如果JIT编译器扩展可用,则返回true(请参阅第32章)还有准时制配置参数设置为在…上.
pg_监听频道 () → 文本集

返回当前会话正在侦听的异步通知通道的名称集。
pg_通知_队列_使用 () → 双精度

返回等待处理的通知当前占用的异步通知队列最大大小的分数(0–1)。看见通知了解更多信息。
邮政局长开始时间 () → 带时区的时间戳

返回服务器启动的时间。
pg_安全_快照_阻塞_pids ( 整数 ) → 整数[]

返回会话的进程ID数组,这些会话使用指定的进程ID阻止服务器进程获取安全快照,如果没有这样的服务器进程或它未被阻止,则返回空数组。

运行可序列化事务块a可序列化只读可延迟事务从获取快照开始,直到后者确定避免使用任何谓词锁是安全的。看见第13.2.3节有关可序列化和可延迟事务的更多信息。

频繁调用此函数可能会对数据库性能产生一些影响,因为它需要在短时间内访问谓词锁管理器的共享状态。
触发深度 () → 整数

返回PostgreSQL触发器的当前嵌套级别(如果未直接或间接从触发器内部调用,则为0)。
会话用户名称

返回会话用户的名称。
使用者名称

这相当于当前用户.
版本 () → 文本

返回描述PostgreSQL server版本的字符串。你也可以从服务器_版本,或供机器可读版本使用服务器_版本_号码.软件开发者应该使用服务器版本号(从8.2开始提供)或PQserverVersion而不是解析文本版本。

# 笔记

当前目录, 当前职位, 当前_模式, 当前用户, 会话用户使用者在SQL中具有特殊的语法状态:调用它们时必须不带尾随括号。在PostgreSQL中,可以选择将括号与当前_模式,但与其他人不同。

这个会话用户通常是启动当前数据库连接的用户;但是超级用户可以使用设置会话授权这个当前用户适用于权限检查的用户标识符。通常情况下,它等于会话用户,但可以使用设定角色。在使用属性执行函数的过程中,它也会发生变化安全定义者.在Unix术语中,会话用户是“真正的用户”,而当前用户是“有效用户”。当前职位使用者是的同义词当前用户(SQL标准对当前职位当前用户,但PostgreSQL没有,因为它将用户和角色统一为一种实体。)

表9.66列出允许以编程方式查询对象访问权限的函数。(见第5.7节有关特权的详细信息。)在这些函数中,可以通过名称或OID指定要查询其权限的用户(pg_authid.老年人),或者如果名称为平民的然后检查公共伪角色的权限。还有*使用者*参数可以完全省略,在这种情况下当前用户这是假定的。被查询的对象可以通过名称或OID来指定。按名称指定时,如果相关,可以包括架构名称。感兴趣的访问权限由文本字符串指定,该字符串必须计算为对象类型的适当权限关键字之一(例如。,选择).或者,授予期权可以添加到特权类型中,以测试是否使用grant选项持有该特权。此外,可以用逗号分隔列出多个特权类型,在这种情况下,如果持有任何列出的特权,结果将为真。(特权字符串的大小写不重要,特权名称之间允许有额外的空格,但特权名称内不允许有额外的空格。)例如:

SELECT has_table_privilege('myschema.mytable', 'select');
SELECT has_table_privilege('joe', 'mytable', 'INSERT, SELECT WITH GRANT OPTION');

表9.66.访问权限查询功能

作用

描述
有任何列特权吗 ( [ 使用者 名称老年人, ] 桌子 文本老年人, 特权 文本 ) → 布尔值

用户对表的任何列都有权限吗?如果为整个表保留了特权,或者为至少一列授予了列级特权,则此操作会成功。允许的特权类型包括选择, 插入, 使现代化推荐人.
拥有_列_特权 ( [ 使用者 名称老年人, ] 桌子 文本老年人, 文本短整型, 特权 文本 ) → 布尔值

用户是否具有指定表列的权限?如果为整个表保留了权限,或者为该列授予了列级权限,则此操作会成功。该列可以通过名称或属性号指定(pg_属性.阿特纳姆).允许的权限类型为选择, 插入, 使现代化推荐人.
拥有_数据库_权限 ( [ 使用者 名称老年人, ] 数据库 文本老年人, 特权 文本 ) → 布尔值

用户对数据库有权限吗?允许的特权类型包括创造, 连接, 短暂的临时雇员(相当于短暂的).
拥有_外国_数据_包装_权限 ( [ 使用者 名称老年人, ] fdw 文本老年人, 特权 文本 ) → 布尔值

用户是否拥有外部数据包装的权限?唯一允许的特权类型是用法.
拥有_功能_特权 ( [ 使用者 名称老年人, ] 作用 文本老年人, 特权 文本 ) → 布尔值

用户是否有功能权限?唯一允许的特权类型是处决.

当通过名称而不是OID指定函数时,允许的输入与注册程序数据类型(参见第8.19节)例如:

<br/>SELECT具有“函数”权限(“joeuser”、“myfunc(int,text)”和“execute”)<br/><br/>
拥有语言特权 ( [ 使用者 名称老年人, ] 语言 文本老年人, 特权 文本 ) → 布尔值

用户有语言权限吗?唯一允许的特权类型是用法.
拥有_schema _特权 ( [ 使用者 名称老年人, ] 模式 文本老年人, 特权 文本 ) → 布尔值

用户是否有模式权限?允许的特权类型包括创造用法.
拥有_顺序_特权 ( [ 使用者 名称老年人, ] 序列 文本老年人, 特权 文本 ) → 布尔值

用户有序列权限吗?允许的特权类型包括用法, 选择使现代化.
拥有服务器权限 ( [ 使用者 名称老年人, ] 服务器 文本老年人, 特权 文本 ) → 布尔值

用户对外部服务器有权限吗?唯一允许的特权类型是用法.
拥有桌子特权 ( [ 使用者 名称老年人, ] 桌子 文本老年人, 特权 文本 ) → 布尔值

用户有表的权限吗?允许的特权类型包括选择, 插入, 使现代化, 删去, 截断, 推荐人触发.
拥有_表空间_特权 ( [ 使用者 名称老年人, ] 表空间 文本老年人, 特权 文本 ) → 布尔值

用户对表空间有权限吗?唯一允许的特权类型是创造.
拥有_type _特权 ( [ 使用者 名称老年人, ] 类型 文本老年人, 特权 文本 ) → 布尔值

用户是否有数据类型的权限?唯一允许的特权类型是用法。当按名称而不是按OID指定类型时,允许的输入与正则类型数据类型(参见第8.19节).
pg_具有_角色 ( [ 使用者 名称老年人, ] 角色 文本老年人, 特权 文本 ) → 布尔值

用户是否有角色权限?允许的特权类型包括成员用法. 成员表示该角色的直接或间接成员身份(即,做某事的权利设定角色),而用法指示角色的权限是否立即可用,而无需执行任何操作设定角色.此功能不允许设置特殊情况*使用者*到平民的,因为公共伪角色永远不能是真实角色的成员。
行\安全\活动 ( 桌子 文本老年人 ) → 布尔值

在当前用户和当前环境的上下文中,指定表的行级安全性是否处于活动状态?

表9.67显示可用于aclitem类型,它是访问权限的目录表示形式。看见第5.7节有关如何读取访问权限值的信息。

表9.67. aclitem操作员

操作人员

描述

例子
aclitem = aclitem布尔值

aclitem谁是平等的?(注意这个类型aclitem缺少常用的比较运算符集;它只有平等。反过来aclitem只能比较数组是否相等。)

“卡尔文=r*w/霍布斯”::aclitem='calvin=r*w*/霍布斯'::aclitemf
aclitem[] @> aclitem布尔值

数组是否包含指定的权限?(如果存在与aclitem的受让人和授予人,并且至少具有指定的一组特权。)

“{calvin=r*w/hobbes,hobbes=r*w*/postgres}”:aclitem[]@>“calvin=r*/hobbes”::aclitemt
aclitem[] ~ aclitem布尔值

这是一个不推荐使用的别名@>.

“{calvin=r*w/hobbes,hobbes=r*w*/postgres}”:aclitem[]~'calvin=r*/hobbes'::aclitemt

表9.68显示了一些用于管理aclitem类型

表9.68. aclitem功能

作用

描述
默认值 ( 类型 “char”, 所有者 老年人 ) → aclitem[]

构建一个aclitem持有类型为的对象的默认访问权限的数组*类型属于OID的角色所有者。这表示当对象的ACL条目为空时将假定的访问权限。(默认访问权限如中所述。)第5.7节)The类型*参数必须是的“c”之一“r”代表桌子和桌状物体,s代表序列“d”代表数据库“f”代表作用程序“l”代表语言“L”代表大型物体“n”代表模式“t”代表表空间“F”代表国外数据包装器这是给外部服务器,或“T”类型领域.
火山岩 ( aclitem[] ) → 一套记录 ( 授予人 老年人, 受让人 老年人, 特权类型 文本, 可授予吗 布尔值 )

返回aclitem数组作为一组行。如果被授权人是伪角色PUBLIC,则在*受让人柱每个被授予的特权都表示为选择, 插入等。请注意,每个特权都被拆分为单独的一行,因此在列表中只显示一个关键字特权类型*柱
makeaclitem ( 受让人 老年人, 授予人 老年人, 特权 文本, 可授予吗 布尔值 ) → aclitem

构建一个aclitem具有给定的属性。

表9.69显示确定某个对象是否为看得见的在当前架构搜索路径中。例如,如果一个表的包含模式在搜索路径中,并且在搜索路径的前面没有出现同名表,则称该表可见。这相当于一条语句,即表可以按名称引用,而无需显式的模式限定。因此,要列出所有可见表的名称:

SELECT relname FROM pg_class WHERE pg_table_is_visible(oid);

对于函数和运算符,如果没有同名对象,则称搜索路径中的对象可见和参数数据类型在前面的道路上。对于运算符类和族,将同时考虑名称和关联的索引访问方法。

表9.69.模式可见性查询功能

作用

描述
pg_排序规则_可见 ( 校勘 老年人 ) → 布尔值

排序规则在搜索路径中可见吗?
pg_转换_可见 ( 转变 老年人 ) → 布尔值

转换是否在搜索路径中可见?
pg_功能_可见 ( 作用 老年人 ) → 布尔值

函数在搜索路径中可见吗?(这也适用于程序和集合。)
pg_opclass_可见 ( opclass 老年人 ) → 布尔值

运算符类在搜索路径中可见吗?
pg_操作员_可见 ( 操作人员 老年人 ) → 布尔值

操作员在搜索路径中可见吗?
pg_opfamily_可见 ( opclass 老年人 ) → 布尔值

操作员族在搜索路径中可见吗?
pg_statistics_obj_可见 ( 斯达 老年人 ) → 布尔值

统计对象在搜索路径中可见吗?
pg_表_可见 ( 桌子 老年人 ) → 布尔值

表在搜索路径中可见吗?(这适用于所有类型的关系,包括视图、物化视图、索引、序列和外部表。)
pg_ts_config_可见 ( 配置 老年人 ) → 布尔值

文本搜索配置在搜索路径中可见吗?
pg_ts_dict_可见 ( 字典 老年人 ) → 布尔值

文本搜索词典在搜索路径中可见吗?
pg_ts_解析器_可见 ( 解析器 老年人 ) → 布尔值

文本搜索解析器在搜索路径中可见吗?
pg_ts_模板_可见 ( 样板 老年人 ) → 布尔值

文本搜索模板在搜索路径中可见吗?
pg_类型_可见 ( 类型 老年人 ) → 布尔值

类型(或域)在搜索路径中可见吗?

所有这些功能都需要对象ID来识别要检查的对象。如果要按名称测试对象,可以方便地使用OID别名类型(regclass, 正则类型, 注册程序, regoperator, regconfigregdictionary),例如:

SELECT pg_type_is_visible('myschema.widget'::regtype);

请注意,以这种方式测试非模式限定的类型名称没有多大意义——如果名称可以被识别,那么它必须是可见的。

表9.70列出从系统目录中提取信息的函数。

表9.70.系统目录信息功能

作用

描述
格式类型 ( 类型 老年人, typemod 整数 ) → 文本

返回数据类型的SQL名称,该数据类型由其类型OID和可能的类型修饰符标识。如果不知道特定的修饰符,则为类型修饰符传递NULL。
pg_获取目录_外键 () → 一套记录 ( fktable regclass, fkcols 文本[], pktable regclass, pkcols 文本[], is_数组 布尔值, 这是你的选择吗 布尔值 )

返回一组描述PostgreSQL系统目录中存在的外键关系的记录。这个*fktable列包含引用目录的名称,以及fkcols列包含引用列的名称。同样地pktable列包含引用目录的名称,以及pkcols列包含引用列的名称。如果is_数组如果为true,则最后一个引用列是一个数组,其每个元素都应该与引用目录中的某个条目匹配。如果这是你的选择吗*如果为true,则允许引用列包含零,而不是有效引用。
pg_get_constraintdef ( 限制 老年人 [, 漂亮的 布尔值 ] ) → 文本

重建约束的创建命令。(这是反编译的重建,不是命令的原始文本。)
pg_get_expr ( expr pg_节点_树, 关系 老年人 [, 漂亮的 布尔值 ] ) → 文本

反编译存储在系统目录中的表达式的内部形式,例如列的默认值。如果表达式可能包含变量,请指定它们所指的关系的OID作为第二个参数;如果不需要VAR,则通过零就足够了。
pg_get_functiondef ( func 老年人 ) → 文本

重建函数或过程的创建命令。(这是反编译的重建,不是命令的原始文本。)结果是一个完整的过程创建或替换函数创建或替换过程陈述
pg_get_函数_参数 ( func 老年人 ) → 文本

以函数或过程需要出现的形式重新构造其参数列表创建函数(包括默认值)。
pg_get_函数_identity_参数 ( func 老年人 ) → 文本

重新构造识别函数或过程所需的参数列表,其形式必须出现在命令中,例如改变功能。此表单忽略默认值。
pg_获取函数_结果 ( func 老年人 ) → 文本

重建返回函数的子句,其形式应在创建函数.返回无效的做个手术。
pg_get_indexdef ( 指数 老年人 [, 整数, 漂亮的 布尔值 ] ) → 文本

重建索引的创建命令。(这是反编译的重建,不是命令的原始文本。)如果**,并且不是零,则只重建该列的定义。
pg_获取_关键字 () → 一套记录 ( 单词 文本, catcode “char”, 赤裸裸的 布尔值, 凯迪斯 文本, 巴雷德斯克 文本 )

返回一组描述服务器识别的SQL关键字的记录。这个*单词列包含关键字。这个catcode列包含类别代码:U对于未保留的关键字,C对于可以是列名的关键字,T对于可以是类型或函数名的关键字,或R对于完全保留的关键字。这个赤裸裸的列包含符合事实的如果关键字可以用作中的“裸”列标签选择列表,或错误的如果只能在这个凯迪斯列包含描述关键字类别的可能本地化字符串。这个巴雷德斯克*列包含描述关键字列标签状态的可能本地化字符串。
pg_get_ruledef ( 规则 老年人 [, 漂亮的 布尔值 ] ) → 文本

重建规则的创建命令。(这是反编译的重建,不是命令的原始文本。)
pg_获取_序列 ( 桌子 文本, 文本 ) → 文本

返回与列关联的序列的名称,如果没有序列与列关联,则返回NULL。如果列是标识列,则关联的序列是为该列在内部创建的序列。对于使用序列类型之一创建的列(电视连续剧, smallserial, 大系列),它是为该序列列定义创建的序列。在后一种情况下,可以使用改变序列属于(这个函数可能应该被调用。)pg_获取_拥有的_序列; 它当前的名称反映了一个事实,即它在历史上一直与串行类型列一起使用。)第一个参数是带有可选模式的表名,第二个参数是列名。因为第一个参数可能同时包含模式名和表名,所以它是按照常见的SQL规则进行解析的,这意味着默认情况下它的大小写较低。第二个参数只是一个列名,按字面意思处理,因此保留其大小写。结果的格式适合传递给序列函数(参见第9.17节).

典型用途是读取标识或序列列序列的当前值,例如:

<br/>选择currval(pg_get_serial_sequence('sometable','id')<br/><br/>
pg_get_statisticsobjdef ( 斯塔托布吉 老年人 ) → 文本

为扩展统计数据对象重建创建命令。(这是反编译的重建,不是命令的原始文本。)
pg_get_triggerdef ( 触发 老年人 [, 漂亮的 布尔值 ] ) → 文本

重建触发器的创建命令。(这是反编译的重建,不是命令的原始文本。)
pg_get_userbyid ( 角色 老年人 ) → 名称

根据角色的OID返回其名称。
pg_get_viewdef ( 看法 老年人 [, 漂亮的 布尔值 ] ) → 文本

重建底层选择用于视图或物化视图的命令。(这是反编译的重建,不是命令的原始文本。)
pg_get_viewdef ( 看法 老年人, 包裹柱 整数 ) → 文本

重建底层选择用于视图或物化视图的命令。(这是反编译的重建,不是命令的原始文本。)在这种形式的函数中,始终启用“漂亮打印”,并对长行进行包装,以尽量使其短于指定的列数。
pg_get_viewdef ( 看法 文本 [, 漂亮的 布尔值 ] ) → 文本

重建底层选择用于视图或物化视图的命令,使用视图的文本名称而不是其OID。(不推荐使用此选项;请改用OID变量。)
pg_索引_列_具有_属性 ( 指数 regclass, 整数, 所有物 文本 ) → 布尔值

测试索引列是否具有命名属性。中列出了常用索引列属性表9.71(请注意,扩展访问方法可以为其索引定义其他属性名。)无效的如果属性名未知或不适用于特定对象,或者OID或列号未标识有效对象,则返回。
pg_索引_具有_属性 ( 指数 regclass, 所有物 文本 ) → 布尔值

测试索引是否具有命名属性。常用索引属性列在中表9.72(请注意,扩展访问方法可以为其索引定义其他属性名。)无效的如果属性名未知或不适用于特定对象,或者OID未标识有效对象,则返回。
pg_indexam_具有_属性 ( 老年人, 所有物 文本 ) → 布尔值

测试索引访问方法是否具有命名属性。中列出了访问方法属性表9.73. 无效的如果属性名未知或不适用于特定对象,或者OID未标识有效对象,则返回。
pg_选项_至_表格 ( 选项\u数组 文本[] ) → 一套记录 ( 选项名称 文本, 期权价值 文本 )

返回由中的值表示的存储选项集pg_类.重新选择pg_属性.律师.
pg_表空间_数据库 ( 表空间 老年人 ) → 类毛

返回具有存储在指定表空间中的对象的数据库的OID集。如果此函数返回任何行,则表空间不是空的,不能删除。要识别填充表空间的特定对象,需要连接到pg_表空间_数据库并询问他们的pg_类目录。
pg_表空间_位置 ( 表空间 老年人 ) → 文本

返回此表空间所在的文件系统路径。
pg_类型 ( “任何” ) → 正则类型

返回传递给它的值的数据类型的OID。这有助于故障排除或动态构造SQL查询。函数被声明为返回正则类型,这是一种OID别名类型(请参见第8.19节); 这意味着出于比较目的,它与OID相同,但显示为类型名。

例如:

<br/>选择pg_typeof(33)<br/>pg_typeof<br/>--------------<br/>integer<br/><br/>从pg_type中选择typlen,其中oid=pg_typeof(33)<br/>typlen<br/>-------------<br/>4<br/><br/>
整理 ( “任何” ) → 文本

返回传递给它的值的排序规则的名称。如有必要,将引用该值并限定模式。如果没有为参数表达式派生排序规则,则无效的被退回。如果参数不是可折叠数据类型,则会引发错误。

例如:

<br/>从pg_描述限制1中选择(描述)的排序规则<br/>pg_collation_for<br/>--------------<br/>“default”<br/><br/><br/>pg_排序规则适用于<br/>--------------<br/>“de_de”<br/><br/>
上课 ( 文本 ) → regclass

将文本关系名称转换为其OID。通过将字符串强制转换为type,可以获得类似的结果regclass(见第8.19节); 但是,此函数将返回无效的而不是在找不到名称时抛出错误。与强制转换不同的是,它不接受数字OID作为输入。
整理 ( 文本 ) → 规则整理

将文本排序规则名称转换为其OID。通过将字符串强制转换为type,可以获得类似的结果规则整理(见第8.19节); 但是,此函数将返回无效的而不是在找不到名称时抛出错误。与强制转换不同的是,它不接受数字OID作为输入。
去! ( 文本 ) → regnamespace

将文本模式名称转换为其OID。通过将字符串强制转换为type,可以获得类似的结果regnamespace(见第8.19节); 但是,此函数将返回无效的而不是在找不到名称时抛出错误。与强制转换不同的是,它不接受数字OID作为输入。
给_regoper ( 文本 ) → 雷戈

将文本运算符名称转换为其OID。通过将字符串强制转换为type,可以获得类似的结果雷戈(见第8.19节); 但是,此函数将返回无效的而不是在名称找不到或不明确时抛出错误。与强制转换不同的是,它不接受数字OID作为输入。
给! ( 文本 ) → regoperator

将文本运算符名称(带有参数类型)转换为其OID。通过将字符串强制转换为type,可以获得类似的结果regoperator(见第8.19节); 但是,此函数将返回无效的而不是在找不到名称时抛出错误。与强制转换不同的是,它不接受数字OID作为输入。
到_regproc ( 文本 ) → regproc

将文本函数或过程名称转换为其OID。通过将字符串强制转换为type,可以获得类似的结果regproc(见第8.19节); 但是,此函数将返回无效的而不是在名称找不到或不明确时抛出错误。与强制转换不同的是,它不接受数字OID作为输入。
遵守程序 ( 文本 ) → 注册程序

将文本函数或过程名称(带有参数类型)转换为其OID。通过将字符串强制转换为type,可以获得类似的结果注册程序(见第8.19节); 但是,此函数将返回无效的而不是在找不到名称时抛出错误。与强制转换不同的是,它不接受数字OID作为输入。
后悔 ( 文本 ) → 后悔

将文本角色名称转换为其OID。通过将字符串强制转换为type,可以获得类似的结果后悔(见第8.19节); 但是,此函数将返回无效的而不是在找不到名称时抛出错误。与强制转换不同的是,它不接受数字OID作为输入。
到_regtype ( 文本 ) → 正则类型

将文本类型名称转换为其OID。通过将字符串强制转换为type,可以获得类似的结果正则类型(见第8.19节); 但是,此函数将返回无效的而不是在找不到名称时抛出错误。与强制转换不同的是,它不接受数字OID作为输入。

大多数重构(反编译)数据库对象的函数都有一个可选的*漂亮的旗帜,如果符合事实的使结果“打印精美”。“漂亮打印”会抑制不必要的括号,并添加空格以确保易读性。漂亮的打印格式更具可读性,但默认格式更有可能被未来版本的PostgreSQL以同样的方式解释;因此,避免使用漂亮的打印输出进行转储。经过错误的对于漂亮的*参数产生的结果与忽略该参数相同。

表9.71.索引列属性

名称 描述
asc 在正向扫描中,列是否按升序排序?
描述 在正向扫描中,列是否按降序排序?
先空 在正向扫描时,列是否首先使用空值排序?
最后为空 列在前向扫描时是否使用空值进行排序?
有序的 列是否具有任何定义的排序顺序?
可订购的距离 例如,可以通过“距离”操作符按顺序扫描列吗按列排序<->常数 ?
可退还的 只能通过索引扫描返回列值吗?
搜索数组 专栏本身支持吗col=ANY(数组)搜索?
搜索空值 专栏支持吗是空的不是空的搜索?

表9.72.索引属性

名称 描述
丛生的 该索引是否可以用于命令
索引扫描 索引是否支持普通(非位图)扫描?
位图扫描 索引是否支持位图扫描?
反向扫描 扫描方向是否可以在中间扫描时更改(以支持回退在光标上,而不需要具体化)?

表9.73.索引访问方法属性

名称 描述
能点菜吗 访问方法是否支持ASC, 描述以及相关的关键字创建索引?
你能做到独一无二吗 访问方法是否支持唯一索引?
你能用多重颜色吗 access方法支持多列索引吗?
你能排除吗 访问方法是否支持排除约束?
你能包括 访问方法是否支持包括条款创建索引?

表9.74列出与数据库对象标识和寻址相关的函数。

表9.74.对象信息和寻址功能

作用

描述
描述对象 ( 识别符 老年人, 对象 老年人, 奥布苏比德 整数 ) → 文本

返回由目录OID、对象OID和子对象ID(例如表中的列号;当引用整个对象时,子对象ID为零)标识的数据库对象的文本描述。此描述旨在让人可读,并且可能会被翻译,具体取决于服务器配置。这对于确定中引用的对象的标识尤其有用pg_依赖目录此函数返回无效的未定义对象的值。
pg_标识_对象 ( 识别符 老年人, 对象 老年人, 奥布苏比德 整数 ) → 记录 ( 类型 文本, 模式 文本, 名称 文本, 身份 文本 )

返回一行,该行包含足够的信息,可以唯一标识由目录OID、对象OID和子对象ID指定的数据库对象。此信息是机器可读的,永远不会被翻译。*类型标识数据库对象的类型;模式对象所属的架构名称,或无效的对于不属于模式的对象类型;名称*是对象的名称,如果名称(以及架构名称,如果相关)足以唯一标识对象,则在必要时引用,否则无效的; *身份*是完整的对象标识,精确的格式取决于对象类型,格式中的每个名称都经过模式限定并根据需要引用。未定义的对象用无效的价值观
pg_将_对象识别为_地址 ( 识别符 老年人, 对象 老年人, 奥布苏比德 整数 ) → 记录 ( 类型 文本, 对象名称 文本[], 对象_args 文本[] )

返回一行,该行包含足够的信息,可以唯一标识由目录OID、对象OID和子对象ID指定的数据库对象。返回的信息独立于当前服务器,也就是说,它可以用于标识另一台服务器中同名的对象。*类型标识数据库对象的类型;对象名称对象_args*文本数组一起构成对对象的引用。这三个值可以传递给pg_获取_对象_地址获取对象的内部地址。
pg_获取_对象_地址 ( 类型 文本, 对象名称 文本[], 对象_args 文本[] ) → 记录 ( 识别符 老年人, 对象 老年人, 奥布苏比德 整数 )

返回一行,该行包含足够的信息,可以唯一标识由类型代码、对象名称和参数数组指定的数据库对象。返回的值将在系统目录中使用,例如pg_依赖; 它们可以传递给其他系统功能,例如描述对象pg_标识_对象. *识别符是包含对象的系统目录的OID;对象是对象本身的OID,并且奥布苏比德*是子对象ID,如果没有,则为零。这个函数与pg_将_对象识别为_地址.未定义的对象用无效的价值观

中显示的功能表9.75提取以前与议论命令如果找不到指定参数的注释,则返回空值。

表9.75.评论信息功能

作用

描述
颜色描述 ( 桌子 老年人, 整数 ) → 文本

返回表列的注释,该注释由表的OID及其列号指定。(obj_描述不能用于表列,因为列本身没有OID。)
obj_描述 ( 对象 老年人, 目录 名称 ) → 文本

返回由其OID和包含系统目录的名称指定的数据库对象的注释。例如obj_描述(123456,“pg_类”)将检索OID为123456的表的注释。
obj_描述 ( 对象 老年人 ) → 文本

返回仅由其OID指定的数据库对象的注释。这是反对因为不能保证OID在不同的系统目录中是唯一的;因此,可能会返回错误的注释。
shobj_描述 ( 对象 老年人, 目录 名称 ) → 文本

返回由其OID和包含系统目录的名称指定的共享数据库对象的注释。这就像obj_描述但它用于检索共享对象(即数据库、角色和表空间)上的注释。有些系统目录对每个集群中的所有数据库都是全局的,其中对象的描述也全局存储。

中显示的功能表9.76以可导出的形式提供服务器事务信息。这些函数的主要用途是确定在两个快照之间提交了哪些事务。

表9.76.事务ID和快照信息功能

作用

描述
pg_当前_xact_id () → xid8

返回当前事务的ID。如果当前事务还没有ID(因为它没有执行任何数据库更新),它将分配一个新的ID。
pg_当前_xact_id_如果已分配 () → xid8

返回当前事务的ID,或无效的如果尚未分配ID。(如果事务可能是只读的,最好使用这个变量,以避免不必要的XID消耗。)
pg_xact_状态 ( xid8 ) → 文本

报告最近事务的提交状态。其结果是进行中, 坚信的流产,前提是该事务足够新,系统保留该事务的提交状态。如果它足够旧,以至于系统中没有对事务的引用,并且提交状态信息已被丢弃,则结果是无效的。例如,应用程序可能会使用此功能来确定在应用程序和数据库服务器断开连接后,其事务是否已提交或中止犯罪正在进行中。请注意,准备好的交易报告如下:进行中; 申请必须核实准备好的如果他们需要确定事务ID是否属于准备好的事务。
pg_当前_快照 () → pg_快照

返回当前值快照,一种数据结构,显示正在进行的事务ID。
pg_快照_xip ( pg_快照 ) → 第8集

返回快照中包含的一组正在进行的事务ID。
pg_快照_xmax ( pg_快照 ) → xid8

返回最大值一张快照。
pg_快照_xmin ( pg_快照 ) → xid8

返回xmin一张快照。
pg_在_快照中可见 ( xid8, pg_快照 ) → 布尔值

是给定的事务ID看得见的根据该快照(即,在拍摄快照之前是否已完成)?请注意,此函数不会为子事务ID提供正确答案。

内部事务ID类型希德它的宽度为32位,每40亿次交易就有一次。但是,中显示的功能表9.76使用64位类型xid8在安装过程中不会缠绕,可以转换为希德如果需要,可以通过铸造。数据类型pg_快照存储有关特定时刻事务ID可见性的信息。其组成部分如中所述表9.77. pg_快照的文本表示是*xmin*:*最大值*:*xip_列表*例如10:20:10,14,15方法xmin=10,xmax=20,xip_list=10,14,15.

表9.77.快照组件

名称 描述
xmin 仍处于活动状态的最低事务ID。所有事务ID小于xmin要么被投入并可见,要么被击退并死亡。
最大值 超过最高完成事务ID的一个。所有事务ID大于或等于最大值截至快照时尚未完成,因此不可见。
xip_列表 快照时正在进行的事务。一个事务ID,它是xmin<=*十、*<xmax在快照时,不在该列表中的已完成,因此根据其提交状态,它可能是可见的,也可能是不存在的。此列表不包括子事务的事务ID。

在2013年之前的PostgreSQL版本中,没有xid8类型,因此提供了这些函数的变体比基特表示64位XID,并具有相应的独特快照数据类型txid_快照.这些旧功能txid以他们的名义。它们仍然支持向后兼容,但可能会从未来的版本中删除。看见表9.78.

表9.78.不推荐使用的事务ID和快照信息函数

作用

描述
txid_current () → 大整数

pg_current_xact_id().
txid_current_if_assigned () → 大整数

pg_current_xact_id_if_assigned().
txid_current_snapshot () → txid_snapshot

pg_current_snapshot().
txid_snapshot_xip ( txid_snapshot ) → 大整数集

pg_snapshot_xip().
txid_snapshot_xmax ( txid_snapshot ) → 大整数

pg_snapshot_xmax().
txid_snapshot_xmin ( txid_snapshot ) → 大整数

pg_snapshot_xmin().
txid_visible_in_snapshot ( 大整数, txid_snapshot ) → 布尔值

pg_visible_in_snapshot().
txid_status ( 大整数 ) → 文本

pg_xact_status().

中显示的功能表9.79提供有关提交过去交易的时间的信息。它们仅在以下情况下提供有用的数据:轨道_犯罪_时间戳配置选项已启用,并且仅适用于启用后提交的事务。

表9.79.提交事务信息功能

作用

描述
pg_xact_commit_时间戳(希德) →带时区的时间戳

返回事务的提交时间戳。
pg_xact_commit_timestamp_origin(希德) →记录(时间戳 带时区的时间戳,罗登特 老年人)

返回事务的提交时间戳和复制源。
pg_last_committed_xact () → 记录 ( 希德 希德, 时间戳 带时区的时间戳, 罗登特 老年人 )

返回最近提交的事务的事务ID、提交时间戳和复制源。

中显示的功能表9.80打印过程中初始化的信息initdb,例如目录版本。它们还显示有关预写日志记录和检查点处理的信息。这些信息是集群范围的,不特定于任何一个数据库。这些函数提供的大部分信息与pg_控制数据应用

表9.80.控制数据功能

作用

描述
pg_控制_检查点 () → 记录

返回有关当前检查点状态的信息,如中所示表9.81.
pg_控制_系统 () → 记录

返回有关当前控制文件状态的信息,如中所示表9.82.
pg_控制_初始化 () → 记录

返回有关群集初始化状态的信息,如中所示表9.83.
pg_控制_恢复 () → 记录

返回有关恢复状态的信息,如中所示表9.84.

表9.81. pg_控制_检查点输出列

列名 数据类型
检查点 pg_lsn
重做 pg_lsn
重做wal_文件 文本
时间线 整数
上一个时间线id 整数
整页 布尔值
下一个 文本
下一个 老年人
下一个\u multixact \u id 希德
下一个多偏移 希德
最古老的西德 希德
最古老的_xid_dbid 老年人
最古老的_活跃的_xid 希德
最古老的_multi_xid 希德
最古老的多个dbid 老年人
最古老的承诺 希德
最新提交 希德
检查点时间 带时区的时间戳

表9.82. pg_控制_系统输出列

列名 数据类型
pg_控制_版本 整数
目录版本号 整数
系统标识符 比金
pg_控制_上次_修改 带时区的时间戳

表9.83. pg_控制_初始化输出列

列名 数据类型
最大数据对齐 整数
数据库块大小 整数
每段块数 整数
wal_block_尺寸 整数
每段字节数 整数
最大标识符长度 整数
最大索引列数 整数
最大烤面包块大小 整数
大对象块大小 整数
浮动8_通过_值 布尔值
数据页面校验和版本 整数

表9.84. pg_控制_恢复输出列

列名 数据类型
最小恢复时间结束时间 pg_lsn
最小恢复时间线 整数
备份启动 pg_lsn
备份结束 pg_lsn
需要备份记录的结束 布尔值