# 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
操作员
表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.模式可见性查询功能
所有这些功能都需要对象ID来识别要检查的对象。如果要按名称测试对象,可以方便地使用OID别名类型(regclass
, 正则类型
, 注册程序
, regoperator
, regconfig
或regdictionary
),例如:
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.对象信息和寻址功能
中显示的功能表9.75提取以前与议论命令如果找不到指定参数的注释,则返回空值。
表9.75.评论信息功能
中显示的功能表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和快照信息函数
中显示的功能表9.79提供有关提交过去交易的时间的信息。它们仅在以下情况下提供有用的数据:轨道_犯罪_时间戳配置选项已启用,并且仅适用于启用后提交的事务。
表9.79.提交事务信息功能
中显示的功能表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 |
需要备份记录的结束 | 布尔值 |