{"kind": "type", "slug": "pg_snapshot", "name": "pg_snapshot", "major": "18", "snapshot": {"casts": [], "facts": [{"label": "目录名称", "value": "pg_catalog.pg_snapshot"}, {"label": "类型 OID", "value": "5038"}, {"label": "类型种类", "value": "基础类型"}, {"label": "声明长度", "value": "变长（varlena）"}, {"label": "存储策略", "value": "扩展"}, {"label": "输入函数", "value": "pg_snapshot_in"}, {"label": "输出函数", "value": "pg_snapshot_out"}, {"label": "手册中的声明", "value": "pg_snapshot_xip ( pg_snapshot ) → setof xid8 返回快照中包含的正在进行的事务 ID集。"}, {"label": "手册中的声明", "value": "pg_snapshot_xmax ( pg_snapshot ) → xid8 返回快照的 xmax 。"}, {"label": "手册中的声明", "value": "pg_snapshot_xmin ( pg_snapshot ) → xid8 返回快照的 xmin 。"}, {"label": "手册中的声明", "value": "pg_visible_in_snapshot ( xid8 , pg_snapshot ) → boolean 根据此快照，给定的事务 ID 是否 可见 （即该事务是否在生成快照之前完成）？注意，此函数无法为子事务 ID（subxid）给出正确结果；详见 第 67.3 节 。"}], "ranges": [], "aliases": [], "catalog": {"oid": "5038", "descr": "transaction snapshot", "typacl": "_null_", "typlen": "-1", "typelem": "0", "typname": "pg_snapshot", "typsend": "pg_snapshot_send", "typtype": "b", "typalign": "d", "typarray": "0", "typbyval": "f", "typdelim": "','", "typinput": "pg_snapshot_in", "typmodin": "-", "typndims": "0", "typowner": "POSTGRES", "typrelid": "0", "typmodout": "-", "typoutput": "pg_snapshot_out", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "pg_snapshot_recv", "typstorage": "x", "typbasetype": "0", "typcategory": "U", "typcollation": "0", "typisdefined": "t", "typnamespace": "pg_catalog", "typsubscript": "-", "typdefaultbin": "_null_", "array_type_oid": "5039", "typispreferred": "f", "array_type_name": "_pg_snapshot"}, "related": [{"url": "/wiki/catalog/pg_type/?v=18", "label": "pg_type 系统目录"}, {"url": "/wiki/catalog/pg_cast/?v=18", "label": "pg_cast 系统目录"}, {"url": "/wiki/catalog/pg_operator/?v=18", "label": "pg_operator 系统目录"}, {"url": "/wiki/catalog/pg_opclass/?v=18", "label": "pg_opclass 系统目录"}, {"url": "/wiki/type/arrays/?v=18", "label": "数组"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "source_files": {"doc/src/sgml/datatype.sgml": "86328daa77e20d81d222376ec0306d9841a17104e436c08d138eb763aefb3700", "src/include/catalog/pg_am.h": "3426799df799f32163fcc0765f43dbdb5e88e626acf31284fef9fc6014b69d8e", "src/include/catalog/pg_am.dat": "b3cb86b102a42fb0024cbd99779c9897afb40d12a71f5cc5a0e5aee7ff2f9969", "src/include/catalog/pg_cast.h": "de585c7df687d698e7d1d100dce8a794ac9da52414ea48169191019178c8f053", "src/include/catalog/pg_proc.h": "f7d59f07c5b95e2f3c7141762a0f576e8a3af7581ba54c27537f4d500472bea5", "src/include/catalog/pg_type.h": "8fb198749fd82b6c1818a3c18455f226f66116fcfeb3d4959c65ce3fda22802e", "src/include/catalog/pg_range.h": "45546d952b5181f989bd9234721897fc2b37005c8e49ce2ddc156f26974c3ca4", "src/include/catalog/pg_cast.dat": "97911281ca2c81917394ccb2ec13367e37c6801fd461d5e1a3d2f28b911b46b2", "src/include/catalog/pg_proc.dat": "1f934ce80d460159dda137714374a35f9896315ea2476709cbb4da13b38ef95a", "src/include/catalog/pg_type.dat": "5f5887b75677cba2d4a1a0cfeb355df5ed91f85d385fac88bd8d7c605b3578f9", "src/include/catalog/pg_opclass.h": "9c218537806c8ef0398302faaca7f91315dfc1198c48706cebffb479b68defaf", "src/include/catalog/pg_range.dat": "5c2271f8e89e9378d1887204e5785060b77405b5f0ff3e6c719250c9c1dcfcc4", "src/include/catalog/pg_operator.h": "621b18cfffe102413d79b746ce7a10f77fc60fdd097bac34c22b31070d3ee3c4", "src/include/catalog/pg_opfamily.h": "e1f5fc8aebd3042df847455bf66bf755f768c2aa8a9b03d22f7ec8563eba59c0", "src/include/catalog/pg_opclass.dat": "4ee7d3619a6aa106e1c0db55de903931c7d11b1c60ba053a022519c55f8ee668", "src/include/catalog/pg_operator.dat": "5d35b9b2ef5f9797cc815263927ef8a12367fedace53e828b4e8b320e2a7f703", "src/include/catalog/pg_opfamily.dat": "3b694879027b858f2ecf1fa1152b7e30c6e15a216ba99c2384291c30e9d52311"}, "manual_sha256": {"arrays.html": "0e1d5c5a7b4a949d4439995f44f74ad4264e050d16eb9ad2a850fbaee04032df", "domains.html": "82d486973ccc35d14276627a67ac76b434452f23f9ed4d8aa3fbb01fdf285fc2", "datatype.html": "e581f67c74e42006289638c8659e9b338adbfd7f068bd8bf2b3be3880fcd2254", "rowtypes.html": "74f99e029c3a9edfd3e18810ba3c8cb66d3aada91eb67b86476560871e6617e9", "rangetypes.html": "e4960abc7ce8e51d794f94f1e57b099d30b7f75dd7f2b23a960eef91f6291c33", "datatype-bit.html": "c49124aad561636c18080b9e09572fde7785a6b9eae86f5a33283f0fd6774c37", "datatype-oid.html": "8b3360302225f08ae72716ce1804596de95b568e5d31f788cb4597427b28cc38", "datatype-xml.html": "061fc2295b7b69be704f0a741b8decd10ad721059f871fb0243c669bb54d7822", "datatype-enum.html": "cab38e53222e30cc94b24de4b33634fd22d7c93f58ebcf35f646c9b8da78fae8", "datatype-json.html": "650162a05b660146b500a205d523374d00aee117a6a6240d30262be51b6e33e5", "datatype-uuid.html": "292b307b3223c6182bdba687e7f69e6dca9038430143ad79d56327f6ed4c3246", "datatype-money.html": "8b29c14b90679683ac5c472b59a0a7e2853f32cc7db43fab417b2697a6879964", "functions-info.html": "78ac80bf81da2e4f4a33f3b850faa86f0f58ec54a083d6c31da557907de0df87", "catalog-pg-type.html": "ea9c9313bab8e92a7da18ebc50c7ff1f908dd80999a7e0ca3bbc82ba626c58d4", "datatype-binary.html": "0c03ec47b76e37888a3da7f5dcfd340128a5d356642a85185cc9ebe17856a904", "datatype-pg-lsn.html": "339172f5107cc7eb7139bec911277647219e92a532cebd0f3da0a5dacf8195af", "datatype-pseudo.html": "c7cf0b8214304bd8702c95f2142671ae5f0d631f83717f9c07d9e1f2579961b4", "datatype-boolean.html": "b633f663e6c8276e7056287640c413aa79dbc15d5353cee0d41653d58d376956", "datatype-numeric.html": "b74619f7ac2f1ca9f85c48073df78c33dd30e464e61baba6008634534edcb500", "sql-createdomain.html": "e94f927196de1b0ea1ce35cd4603c1f6f544439adcc0edf1c4222358e832245b", "datatype-datetime.html": "e366275d8b13845bfa4ef0d68faa093e5f3ecb708a1ec870cbcbf7e425b85699", "datatype-character.html": "c73eebe413ea709a7792e4cfc3cfe9fb68cb496ebe83c3ebaa9d09f8c40d0f73", "datatype-geometric.html": "0eb3053cfe7d6b0a4b5592c5d7af8d97cae527e87f063c5793413bcba5c14cd9", "datatype-net-types.html": "96846e641cc37727ddcd8b8a1aa0dbe33cd9787760a2b4efb0dcb9403d5be63f", "datatype-textsearch.html": "4b15e05be8b49a71b28aea22f2c46d0dbf639a91e7b4fe129a4c737c6daad47c"}, "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sources": [{"url": "https://pg.center/docs/18/functions-info.html", "path": "functions-info.html", "label": "PostgreSQL 18 English manual", "sha256": "78ac80bf81da2e4f4a33f3b850faa86f0f58ec54a083d6c31da557907de0df87", "language": "en", "original_url": "/docs/18/functions-info.html"}, {"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}], "coverage": "source inventory; exact declared input types for operator classes", "sections": [], "operators": [], "signature": "pg_snapshot", "description": ["用户级事务 ID 快照"], "manual_html": "<div class=\"sect1\" id=\"FUNCTIONS-INFO\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\" lang=\"zh\">\n<div>\n<div>\n<h2 class=\"title\" style=\"clear: both\">9.27. 系统信息函数和操作符 </h2>\n</div>\n</div>\n</h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\">本节描述的函数用于获取有关<span class=\"productname\">PostgreSQL</span>安装的各种信息。</p>\n<div class=\"sect2\" id=\"FUNCTIONS-INFO-SESSION\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-SESSION\">9.27.1. 会话信息函数</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-SESSION-TABLE\" title=\"表 9.71. 会话信息函数\">表 9.71</a>列出了多个用于提取会话和系统信息的函数。</p>\n<p lang=\"zh\">除了本节列出的函数外，还有许多与统计系统相关的函数，这些函数也提供系统信息。有关更多信息，请参见<a class=\"xref\" href=\"/docs/18/monitoring-stats.html#MONITORING-STATS-FUNCTIONS\" title=\"27.2.26. 统计函数\">第 27.2.26 节</a>。</p>\n<div class=\"table\" id=\"FUNCTIONS-INFO-SESSION-TABLE\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.71. 会话信息函数</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th class=\"func_table_entry\" lang=\"zh\">\n<tr>\n<th class=\"func_table_entry\">\n<p class=\"func_signature\">函数</p>\n<p>描述</p>\n</th>\n</tr>\n</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.1.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.1.1.1.1\"></a> <code class=\"function\">current_catalog</code> → <code class=\"returnvalue\">name</code></p>\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.1.1.2.1\" name=\"id-1.5.8.33.3.4.2.2.1.1.2.1\"></a> <code class=\"function\">current_database</code> () → <code class=\"returnvalue\">name</code></p>\n<p>返回当前数据库的名称。（SQL 标准将数据库称为<span class=\"quote\">“<span class=\"quote\">目录（catalogs）</span>”</span>，因此<code class=\"function\">current_catalog</code>是标准中的写法。）</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.2.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.2.1.1.1\"></a> <code class=\"function\">current_query</code> () → <code class=\"returnvalue\">text</code></p>\n<p>返回客户端提交的当前正在执行的查询文本（可能包含多条语句）。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.3.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.3.1.1.1\"></a> <code class=\"function\">current_role</code> → <code class=\"returnvalue\">name</code></p>\n<p>这个等同于 <code class=\"function\">current_user</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.4.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.4.1.1.1\"></a> <a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.4.1.1.2\" name=\"id-1.5.8.33.3.4.2.2.4.1.1.2\"></a> <code class=\"function\">current_schema</code> → <code class=\"returnvalue\">name</code></p>\n<p class=\"func_signature\"><code class=\"function\">current_schema</code> () → <code class=\"returnvalue\">name</code></p>\n<p>返回在搜索路径中的第一个模式的名称（如果搜索路径为空则返回空值）。这个模式将用于没有指定目标模式就创建的任何表或其他已命名对象。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.5.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.5.1.1.1\"></a> <a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.5.1.1.2\" name=\"id-1.5.8.33.3.4.2.2.5.1.1.2\"></a> <code class=\"function\">current_schemas</code> ( <em class=\"parameter\"><code>include_implicit</code></em> <code class=\"type\">boolean</code> ) → <code class=\"returnvalue\">name[]</code></p>\n<p>返回当前有效搜索路径中所有模式名称的数组，按优先级排序。（当前<a class=\"xref\" href=\"/docs/18/runtime-config-client.html#GUC-SEARCH-PATH\">search_path</a>设置中不对应于已存在且可搜索的模式的项会被省略。）如果布尔参数为<code class=\"literal\">true</code>，结果还会包含<code class=\"literal\">pg_catalog</code>等隐式搜索的系统模式。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.6.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.6.1.1.1\"></a> <a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.6.1.1.2\" name=\"id-1.5.8.33.3.4.2.2.6.1.1.2\"></a> <code class=\"function\">current_user</code> → <code class=\"returnvalue\">name</code></p>\n<p>返回当前执行上下文的用户名。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.7.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.7.1.1.1\"></a> <code class=\"function\">inet_client_addr</code> () → <code class=\"returnvalue\">inet</code></p>\n<p>返回当前客户端的 IP 地址；如果当前连接通过 Unix 域套接字建立，则返回<code class=\"literal\">NULL</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.8.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.8.1.1.1\"></a> <code class=\"function\">inet_client_port</code> () → <code class=\"returnvalue\">integer</code></p>\n<p>返回当前客户端的IP端口号，如果当前连接是通过Unix 域套接字则返回<code class=\"literal\">NULL</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.9.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.9.1.1.1\"></a> <code class=\"function\">inet_server_addr</code> () → <code class=\"returnvalue\">inet</code></p>\n<p>返回服务器接受当前连接的IP地址，如果当前连接是通过Unix 域套接字则返回<code class=\"literal\">NULL</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.10.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.10.1.1.1\"></a> <code class=\"function\">inet_server_port</code> () → <code class=\"returnvalue\">integer</code></p>\n<p>返回服务器接受当前连接的IP端口号，如果当前连接是通过Unix 域套接字则返回<code class=\"literal\">NULL</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.11.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.11.1.1.1\"></a> <code class=\"function\">pg_backend_pid</code> () → <code class=\"returnvalue\">integer</code></p>\n<p>返回附加到当前会话的服务器进程的进程ID。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"> <code class=\"function\">pg_blocking_pids</code> ( <code class=\"type\">integer</code> ) → <code class=\"returnvalue\">integer[]</code></p>\n<p lang=\"zh\">返回一个数组，包含阻止指定进程 ID 对应的服务器进程获取锁的会话进程 ID；如果不存在这样的服务器进程，或该进程未被阻塞，则返回空数组。</p>\n<p lang=\"zh\">一个服务器进程在以下情况下会阻塞另一个进程：它持有与后者锁请求冲突的锁，称为硬阻塞；或者它正在等待一个与后者锁请求冲突的锁，并在等待队列中排在后者前面，称为软阻塞。使用并行查询时，即使实际持锁或等待锁的是子工作进程，结果也始终列出客户端可见的进程 ID，即 pg_backend_pid 的结果。因此，结果中可能出现重复 PID。此外，预备事务持有冲突锁时，用进程 ID 零表示。</p>\n<p lang=\"zh\">频繁调用这个函数可能会对数据库性能产生一些影响，因为它需要在短时间内独占访问锁管理器的共享状态。</p>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.13.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.13.1.1.1\"></a> <code class=\"function\">pg_conf_load_time</code> () → <code class=\"returnvalue\">timestamp with time zone</code></p>\n<p>返回服务器配置文件最近一次加载的时间。如果当时当前会话已经存在，则返回该会话自身重新读取配置文件的时间（因此不同会话中的返回时间会略有不同）。否则，返回 postmaster 进程重新读取配置文件的时间。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.14.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.14.1.1.1\"></a> <a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.14.1.1.2\" name=\"id-1.5.8.33.3.4.2.2.14.1.1.2\"></a> <a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.14.1.1.3\" name=\"id-1.5.8.33.3.4.2.2.14.1.1.3\"></a> <a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.14.1.1.4\" name=\"id-1.5.8.33.3.4.2.2.14.1.1.4\"></a> <code class=\"function\">pg_current_logfile</code> ( [ <span class=\"optional\"><code class=\"type\">text</code></span> ] ) → <code class=\"returnvalue\">text</code></p>\n<p>返回当前由日志收集器使用的日志文件的路径名。路径包括<a class=\"xref\" href=\"/docs/18/runtime-config-logging.html#GUC-LOG-DIRECTORY\">log_directory</a>目录和单独的日志文件名。如果日志收集器已禁用，则结果为<code class=\"literal\">NULL</code>。当存在多个日志文件，每个以不同格式存在时，不带参数的<code class=\"function\">pg_current_logfile</code>返回有序列表中找到的第一个格式的文件路径：<code class=\"literal\">stderr</code>，<code class=\"literal\">csvlog</code>，<code class=\"literal\">jsonlog</code>。如果没有任何日志文件具有这些格式，则返回<code class=\"literal\">NULL</code>。要请求有关特定日志文件格式的信息，请将<code class=\"literal\">csvlog</code>，<code class=\"literal\">jsonlog</code>或<code class=\"literal\">stderr</code>作为可选参数的值。如果请求的日志格式未在<a class=\"xref\" href=\"/docs/18/runtime-config-logging.html#GUC-LOG-DESTINATION\">log_destination</a>中配置，则结果为<code class=\"literal\">NULL</code>。结果反映<code class=\"filename\">current_logfiles</code>文件的内容。</p>\n<p>默认情况下，此函数仅限超级用户和具有<code class=\"literal\">pg_monitor</code>角色权限的角色使用，但可以向其他用户授予EXECUTE权限以运行它。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"> <code class=\"function\">pg_get_loaded_modules</code> () → <code class=\"returnvalue\">setof record</code> ( <em class=\"parameter\"><code>module_name</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>version</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>file_name</code></em> <code class=\"type\">text</code> )</p>\n<p lang=\"zh\">返回当前服务器会话已加载的可加载模块列表。除非模块作者通过 PG_MODULE_MAGIC_EXT 宏提供了值，否则 module_name 和 version 字段均为 NULL。file_name 字段给出模块（共享库）的文件名。</p>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.16.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.16.1.1.1\"></a> <code class=\"function\">pg_my_temp_schema</code> () → <code class=\"returnvalue\">oid</code></p>\n<p>返回当前会话的临时模式的OID，如果没有则返回0（因为它没有创建任何临时表）。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.17.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.17.1.1.1\"></a> <code class=\"function\">pg_is_other_temp_schema</code> ( <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>如果给定的OID是另一个会话的临时模式的OID则返回真。（这可能是有用的，例如，在目录显示中排除其他会话的临时表。）</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.18.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.18.1.1.1\"></a> <code class=\"function\">pg_jit_available</code> () → <code class=\"returnvalue\">boolean</code></p>\n<p>如果<acronym class=\"acronym\">JIT</acronym>编译器扩展可用（参见<a class=\"xref\" href=\"/docs/18/jit.html\" title=\"第 30 章 即时编译（JIT）\">第 30 章</a>），并且<a class=\"xref\" href=\"/docs/18/runtime-config-query.html#GUC-JIT\">jit</a>配置参数设置为<code class=\"literal\">on</code>，则返回真。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.19.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.19.1.1.1\"></a> <code class=\"function\">pg_numa_available</code> () → <code class=\"returnvalue\">boolean</code></p>\n<p>如果服务器在编译时启用了 <acronym class=\"acronym\">NUMA</acronym> 支持，则返回真。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.20.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.20.1.1.1\"></a> <code class=\"function\">pg_listening_channels</code> () → <code class=\"returnvalue\">setof text</code></p>\n<p>返回当前会话正在侦听的异步通知通道的名称集。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.21.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.21.1.1.1\"></a> <code class=\"function\">pg_notification_queue_usage</code> () → <code class=\"returnvalue\">double precision</code></p>\n<p>返回待处理通知当前占用的空间占异步通知队列最大容量的比例（0–1）。更多信息请参见<a class=\"xref\" href=\"/docs/18/sql-listen.html\" title=\"LISTEN\"><span class=\"refentrytitle\">LISTEN</span></a>和<a class=\"xref\" href=\"/docs/18/sql-notify.html\" title=\"NOTIFY\"><span class=\"refentrytitle\">NOTIFY</span></a>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.22.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.22.1.1.1\"></a> <code class=\"function\">pg_postmaster_start_time</code> () → <code class=\"returnvalue\">timestamp with time zone</code></p>\n<p>返回服务器启动时的时间。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.23.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.23.1.1.1\"></a> <code class=\"function\">pg_safe_snapshot_blocking_pids</code> ( <code class=\"type\">integer</code> ) → <code class=\"returnvalue\">integer[]</code></p>\n<p>返回一个数组，包含阻止指定进程 ID 对应的服务器进程获取安全快照的会话进程 ID；如果不存在这样的服务器进程，或该进程未被阻塞，则返回空数组。</p>\n<p>运行<code class=\"literal\">SERIALIZABLE</code>事务的会话会阻止<code class=\"literal\">SERIALIZABLE READ ONLY DEFERRABLE</code>事务获取快照，直到后者确定可以安全地避免获取谓词锁。关于可序列化和可延迟事务的更多信息，请参见<a class=\"xref\" href=\"/docs/18/transaction-iso.html#XACT-SERIALIZABLE\" title=\"13.2.3. 可串行化隔离级别\">第 13.2.3 节</a>。</p>\n<p>频繁调用这个函数可能会对数据库性能产生一些影响，因为它需要在短时间内访问谓词锁管理器的共享状态。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.24.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.24.1.1.1\"></a> <code class=\"function\">pg_trigger_depth</code> () → <code class=\"returnvalue\">integer</code></p>\n<p>返回<span class=\"productname\">PostgreSQL</span>触发器的当前嵌套层级（如果不是从触发器内部直接或间接调用，则为 0）。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.25.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.25.1.1.1\"></a> <code class=\"function\">session_user</code> → <code class=\"returnvalue\">name</code></p>\n<p>返回会话用户名。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.26.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.26.1.1.1\"></a> <code class=\"function\">system_user</code> → <code class=\"returnvalue\">text</code></p>\n<p>返回用户在被分配数据库角色之前，于认证周期中提供的认证方法和身份（如果有）。结果表示为 <code class=\"literal\">auth_method:identity</code>；如果用户未被认证（例如使用了<a class=\"link\" href=\"/docs/18/auth-trust.html\" title=\"20.4. 信任认证\">Trust 认证</a>），则返回 <code class=\"literal\">NULL</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.3.4.2.2.27.1.1.1\" name=\"id-1.5.8.33.3.4.2.2.27.1.1.1\"></a> <code class=\"function\">user</code> → <code class=\"returnvalue\">name</code></p>\n<p>这个相当于 <code class=\"function\">current_user</code>。</p>\n</td>\n</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<div class=\"note\">\n<h3 class=\"title\" lang=\"zh\">注意</h3>\n<p lang=\"zh\">current_catalog、current_role、current_schema、current_user、session_user 和 user 在 SQL 中具有特殊的语法地位：调用时后面不能加括号。在 PostgreSQL 中，current_schema 可以选择加括号，但其他函数不可以。</p>\n</div>\n<p lang=\"zh\"><code class=\"function\">session_user</code>通常是发起当前数据库连接的用户，但超级用户可以用<a class=\"xref\" href=\"/docs/18/sql-set-session-authorization.html\" title=\"SET SESSION AUTHORIZATION\"><span class=\"refentrytitle\">SET SESSION AUTHORIZATION</span></a>修改此设置。<code class=\"function\">current_user</code>是用于权限检查的用户标识，通常等于会话用户，但可以用<a class=\"xref\" href=\"/docs/18/sql-set-role.html\" title=\"SET ROLE\"><span class=\"refentrytitle\">SET ROLE</span></a>更改。在执行具有<code class=\"literal\">SECURITY DEFINER</code>属性的函数期间，它也会改变。用 Unix 的术语来说，会话用户是<span class=\"quote\">“<span class=\"quote\">真实用户</span>”</span>，当前用户是<span class=\"quote\">“<span class=\"quote\">有效用户</span>”</span>。<code class=\"function\">current_role</code>和<code class=\"function\">user</code>是<code class=\"function\">current_user</code>的同义词。（SQL 标准区分<code class=\"function\">current_role</code>和<code class=\"function\">current_user</code>，但<span class=\"productname\">PostgreSQL</span>不区分，因为它将用户和角色统一为同一种实体。）</p>\n</div>\n<div class=\"sect2\" id=\"FUNCTIONS-INFO-ACCESS\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-ACCESS\">9.27.2. 访问权限查询函数</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-ACCESS-TABLE\" title=\"表 9.72. 访问权限查询函数\">表 9.72</a>列出了允许以编程方式查询对象访问权限的函数。（关于权限的更多信息，请参见<a class=\"xref\" href=\"/docs/18/ddl-priv.html\" title=\"5.8. 权限\">第 5.8 节</a>。）在这些函数中，可以通过名称或 OID（<code class=\"structname\">pg_authid</code>.<code class=\"structfield\">oid</code>）指定要查询权限的用户；如果名称为<code class=\"literal\">public</code>，则检查 PUBLIC 伪角色的权限。也可以完全省略<em class=\"parameter\"><code>user</code></em>参数，此时使用<code class=\"function\">current_user</code>。要查询的对象也可以通过名称或 OID 指定。通过名称指定时，如适用，可以包含模式名。所需访问权限由文本字符串指定，其值必须为适用于该对象类型的权限关键字之一（例如<code class=\"literal\">SELECT</code>）。还可以在权限类型后附加<code class=\"literal\">WITH GRANT OPTION</code>，以检查是否拥有该权限及其授予选项。也可以用逗号分隔列出多个权限类型；只要拥有列出的任一权限，结果就为真。（权限字符串不区分大小写，权限名之间允许有额外的空白，但权限名内部不允许。）例如：</p>\n<pre class=\"programlisting\">SELECT has_table_privilege('myschema.mytable', 'select');\nSELECT has_table_privilege('joe', 'mytable', 'INSERT, SELECT WITH GRANT OPTION');\n</pre>\n<div class=\"table\" id=\"FUNCTIONS-INFO-ACCESS-TABLE\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.72. 访问权限查询函数</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th class=\"func_table_entry\" lang=\"zh\">\n<tr>\n<th class=\"func_table_entry\">\n<p class=\"func_signature\">函数</p>\n<p>描述</p>\n</th>\n</tr>\n</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.4.2.2.1.1.1.1\" name=\"id-1.5.8.33.4.4.2.2.1.1.1.1\"></a> <code class=\"function\">has_any_column_privilege</code> ( [ <span class=\"optional\"><em class=\"parameter\"><code>user</code></em> <code class=\"type\">name</code> or <code class=\"type\">oid</code>,</span> ] <em class=\"parameter\"><code>table</code></em> <code class=\"type\">text</code> or <code class=\"type\">oid</code>, <em class=\"parameter\"><code>privilege</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>用户是否对表的至少一列具有权限？如果拥有整个表的权限，或至少一列获得了该权限的列级授权，则返回真。允许的权限类型为<code class=\"literal\">SELECT</code>、<code class=\"literal\">INSERT</code>、<code class=\"literal\">UPDATE</code>和<code class=\"literal\">REFERENCES</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.4.2.2.2.1.1.1\" name=\"id-1.5.8.33.4.4.2.2.2.1.1.1\"></a> <code class=\"function\">has_column_privilege</code> ( [ <span class=\"optional\"><em class=\"parameter\"><code>user</code></em> <code class=\"type\">name</code> or <code class=\"type\">oid</code>,</span> ] <em class=\"parameter\"><code>table</code></em> <code class=\"type\">text</code> or <code class=\"type\">oid</code>, <em class=\"parameter\"><code>column</code></em> <code class=\"type\">text</code> or <code class=\"type\">smallint</code>, <em class=\"parameter\"><code>privilege</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>用户对指定的表列有权限么？如果对整个表持有权限，或者对列授予了列级别的权限，则会成功。可以通过名称或属性编号（<code class=\"structname\">pg_attribute</code>.<code class=\"structfield\">attnum</code>）指定列。允许的权限类型为<code class=\"literal\">SELECT</code>、<code class=\"literal\">INSERT</code>、<code class=\"literal\">UPDATE</code> 和 <code class=\"literal\">REFERENCES</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.4.2.2.3.1.1.1\" name=\"id-1.5.8.33.4.4.2.2.3.1.1.1\"></a> <code class=\"function\">has_database_privilege</code> ( [ <span class=\"optional\"><em class=\"parameter\"><code>user</code></em> <code class=\"type\">name</code> or <code class=\"type\">oid</code>,</span> ] <em class=\"parameter\"><code>database</code></em> <code class=\"type\">text</code> or <code class=\"type\">oid</code>, <em class=\"parameter\"><code>privilege</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>用户对数据库有权限吗？允许的权限类型为<code class=\"literal\">CREATE</code>、<code class=\"literal\">CONNECT</code>、<code class=\"literal\">TEMPORARY</code> 和 <code class=\"literal\">TEMP</code>（相当于 <code class=\"literal\">TEMPORARY</code>）。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.4.2.2.4.1.1.1\" name=\"id-1.5.8.33.4.4.2.2.4.1.1.1\"></a> <code class=\"function\">has_foreign_data_wrapper_privilege</code> ( [ <span class=\"optional\"><em class=\"parameter\"><code>user</code></em> <code class=\"type\">name</code> or <code class=\"type\">oid</code>,</span> ] <em class=\"parameter\"><code>fdw</code></em> <code class=\"type\">text</code> or <code class=\"type\">oid</code>, <em class=\"parameter\"><code>privilege</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>用户是否具有外部数据包装器权限？唯一允许的权限类型为<code class=\"literal\">USAGE</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.4.2.2.5.1.1.1\" name=\"id-1.5.8.33.4.4.2.2.5.1.1.1\"></a> <code class=\"function\">has_function_privilege</code> ( [ <span class=\"optional\"><em class=\"parameter\"><code>user</code></em> <code class=\"type\">name</code> or <code class=\"type\">oid</code>,</span> ] <em class=\"parameter\"><code>function</code></em> <code class=\"type\">text</code> or <code class=\"type\">oid</code>, <em class=\"parameter\"><code>privilege</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>用户对函数有权限吗？唯一允许的权限类型是<code class=\"literal\">EXECUTE</code>。</p>\n<p>当通过名称而不是OID指定函数时，允许的输入与<code class=\"type\">regprocedure</code>数据类型相同（参见<a class=\"xref\" href=\"/docs/18/datatype-oid.html\" title=\"8.19. 对象标识符类型\">第 8.19 节</a>）。一个示例为：</p>\n<pre class=\"programlisting\">\nSELECT has_function_privilege('joeuser', 'myfunc(int, text)', 'execute');\n</pre>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.4.2.2.6.1.1.1\" name=\"id-1.5.8.33.4.4.2.2.6.1.1.1\"></a> <code class=\"function\">has_language_privilege</code> ( [ <span class=\"optional\"><em class=\"parameter\"><code>user</code></em> <code class=\"type\">name</code> or <code class=\"type\">oid</code>,</span> ] <em class=\"parameter\"><code>language</code></em> <code class=\"type\">text</code> or <code class=\"type\">oid</code>, <em class=\"parameter\"><code>privilege</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>用户对语言有权限吗？唯一允许的权限类型是<code class=\"literal\">USAGE</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.4.2.2.7.1.1.1\" name=\"id-1.5.8.33.4.4.2.2.7.1.1.1\"></a> <code class=\"function\">has_largeobject_privilege</code> ( [ <span class=\"optional\"><em class=\"parameter\"><code>user</code></em> <code class=\"type\">name</code> or <code class=\"type\">oid</code>,</span> ] <em class=\"parameter\"><code>largeobject</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>privilege</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>用户是否拥有大对象的权限？可用的权限类型是 <code class=\"literal\">SELECT</code> 和 <code class=\"literal\">UPDATE</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.4.2.2.8.1.1.1\" name=\"id-1.5.8.33.4.4.2.2.8.1.1.1\"></a> <code class=\"function\">has_parameter_privilege</code> ( [ <span class=\"optional\"><em class=\"parameter\"><code>user</code></em> <code class=\"type\">name</code> or <code class=\"type\">oid</code>,</span> ] <em class=\"parameter\"><code>parameter</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>privilege</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>用户是否具有配置参数的权限？参数名称不区分大小写。允许的权限类型为<code class=\"literal\">SET</code>和<code class=\"literal\">ALTER SYSTEM</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.4.2.2.9.1.1.1\" name=\"id-1.5.8.33.4.4.2.2.9.1.1.1\"></a> <code class=\"function\">has_schema_privilege</code> ( [ <span class=\"optional\"><em class=\"parameter\"><code>user</code></em> <code class=\"type\">name</code> or <code class=\"type\">oid</code>,</span> ] <em class=\"parameter\"><code>schema</code></em> <code class=\"type\">text</code> or <code class=\"type\">oid</code>, <em class=\"parameter\"><code>privilege</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>用户对模式有权限吗？允许的权限类型是<code class=\"literal\">CREATE</code> 和<code class=\"literal\">USAGE</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.4.2.2.10.1.1.1\" name=\"id-1.5.8.33.4.4.2.2.10.1.1.1\"></a> <code class=\"function\">has_sequence_privilege</code> ( [ <span class=\"optional\"><em class=\"parameter\"><code>user</code></em> <code class=\"type\">name</code> or <code class=\"type\">oid</code>,</span> ] <em class=\"parameter\"><code>sequence</code></em> <code class=\"type\">text</code> or <code class=\"type\">oid</code>, <em class=\"parameter\"><code>privilege</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>用户是否具有序列权限？允许的权限类型为<code class=\"literal\">USAGE</code>、<code class=\"literal\">SELECT</code>和<code class=\"literal\">UPDATE</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.4.2.2.11.1.1.1\" name=\"id-1.5.8.33.4.4.2.2.11.1.1.1\"></a> <code class=\"function\">has_server_privilege</code> ( [ <span class=\"optional\"><em class=\"parameter\"><code>user</code></em> <code class=\"type\">name</code> or <code class=\"type\">oid</code>,</span> ] <em class=\"parameter\"><code>server</code></em> <code class=\"type\">text</code> or <code class=\"type\">oid</code>, <em class=\"parameter\"><code>privilege</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>用户是否对外部服务器有权限？唯一允许的权限类型是<code class=\"literal\">USAGE</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.4.2.2.12.1.1.1\" name=\"id-1.5.8.33.4.4.2.2.12.1.1.1\"></a> <code class=\"function\">has_table_privilege</code> ( [ <span class=\"optional\"><em class=\"parameter\"><code>user</code></em> <code class=\"type\">name</code> or <code class=\"type\">oid</code>,</span> ] <em class=\"parameter\"><code>table</code></em> <code class=\"type\">text</code> or <code class=\"type\">oid</code>, <em class=\"parameter\"><code>privilege</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>用户对表有权限吗？允许的权限类型有<code class=\"literal\">SELECT</code>、<code class=\"literal\">INSERT</code>、<code class=\"literal\">UPDATE</code>、<code class=\"literal\">DELETE</code>、<code class=\"literal\">TRUNCATE</code>、<code class=\"literal\">REFERENCES</code>、<code class=\"literal\">TRIGGER</code>和<code class=\"literal\">MAINTAIN</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.4.2.2.13.1.1.1\" name=\"id-1.5.8.33.4.4.2.2.13.1.1.1\"></a> <code class=\"function\">has_tablespace_privilege</code> ( [ <span class=\"optional\"><em class=\"parameter\"><code>user</code></em> <code class=\"type\">name</code> or <code class=\"type\">oid</code>,</span> ] <em class=\"parameter\"><code>tablespace</code></em> <code class=\"type\">text</code> or <code class=\"type\">oid</code>, <em class=\"parameter\"><code>privilege</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>用户对表空间有权限吗？唯一允许的权限类型是<code class=\"literal\">CREATE</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.4.2.2.14.1.1.1\" name=\"id-1.5.8.33.4.4.2.2.14.1.1.1\"></a> <code class=\"function\">has_type_privilege</code> ( [ <span class=\"optional\"><em class=\"parameter\"><code>user</code></em> <code class=\"type\">name</code> or <code class=\"type\">oid</code>,</span> ] <em class=\"parameter\"><code>type</code></em> <code class=\"type\">text</code> or <code class=\"type\">oid</code>, <em class=\"parameter\"><code>privilege</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>用户对数据类型有权限吗？唯一允许的权限类型是 <code class=\"literal\">USAGE</code>。当通过名称而不是OID指定类型时，允许的输入与<code class=\"type\">regtype</code>数据类型相同（参见<a class=\"xref\" href=\"/docs/18/datatype-oid.html\" title=\"8.19. 对象标识符类型\">第 8.19 节</a>）。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.4.2.2.15.1.1.1\" name=\"id-1.5.8.33.4.4.2.2.15.1.1.1\"></a> <code class=\"function\">pg_has_role</code> ( [ <span class=\"optional\"><em class=\"parameter\"><code>user</code></em> <code class=\"type\">name</code> or <code class=\"type\">oid</code>,</span> ] <em class=\"parameter\"><code>role</code></em> <code class=\"type\">text</code> or <code class=\"type\">oid</code>, <em class=\"parameter\"><code>privilege</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>用户是否具有角色权限？允许的权限类型为<code class=\"literal\">MEMBER</code>、<code class=\"literal\">USAGE</code>和<code class=\"literal\">SET</code>。<code class=\"literal\">MEMBER</code>表示对该角色的直接或间接成员资格，而不考虑由此授予的具体权限。<code class=\"literal\">USAGE</code>表示该角色的权限是否无需执行<code class=\"command\">SET ROLE</code>即可立即使用，而<code class=\"literal\">SET</code>表示是否可以使用<code class=\"literal\">SET ROLE</code>命令切换到该角色。任一权限类型后面都可以附加<code class=\"literal\">WITH ADMIN OPTION</code>或<code class=\"literal\">WITH GRANT OPTION</code>，用于测试是否持有 <code class=\"literal\">ADMIN</code> 权限（这六种写法测试的都是同一件事）。此函数不允许将<em class=\"parameter\"><code>user</code></em>设置为<code class=\"literal\">public</code>这一特殊情况，因为 PUBLIC 伪角色永远不能成为实际角色的成员。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.4.2.2.16.1.1.1\" name=\"id-1.5.8.33.4.4.2.2.16.1.1.1\"></a> <code class=\"function\">row_security_active</code> ( <em class=\"parameter\"><code>table</code></em> <code class=\"type\">text</code> or <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>在当前用户和当前环境的上下文中，指定表的行级安全是否生效？</p>\n</td>\n</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<p lang=\"zh\"><a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-ACLITEM-OP-TABLE\" title=\"表 9.73. aclitem 操作符\">表 9.73</a>列出了<code class=\"type\">aclitem</code>类型可用的操作符；该类型是访问权限在系统目录中的表示形式。有关如何解读访问权限值的信息，请参见<a class=\"xref\" href=\"/docs/18/ddl-priv.html\" title=\"5.8. 权限\">第 5.8 节</a>。</p>\n<div class=\"table\" id=\"FUNCTIONS-ACLITEM-OP-TABLE\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.73. <code class=\"type\">aclitem</code> 操作符</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th class=\"func_table_entry\" lang=\"zh\">\n<tr>\n<th class=\"func_table_entry\">\n<p class=\"func_signature\">操作符</p>\n<p>描述</p>\n<p>示例</p>\n</th>\n</tr>\n</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.6.2.2.1.1.1.1\" name=\"id-1.5.8.33.4.6.2.2.1.1.1.1\"></a> <code class=\"type\">aclitem</code> <code class=\"literal\">=</code> <code class=\"type\">aclitem</code> → <code class=\"returnvalue\">boolean</code></p>\n<p>两个<code class=\"type\">aclitem</code>是否相等？（注意，<code class=\"type\">aclitem</code>类型没有通常的整套比较操作符，而只支持相等比较。因此，<code class=\"type\">aclitem</code>数组也只能进行相等比较。）</p>\n<p><code class=\"literal\">'calvin=r*w/hobbes'::aclitem = 'calvin=r*w*/hobbes'::aclitem</code> → <code class=\"returnvalue\">f</code></p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.6.2.2.2.1.1.1\" name=\"id-1.5.8.33.4.6.2.2.2.1.1.1\"></a> <code class=\"type\">aclitem[]</code> <code class=\"literal\">@&gt;</code> <code class=\"type\">aclitem</code> → <code class=\"returnvalue\">boolean</code></p>\n<p>数组是否包含指定的权限？（如果数组中存在一个条目，其被授权者和授权者与该<code class=\"type\">aclitem</code>相同，且至少包含指定的全部权限，则返回真。）</p>\n<p><code class=\"literal\">'{calvin=r*w/hobbes,hobbes=r*w*/postgres}'::aclitem[] @&gt; 'calvin=r*/hobbes'::aclitem</code> → <code class=\"returnvalue\">t</code></p>\n</td>\n</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<p lang=\"zh\"><a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-ACLITEM-FN-TABLE\" title=\"表 9.74. aclitem 函数\">表 9.74</a>列出了一些用于管理<code class=\"type\">aclitem</code>类型的其他函数。</p>\n<div class=\"table\" id=\"FUNCTIONS-ACLITEM-FN-TABLE\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.74. <code class=\"type\">aclitem</code> 函数</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th class=\"func_table_entry\" lang=\"zh\">\n<tr>\n<th class=\"func_table_entry\">\n<p class=\"func_signature\">函数</p>\n<p>描述</p>\n</th>\n</tr>\n</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.8.2.2.1.1.1.1\" name=\"id-1.5.8.33.4.8.2.2.1.1.1.1\"></a> <code class=\"function\">acldefault</code> ( <em class=\"parameter\"><code>type</code></em> <code class=\"type\">\"char\"</code>, <em class=\"parameter\"><code>ownerId</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">aclitem[]</code></p>\n<p>构造一个<code class=\"type\">aclitem</code>数组，保存类型为<em class=\"parameter\"><code>type</code></em>、属于 OID 为<em class=\"parameter\"><code>ownerId</code></em>的角色的对象的默认访问权限。当对象的<acronym class=\"acronym\">ACL</acronym>条目为空值时，会采用这些访问权限。（默认访问权限见<a class=\"xref\" href=\"/docs/18/ddl-priv.html\" title=\"5.8. 权限\">第 5.8 节</a>。）<em class=\"parameter\"><code>type</code></em>参数必须为以下值之一：'c' 表示<code class=\"literal\">COLUMN</code>，'r' 表示<code class=\"literal\">TABLE</code>和类似表的对象，'s' 表示<code class=\"literal\">SEQUENCE</code>，'d' 表示<code class=\"literal\">DATABASE</code>，'f' 表示<code class=\"literal\">FUNCTION</code>或<code class=\"literal\">PROCEDURE</code>，'l' 表示<code class=\"literal\">LANGUAGE</code>，'L' 表示<code class=\"literal\">LARGE OBJECT</code>，'n' 表示<code class=\"literal\">SCHEMA</code>，'p' 表示<code class=\"literal\">PARAMETER</code>，'t' 表示<code class=\"literal\">TABLESPACE</code>，'F' 表示<code class=\"literal\">FOREIGN DATA WRAPPER</code>，'S' 表示<code class=\"literal\">FOREIGN SERVER</code>，'T' 表示<code class=\"literal\">TYPE</code>或<code class=\"literal\">DOMAIN</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.8.2.2.2.1.1.1\" name=\"id-1.5.8.33.4.8.2.2.2.1.1.1\"></a> <code class=\"function\">aclexplode</code> ( <code class=\"type\">aclitem[]</code> ) → <code class=\"returnvalue\">setof record</code> ( <em class=\"parameter\"><code>grantor</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>grantee</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>privilege_type</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>is_grantable</code></em> <code class=\"type\">boolean</code> )</p>\n<p>以行集的形式返回<code class=\"type\">aclitem</code>数组。如果被授权者是伪角色 PUBLIC，则在<em class=\"parameter\"><code>grantee</code></em>列中用零表示。每项授予的权限表示为<code class=\"literal\">SELECT</code>、<code class=\"literal\">INSERT</code>等（完整列表见<a class=\"xref\" href=\"/docs/18/ddl-priv.html#PRIVILEGE-ABBREVS-TABLE\" title=\"表 5.1. ACL 权限缩写\">表 5.1</a>）。注意，每项权限都会拆成单独的一行，因此<em class=\"parameter\"><code>privilege_type</code></em>列中只会出现一个关键字。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.4.8.2.2.3.1.1.1\" name=\"id-1.5.8.33.4.8.2.2.3.1.1.1\"></a> <code class=\"function\">makeaclitem</code> ( <em class=\"parameter\"><code>grantee</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>grantor</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>privileges</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>is_grantable</code></em> <code class=\"type\">boolean</code> ) → <code class=\"returnvalue\">aclitem</code></p>\n<p>使用给定的属性构造<code class=\"type\">aclitem</code>。<em class=\"parameter\"><code>privileges</code></em>是以逗号分隔的权限名列表，例如<code class=\"literal\">SELECT</code>、<code class=\"literal\">INSERT</code>等，列出的所有权限都会设置在结果中。（权限字符串不区分大小写，权限名之间允许有额外的空白，但权限名内部不允许。）</p>\n</td>\n</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n</div>\n<div class=\"sect2\" id=\"FUNCTIONS-INFO-SCHEMA\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-SCHEMA\">9.27.3. 模式可见性查询函数</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-SCHEMA-TABLE\" title=\"表 9.75. 模式可见性查询函数\">表 9.75</a>列出了判断某个特定对象是否<em class=\"firstterm\">可见</em>的函数，其判断依据是当前模式搜索路径。例如，如果表所在的模式位于搜索路径中，并且在搜索路径的更前面没有同名表，就称该表可见。这等价于说，可以只通过表名引用该表，而不必显式地用模式限定。因此，要列出所有可见表的名称：</p>\n<pre class=\"programlisting\">SELECT relname FROM pg_class WHERE pg_table_is_visible(oid);\n</pre>\n<p lang=\"zh\">对于函数和操作符，只要搜索路径中更靠前的位置没有对象具有与被检查对象相同的名称<span class=\"emphasis\"><em>和参数数据类型</em></span>，就称被检查对象可见。对于操作符类和操作符族，会同时考虑名称及关联的索引访问方法。</p>\n<div class=\"table\" id=\"FUNCTIONS-INFO-SCHEMA-TABLE\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.75. 模式可见性查询函数</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th class=\"func_table_entry\" lang=\"zh\">\n<tr>\n<th class=\"func_table_entry\">\n<p class=\"func_signature\">函数</p>\n<p>描述</p>\n</th>\n</tr>\n</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.5.4.2.2.1.1.1.1\" name=\"id-1.5.8.33.5.4.2.2.1.1.1.1\"></a> <code class=\"function\">pg_collation_is_visible</code> ( <em class=\"parameter\"><code>collation</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>排序规则在搜索路径中可见吗？</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.5.4.2.2.2.1.1.1\" name=\"id-1.5.8.33.5.4.2.2.2.1.1.1\"></a> <code class=\"function\">pg_conversion_is_visible</code> ( <em class=\"parameter\"><code>conversion</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>转换在搜索路径中可见吗？</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.5.4.2.2.3.1.1.1\" name=\"id-1.5.8.33.5.4.2.2.3.1.1.1\"></a> <code class=\"function\">pg_function_is_visible</code> ( <em class=\"parameter\"><code>function</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>函数在搜索路径中可见吗？（这也适用于过程和聚合。）</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.5.4.2.2.4.1.1.1\" name=\"id-1.5.8.33.5.4.2.2.4.1.1.1\"></a> <code class=\"function\">pg_opclass_is_visible</code> ( <em class=\"parameter\"><code>opclass</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>操作符类在搜索路径中可见吗？</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.5.4.2.2.5.1.1.1\" name=\"id-1.5.8.33.5.4.2.2.5.1.1.1\"></a> <code class=\"function\">pg_operator_is_visible</code> ( <em class=\"parameter\"><code>operator</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>操作符在搜索路径中可见吗？</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.5.4.2.2.6.1.1.1\" name=\"id-1.5.8.33.5.4.2.2.6.1.1.1\"></a> <code class=\"function\">pg_opfamily_is_visible</code> ( <em class=\"parameter\"><code>opclass</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>操作符族在搜索路径中可见吗？</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.5.4.2.2.7.1.1.1\" name=\"id-1.5.8.33.5.4.2.2.7.1.1.1\"></a> <code class=\"function\">pg_statistics_obj_is_visible</code> ( <em class=\"parameter\"><code>stat</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>统计对象在搜索路径中可见吗？</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.5.4.2.2.8.1.1.1\" name=\"id-1.5.8.33.5.4.2.2.8.1.1.1\"></a> <code class=\"function\">pg_table_is_visible</code> ( <em class=\"parameter\"><code>table</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>表在搜索路径中可见吗？（这适用于所有类型的关系，包括视图、物化视图、索引、序列和外部表。）</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.5.4.2.2.9.1.1.1\" name=\"id-1.5.8.33.5.4.2.2.9.1.1.1\"></a> <code class=\"function\">pg_ts_config_is_visible</code> ( <em class=\"parameter\"><code>config</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>全文检索配置是否在搜索路径中可见？</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.5.4.2.2.10.1.1.1\" name=\"id-1.5.8.33.5.4.2.2.10.1.1.1\"></a> <code class=\"function\">pg_ts_dict_is_visible</code> ( <em class=\"parameter\"><code>dict</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>全文检索词典是否在搜索路径中可见？</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.5.4.2.2.11.1.1.1\" name=\"id-1.5.8.33.5.4.2.2.11.1.1.1\"></a> <code class=\"function\">pg_ts_parser_is_visible</code> ( <em class=\"parameter\"><code>parser</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>全文检索解析器是否在搜索路径中可见？</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.5.4.2.2.12.1.1.1\" name=\"id-1.5.8.33.5.4.2.2.12.1.1.1\"></a> <code class=\"function\">pg_ts_template_is_visible</code> ( <em class=\"parameter\"><code>template</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>全文检索模板是否在搜索路径中可见？</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.5.4.2.2.13.1.1.1\" name=\"id-1.5.8.33.5.4.2.2.13.1.1.1\"></a> <code class=\"function\">pg_type_is_visible</code> ( <em class=\"parameter\"><code>type</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>类型（或域）在搜索路径中可见吗？</p>\n</td>\n</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<p lang=\"zh\">所有这些函数都需要用对象 OID 标识要检查的对象。如果想按名称测试对象，使用 OID 别名类型会很方便（<code class=\"type\">regclass</code>，<code class=\"type\">regtype</code>，<code class=\"type\">regprocedure</code>，<code class=\"type\">regoperator</code>，<code class=\"type\">regconfig</code>，或<code class=\"type\">regdictionary</code>），例如：</p>\n<pre class=\"programlisting\">SELECT pg_type_is_visible('myschema.widget'::regtype);\n</pre>\n<p lang=\"zh\">注意，用这种方式测试不带模式限定的类型名并没有太大意义：只要该名称能够被识别，它就必然可见。</p>\n</div>\n<div class=\"sect2\" id=\"FUNCTIONS-INFO-CATALOG\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-CATALOG\">9.27.4. 系统目录信息函数</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE\" title=\"表 9.76. 系统目录信息函数\">表 9.76</a>列出从系统目录中提取信息的函数。</p>\n<div class=\"table\" id=\"FUNCTIONS-INFO-CATALOG-TABLE\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.76. 系统目录信息函数</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th class=\"func_table_entry\" lang=\"zh\">\n<tr>\n<th class=\"func_table_entry\">\n<p class=\"func_signature\">函数</p>\n<p>描述</p>\n</th>\n</tr>\n</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"func_table_entry\" id=\"FORMAT-TYPE\" lang=\"zh\">\n<td class=\"func_table_entry\" id=\"FORMAT-TYPE\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.1.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.1.1.1.1\"></a> <code class=\"function\">format_type</code> ( <em class=\"parameter\"><code>type</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>typemod</code></em> <code class=\"type\">integer</code> ) → <code class=\"returnvalue\">text</code></p>\n<p>返回由其类型OID和可能的类型修饰符标识的数据类型的SQL名称。如果没有已知的类型修饰符，则传递NULL值给类型修饰符。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.2.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.2.1.1.1\"></a> <code class=\"function\">pg_basetype</code> ( <code class=\"type\">regtype</code> ) → <code class=\"returnvalue\">regtype</code></p>\n<p>返回由类型 OID 标识的域的基础类型 OID。如果参数是非域类型的 OID，则原样返回该参数。如果参数不是有效的类型 OID，则返回 NULL。如果存在域依赖链，则递归查找，直到找到基础类型。</p>\n<p>假设执行了<code class=\"literal\">CREATE DOMAIN mytext AS text</code>：</p>\n<p><code class=\"literal\">pg_basetype('mytext'::regtype)</code> → <code class=\"returnvalue\">text</code></p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" id=\"PG-CHAR-TO-ENCODING\" lang=\"zh\">\n<td class=\"func_table_entry\" id=\"PG-CHAR-TO-ENCODING\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.3.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.3.1.1.1\"></a> <code class=\"function\">pg_char_to_encoding</code> ( <em class=\"parameter\"><code>encoding</code></em> <code class=\"type\">name</code> ) → <code class=\"returnvalue\">integer</code></p>\n<p>将提供的编码名称转换为表示在某些系统目录表中使用的内部标识符的整数。如果提供了未知的编码名称，则返回<code class=\"literal\">-1</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" id=\"PG-ENCODING-TO-CHAR\" lang=\"zh\">\n<td class=\"func_table_entry\" id=\"PG-ENCODING-TO-CHAR\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.4.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.4.1.1.1\"></a> <code class=\"function\">pg_encoding_to_char</code> ( <em class=\"parameter\"><code>encoding</code></em> <code class=\"type\">integer</code> ) → <code class=\"returnvalue\">name</code></p>\n<p>将在某些系统目录表中用作编码内部标识符的整数转换为可读的字符串。如果提供了无效的编码编号，则返回空字符串。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.5.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.5.1.1.1\"></a> <code class=\"function\">pg_get_catalog_foreign_keys</code> () → <code class=\"returnvalue\">setof record</code> ( <em class=\"parameter\"><code>fktable</code></em> <code class=\"type\">regclass</code>, <em class=\"parameter\"><code>fkcols</code></em> <code class=\"type\">text[]</code>, <em class=\"parameter\"><code>pktable</code></em> <code class=\"type\">regclass</code>, <em class=\"parameter\"><code>pkcols</code></em> <code class=\"type\">text[]</code>, <em class=\"parameter\"><code>is_array</code></em> <code class=\"type\">boolean</code>, <em class=\"parameter\"><code>is_opt</code></em> <code class=\"type\">boolean</code> )</p>\n<p>返回一组记录，描述存在于<span class=\"productname\">PostgreSQL</span>系统目录中的外键关系。<em class=\"parameter\"><code>fktable</code></em> 列包含引用目录的名称，<em class=\"parameter\"><code>fkcols</code></em>列包含引用列的名称。类似地，<em class=\"parameter\"><code>pktable</code></em>列包含被引用目录的名称，而<em class=\"parameter\"><code>pkcols</code></em>列包含被引用列的名称。如果<em class=\"parameter\"><code>is_array</code></em>为真，则最后一个引用列是一个数组，其每个元素都应该与被引用目录中的某个条目匹配。如果<em class=\"parameter\"><code>is_opt</code></em>为真，则允许引用列包含零而不是有效引用。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.6.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.6.1.1.1\"></a> <code class=\"function\">pg_get_constraintdef</code> ( <em class=\"parameter\"><code>constraint</code></em> <code class=\"type\">oid</code> [<span class=\"optional\">, <em class=\"parameter\"><code>pretty</code></em> <code class=\"type\">boolean</code></span> ] ) → <code class=\"returnvalue\">text</code></p>\n<p>重建约束的创建命令。（这是反编译重建的结果，并非命令的原始文本。）</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.7.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.7.1.1.1\"></a> <code class=\"function\">pg_get_expr</code> ( <em class=\"parameter\"><code>expr</code></em> <code class=\"type\">pg_node_tree</code>, <em class=\"parameter\"><code>relation</code></em> <code class=\"type\">oid</code> [<span class=\"optional\">, <em class=\"parameter\"><code>pretty</code></em> <code class=\"type\">boolean</code></span> ] ) → <code class=\"returnvalue\">text</code></p>\n<p>反编译存储在系统目录中的表达式的内部形式，例如列的默认值。如果表达式可能包含 Var 节点，请将它们所引用的关系的 OID 指定为第二个参数；如果预计不含 Var 节点，传入零即可。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.8.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.8.1.1.1\"></a> <code class=\"function\">pg_get_functiondef</code> ( <em class=\"parameter\"><code>func</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">text</code></p>\n<p>重建函数或过程的创建命令。（这是反编译重建的结果，并非命令的原始文本。）结果是一条完整的<code class=\"command\">CREATE OR REPLACE FUNCTION</code>或<code class=\"command\">CREATE OR REPLACE PROCEDURE</code>语句。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.9.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.9.1.1.1\"></a> <code class=\"function\">pg_get_function_arguments</code> ( <em class=\"parameter\"><code>func</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">text</code></p>\n<p>重建函数或过程的参数列表，采用其在<code class=\"command\">CREATE FUNCTION</code>中应有的形式（包括默认值）。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.10.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.10.1.1.1\"></a> <code class=\"function\">pg_get_function_identity_arguments</code> ( <em class=\"parameter\"><code>func</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">text</code></p>\n<p>重建标识函数或过程所需的参数列表，采用其在<code class=\"command\">ALTER FUNCTION</code>等命令中应有的形式。这种形式省略默认值。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.11.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.11.1.1.1\"></a> <code class=\"function\">pg_get_function_result</code> ( <em class=\"parameter\"><code>func</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">text</code></p>\n<p>重建函数的<code class=\"literal\">RETURNS</code>子句，采用其在<code class=\"command\">CREATE FUNCTION</code>中应有的形式。对于过程，返回<code class=\"literal\">NULL</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.12.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.12.1.1.1\"></a> <code class=\"function\">pg_get_indexdef</code> ( <em class=\"parameter\"><code>index</code></em> <code class=\"type\">oid</code> [<span class=\"optional\">, <em class=\"parameter\"><code>column</code></em> <code class=\"type\">integer</code>, <em class=\"parameter\"><code>pretty</code></em> <code class=\"type\">boolean</code></span> ] ) → <code class=\"returnvalue\">text</code></p>\n<p>重建索引的创建命令。（这是反编译重建的结果，并非命令的原始文本。）如果提供了<em class=\"parameter\"><code>column</code></em>而且不为零，则只重建该列的定义。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"> <code class=\"function\">pg_get_keywords</code> () → <code class=\"returnvalue\">setof record</code> ( <em class=\"parameter\"><code>word</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>catcode</code></em> <code class=\"type\">\"char\"</code>, <em class=\"parameter\"><code>barelabel</code></em> <code class=\"type\">boolean</code>, <em class=\"parameter\"><code>catdesc</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>baredesc</code></em> <code class=\"type\">text</code> )</p>\n<p lang=\"zh\">返回一组记录，描述服务器识别的 SQL 关键字。word 列为关键字本身。catcode 列为分类代码：U 表示非保留关键字，C 表示可作列名的关键字，T 表示可作类型名或函数名的关键字，R 表示完全保留的关键字。如果关键字可直接作为 SELECT 列表中的“裸”列标签，barelabel 为 true；如果只能出现在 AS 之后，则为 false。catdesc 列以可能经过本地化的字符串描述关键字分类；baredesc 列以可能经过本地化的字符串描述关键字用作列标签的状态。</p>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.14.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.14.1.1.1\"></a> <code class=\"function\">pg_get_partition_constraintdef</code> ( <em class=\"parameter\"><code>table</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">text</code></p>\n<p>重建分区约束的定义。（这是反编译重建的结果，并非命令的原始文本。）</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"> <code class=\"function\">pg_get_partkeydef</code> ( <em class=\"parameter\"><code>table</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">text</code></p>\n<p lang=\"zh\">重建分区表的分区键定义，格式与 CREATE TABLE 的 PARTITION BY 子句中的写法相同。（这是反编译重建的定义，并非命令原文。）</p>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.16.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.16.1.1.1\"></a> <code class=\"function\">pg_get_ruledef</code> ( <em class=\"parameter\"><code>rule</code></em> <code class=\"type\">oid</code> [<span class=\"optional\">, <em class=\"parameter\"><code>pretty</code></em> <code class=\"type\">boolean</code></span> ] ) → <code class=\"returnvalue\">text</code></p>\n<p>重建规则的创建命令。（这是反编译重建的结果，并非命令的原始文本。）</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.17.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.17.1.1.1\"></a> <code class=\"function\">pg_get_serial_sequence</code> ( <em class=\"parameter\"><code>table</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>column</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">text</code></p>\n<p>返回与列相关联的序列名称，如果没有序列与该列相关联则返回NULL。如果列是标识列，则关联序列是在内部为该列创建的序列。对于使用一种 serial 类型（<code class=\"type\">serial</code>、<code class=\"type\">smallserial</code>、<code class=\"type\">bigserial</code>）创建的列，它是为该 serial 列定义创建的序列。在后一种情况下，可以使用<code class=\"command\">ALTER SEQUENCE OWNED BY</code>修改或删除关联。（这个函数可能应该被称为<code class=\"function\">pg_get_owned_sequence</code>；它的当前名称反映了它在历史上曾与 serial 类型的列一起使用。）第一个参数是具有可选模式的表名，第二个参数是列名。由于第一个参数可能包含模式名和表名，因此按照通常的SQL规则解析它，这意味着默认情况下它是小写的。第二个参数只是一个列名，按照字面来处理，因此保留了它的大小写。结果经过了适当的格式化，可以传递给序列函数（参见<a class=\"xref\" href=\"/docs/18/functions-sequence.html\" title=\"9.17. 序列操作函数\">第 9.17 节</a>）。</p>\n<p>典型用法是读取标识列或 serial 列所用序列的当前值，例如：</p>\n<pre class=\"programlisting\">\nSELECT currval(pg_get_serial_sequence('sometable', 'id'));\n</pre>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.18.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.18.1.1.1\"></a> <code class=\"function\">pg_get_statisticsobjdef</code> ( <em class=\"parameter\"><code>statobj</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">text</code></p>\n<p>重建扩展统计对象的创建命令。（这是反编译重建的结果，并非命令的原始文本。）</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.19.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.19.1.1.1\"></a> <code class=\"function\">pg_get_triggerdef</code> ( <em class=\"parameter\"><code>trigger</code></em> <code class=\"type\">oid</code> [<span class=\"optional\">, <em class=\"parameter\"><code>pretty</code></em> <code class=\"type\">boolean</code></span> ] ) → <code class=\"returnvalue\">text</code></p>\n<p>重建触发器的创建命令。（这是反编译重建的结果，并非命令的原始文本。）</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.20.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.20.1.1.1\"></a> <code class=\"function\">pg_get_userbyid</code> ( <em class=\"parameter\"><code>role</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">name</code></p>\n<p>根据OID返回角色名。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.21.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.21.1.1.1\"></a> <code class=\"function\">pg_get_viewdef</code> ( <em class=\"parameter\"><code>view</code></em> <code class=\"type\">oid</code> [<span class=\"optional\">, <em class=\"parameter\"><code>pretty</code></em> <code class=\"type\">boolean</code></span> ] ) → <code class=\"returnvalue\">text</code></p>\n<p>重建定义视图或物化视图的<code class=\"command\">SELECT</code>命令。（这是反编译重建的结果，并非命令的原始文本。）</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><code class=\"function\">pg_get_viewdef</code> ( <em class=\"parameter\"><code>view</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>wrap_column</code></em> <code class=\"type\">integer</code> ) → <code class=\"returnvalue\">text</code></p>\n<p>重建定义视图或物化视图的<code class=\"command\">SELECT</code>命令。（这是反编译重建的结果，并非命令的原始文本。）这种形式始终启用美化输出，并将长行折行，尽量使每行长度小于指定列数。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><code class=\"function\">pg_get_viewdef</code> ( <em class=\"parameter\"><code>view</code></em> <code class=\"type\">text</code> [<span class=\"optional\">, <em class=\"parameter\"><code>pretty</code></em> <code class=\"type\">boolean</code></span> ] ) → <code class=\"returnvalue\">text</code></p>\n<p>根据视图的文本名称而不是其 OID，重建定义视图或物化视图的<code class=\"command\">SELECT</code>命令。（此形式已弃用；请使用 OID 变体。）</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.24.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.24.1.1.1\"></a> <code class=\"function\">pg_index_column_has_property</code> ( <em class=\"parameter\"><code>index</code></em> <code class=\"type\">regclass</code>, <em class=\"parameter\"><code>column</code></em> <code class=\"type\">integer</code>, <em class=\"parameter\"><code>property</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>测试一个索引列是否具有指定名称的属性。<a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-INDEX-COLUMN-PROPS\" title=\"表 9.77. 索引列属性\">表 9.77</a>列出了常用索引列属性。（注意，扩展访问方法可以为其索引定义额外的属性名。）如果属性名未知或不适用于特定对象，或者OID或列号不能识别有效的对象，则返回<code class=\"literal\">NULL</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.25.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.25.1.1.1\"></a> <code class=\"function\">pg_index_has_property</code> ( <em class=\"parameter\"><code>index</code></em> <code class=\"type\">regclass</code>, <em class=\"parameter\"><code>property</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>测试一个索引是否具有指定名称的属性。<a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-INDEX-PROPS\" title=\"表 9.78. 索引属性\">表 9.78</a>列出了常用的索引属性。（注意，扩展访问方法可以为其索引定义额外的属性名。）如果属性名未知或不适用于特定对象，或者OID不能识别有效的对象，则返回<code class=\"literal\">NULL</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.26.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.26.1.1.1\"></a> <code class=\"function\">pg_indexam_has_property</code> ( <em class=\"parameter\"><code>am</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>property</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>测试索引访问方法是否具有指定名称的属性。访问方法属性如<a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-INDEXAM-PROPS\" title=\"表 9.79. 索引访问方法属性\">表 9.79</a>所示。如果属性名未知或不适用于特定对象，或者OID不能识别有效的对象，则返回<code class=\"literal\">NULL</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.27.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.27.1.1.1\"></a> <code class=\"function\">pg_options_to_table</code> ( <em class=\"parameter\"><code>options_array</code></em> <code class=\"type\">text[]</code> ) → <code class=\"returnvalue\">setof record</code> ( <em class=\"parameter\"><code>option_name</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>option_value</code></em> <code class=\"type\">text</code> )</p>\n<p>返回源自<code class=\"structname\">pg_class</code>.<code class=\"structfield\">reloptions</code> 或 <code class=\"structname\">pg_attribute</code>.<code class=\"structfield\">attoptions</code>的值表示的存储选项集。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.28.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.28.1.1.1\"></a> <code class=\"function\">pg_settings_get_flags</code> ( <em class=\"parameter\"><code>guc</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">text[]</code></p>\n<p>返回与给定 GUC 关联的标志数组；如果该 GUC 不存在，则返回<code class=\"literal\">NULL</code>。如果 GUC 存在但没有要显示的标志，则结果为空数组。此函数仅公开<a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-PG-SETTINGS-FLAGS\" title=\"表 9.80. GUC 标志\">表 9.80</a>中列出的最有用的标志。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.29.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.29.1.1.1\"></a> <code class=\"function\">pg_tablespace_databases</code> ( <em class=\"parameter\"><code>tablespace</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">setof oid</code></p>\n<p>返回在指定表空间中存储了对象的数据库 OID 集合。如果此函数返回任何行，则说明该表空间不为空，不能删除。要查看存放在该表空间中的具体对象，需要连接到<code class=\"function\">pg_tablespace_databases</code>标识的数据库，并查询它们的<code class=\"structname\">pg_class</code>系统目录。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.30.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.30.1.1.1\"></a> <code class=\"function\">pg_tablespace_location</code> ( <em class=\"parameter\"><code>tablespace</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">text</code></p>\n<p>返回表空间所在的文件系统路径。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.31.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.31.1.1.1\"></a> <code class=\"function\">pg_typeof</code> ( <code class=\"type\">\"any\"</code> ) → <code class=\"returnvalue\">regtype</code></p>\n<p>返回所传入值的数据类型的 OID。这有助于排查问题或动态构造 SQL 查询。函数声明的返回类型是<code class=\"type\">regtype</code>，它是一种 OID 别名类型（参见<a class=\"xref\" href=\"/docs/18/datatype-oid.html\" title=\"8.19. 对象标识符类型\">第 8.19 节</a>）；这意味着它在比较时与 OID 相同，但显示为类型名。</p>\n<p><code class=\"literal\">pg_typeof(33)</code> → <code class=\"returnvalue\">integer</code></p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.32.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.32.1.1.1\"></a> <code class=\"function\">COLLATION FOR</code> ( <code class=\"type\">\"any\"</code> ) → <code class=\"returnvalue\">text</code></p>\n<p>返回传入值的排序规则名称。必要时会为返回的名称加上引号和模式限定。如果无法为参数表达式推导出排序规则，则返回<code class=\"literal\">NULL</code>。如果参数不属于支持排序规则的数据类型，则报错。</p>\n<p><code class=\"literal\">collation for ('foo'::text)</code> → <code class=\"returnvalue\">\"default\"</code></p>\n<p><code class=\"literal\">collation for ('foo' COLLATE \"de_DE\")</code> → <code class=\"returnvalue\">\"de_DE\"</code></p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.33.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.33.1.1.1\"></a> <code class=\"function\">to_regclass</code> ( <code class=\"type\">text</code> ) → <code class=\"returnvalue\">regclass</code></p>\n<p>将文本关系名转换为它的OID。通过将字符串类型转换为<code class=\"type\">regclass</code>可以得到类似的结果（参见<a class=\"xref\" href=\"/docs/18/datatype-oid.html\" title=\"8.19. 对象标识符类型\">第 8.19 节</a>）；但是，如果没有找到名称，这个函数将返回<code class=\"literal\">NULL</code>而不会抛出错误。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.34.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.34.1.1.1\"></a> <code class=\"function\">to_regcollation</code> ( <code class=\"type\">text</code> ) → <code class=\"returnvalue\">regcollation</code></p>\n<p>将文本排序规则名称转换为它的OID。通过将字符串类型转换为<code class=\"type\">regcollation</code>（参见<a class=\"xref\" href=\"/docs/18/datatype-oid.html\" title=\"8.19. 对象标识符类型\">第 8.19 节</a>）可以得到类似的结果；但是，如果没有找到名称，这个函数将返回<code class=\"literal\">NULL</code>而不会抛出错误。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.35.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.35.1.1.1\"></a> <code class=\"function\">to_regnamespace</code> ( <code class=\"type\">text</code> ) → <code class=\"returnvalue\">regnamespace</code></p>\n<p>将文本模式名转换为它的OID。通过将字符串转换为<code class=\"type\">regnamespace</code>类型（参见<a class=\"xref\" href=\"/docs/18/datatype-oid.html\" title=\"8.19. 对象标识符类型\">第 8.19 节</a>）可以得到类似的结果；但是，如果没有找到名称，这个函数将返回<code class=\"literal\">NULL</code>而不会抛出错误。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.36.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.36.1.1.1\"></a> <code class=\"function\">to_regoper</code> ( <code class=\"type\">text</code> ) → <code class=\"returnvalue\">regoper</code></p>\n<p>将文本操作符名称转换为它的OID。通过将字符串类型转换为<code class=\"type\">regoper</code>（参见<a class=\"xref\" href=\"/docs/18/datatype-oid.html\" title=\"8.19. 对象标识符类型\">第 8.19 节</a>）可以得到类似的结果；但是，如果找不到名称或名称有多义性，该函数将返回<code class=\"literal\">NULL</code>而不会抛出错误。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.37.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.37.1.1.1\"></a> <code class=\"function\">to_regoperator</code> ( <code class=\"type\">text</code> ) → <code class=\"returnvalue\">regoperator</code></p>\n<p>将文本操作符名称（带有参数类型）转换为其OID。通过将字符串转换为<code class=\"type\">regoperator</code>类型（参见<a class=\"xref\" href=\"/docs/18/datatype-oid.html\" title=\"8.19. 对象标识符类型\">第 8.19 节</a>）可以得到类似的结果；但是，如果没有找到名称，这个函数将返回<code class=\"literal\">NULL</code>而不会抛出错误。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.38.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.38.1.1.1\"></a> <code class=\"function\">to_regproc</code> ( <code class=\"type\">text</code> ) → <code class=\"returnvalue\">regproc</code></p>\n<p>将文本函数或过程名转换为其OID。通过将字符串转换为<code class=\"type\">regproc</code>类型（参见<a class=\"xref\" href=\"/docs/18/datatype-oid.html\" title=\"8.19. 对象标识符类型\">第 8.19 节</a>）可以得到类似的结果；但是，如果找不到名称或名称有多义性，该函数将返回<code class=\"literal\">NULL</code>而不会抛出错误。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.39.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.39.1.1.1\"></a> <code class=\"function\">to_regprocedure</code> ( <code class=\"type\">text</code> ) → <code class=\"returnvalue\">regprocedure</code></p>\n<p>将文本函数或过程名（带有参数类型）转换为其OID。通过将字符串类型转换为<code class=\"type\">regprocedure</code>可以得到类似的结果（参见<a class=\"xref\" href=\"/docs/18/datatype-oid.html\" title=\"8.19. 对象标识符类型\">第 8.19 节</a>）；但是，如果没有找到名称，这个函数将返回<code class=\"literal\">NULL</code>而不会抛出错误。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.40.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.40.1.1.1\"></a> <code class=\"function\">to_regrole</code> ( <code class=\"type\">text</code> ) → <code class=\"returnvalue\">regrole</code></p>\n<p>将文本角色名转换为它的OID。通过将字符串类型转换为<code class=\"type\">regrole</code>可以得到类似的结果（参见<a class=\"xref\" href=\"/docs/18/datatype-oid.html\" title=\"8.19. 对象标识符类型\">第 8.19 节</a>）；但是，如果没有找到名称，这个函数将返回<code class=\"literal\">NULL</code>而不会抛出错误。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" id=\"TO-REGTYPE\" lang=\"zh\">\n<td class=\"func_table_entry\" id=\"TO-REGTYPE\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.41.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.41.1.1.1\"></a> <code class=\"function\">to_regtype</code> ( <code class=\"type\">text</code> ) → <code class=\"returnvalue\">regtype</code></p>\n<p>解析文本字符串，从中提取可能的类型名，并将该名称转换为类型 OID。字符串中的语法错误会导致报错；但如果字符串是语法有效的类型名，只是在系统目录中找不到该类型，结果就是 <code class=\"literal\">NULL</code>。将字符串转换为 <code class=\"type\">regtype</code> 类型也能得到类似的结果（参见<a class=\"xref\" href=\"/docs/18/datatype-oid.html\" title=\"8.19. 对象标识符类型\">第 8.19 节</a>），区别在于类型转换会在找不到名称时报错。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.6.3.2.2.42.1.1.1\" name=\"id-1.5.8.33.6.3.2.2.42.1.1.1\"></a> <code class=\"function\">to_regtypemod</code> ( <code class=\"type\">text</code> ) → <code class=\"returnvalue\">integer</code></p>\n<p>解析文本字符串，从中提取可能的类型名称，并转换其类型修饰符（如果有）。字符串中的语法错误会引发错误；但如果字符串是语法有效的类型名称，只是在系统目录中找不到，则结果为<code class=\"literal\">NULL</code>。如果没有类型修饰符，则结果为<code class=\"literal\">-1</code>。</p>\n<p><code class=\"function\">to_regtypemod</code>可以与<a class=\"xref\" href=\"/docs/18/functions-info.html#TO-REGTYPE\">to_regtype</a>结合，为<a class=\"xref\" href=\"/docs/18/functions-info.html#FORMAT-TYPE\">format_type</a>生成适当的输入，从而将表示类型名称的字符串转换为规范形式。</p>\n<p><code class=\"literal\">format_type(to_regtype('varchar(32)'), to_regtypemod('varchar(32)'))</code> → <code class=\"returnvalue\">character varying(32)</code></p>\n</td>\n</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<p lang=\"zh\">大多数重建（反编译）数据库对象的函数都带有可选的 pretty 标志。若为 true，结果会进行“美化输出”，省略不必要的括号并添加空白以提高可读性。美化后的格式更易读，但默认格式更可能在未来 PostgreSQL 版本中得到相同解释，因此导出数据时应避免使用美化输出。给 pretty 参数传入 false 与省略该参数的结果相同。</p>\n<div class=\"table\" id=\"FUNCTIONS-INFO-INDEX-COLUMN-PROPS\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.77. 索引列属性</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th>Name</th>\n<th lang=\"zh\">说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"literal\">asc</code></td>\n<td lang=\"zh\">在向前扫描时列是按照升序排列吗？</td>\n</tr>\n<tr>\n<td><code class=\"literal\">desc</code></td>\n<td lang=\"zh\">在向前扫描时列是按照降序排列吗？</td>\n</tr>\n<tr>\n<td><code class=\"literal\">nulls_first</code></td>\n<td lang=\"zh\">在向前扫描时列排序会把空值排在前面吗？</td>\n</tr>\n<tr>\n<td><code class=\"literal\">nulls_last</code></td>\n<td lang=\"zh\">在向前扫描时列排序会把空值排在最后吗？</td>\n</tr>\n<tr>\n<td><code class=\"literal\">orderable</code></td>\n<td lang=\"zh\">列具有已定义的排序顺序吗？</td>\n</tr>\n<tr>\n<td><code class=\"literal\">distance_orderable</code></td>\n<td lang=\"zh\">能否按<span class=\"quote\">“<span class=\"quote\">距离</span>”</span>操作符的结果有序地扫描该列，例如<code class=\"literal\">ORDER BY col &lt;-&gt; constant</code>。</td>\n</tr>\n<tr>\n<td><code class=\"literal\">returnable</code></td>\n<td lang=\"zh\">列值是否可以通过一次仅索引扫描返回？</td>\n</tr>\n<tr>\n<td><code class=\"literal\">search_array</code></td>\n<td lang=\"zh\">列是否原生支持<code class=\"literal\">col = ANY(array)</code>搜索？</td>\n</tr>\n<tr>\n<td><code class=\"literal\">search_nulls</code></td>\n<td lang=\"zh\">列是否支持<code class=\"literal\">IS NULL</code>和<code class=\"literal\">IS NOT NULL</code>搜索？</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<div class=\"table\" id=\"FUNCTIONS-INFO-INDEX-PROPS\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.78. 索引属性</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th>Name</th>\n<th lang=\"zh\">说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"literal\">clusterable</code></td>\n<td lang=\"zh\">索引是否可以用于<code class=\"literal\">CLUSTER</code>命令？</td>\n</tr>\n<tr>\n<td><code class=\"literal\">index_scan</code></td>\n<td lang=\"zh\">索引是否支持普通扫描（非位图）？</td>\n</tr>\n<tr>\n<td><code class=\"literal\">bitmap_scan</code></td>\n<td lang=\"zh\">索引是否支持位图扫描？</td>\n</tr>\n<tr>\n<td><code class=\"literal\">backward_scan</code></td>\n<td lang=\"zh\">在扫描中扫描方向能否被更改（为了支持游标上无需物化的<code class=\"literal\">FETCH BACKWARD</code>）？</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<div class=\"table\" id=\"FUNCTIONS-INFO-INDEXAM-PROPS\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.79. 索引访问方法属性</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th>Name</th>\n<th lang=\"zh\">说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"literal\">can_order</code></td>\n<td lang=\"zh\">访问方法是否支持<code class=\"literal\">ASC</code>、<code class=\"literal\">DESC</code>以及<code class=\"literal\">CREATE INDEX</code>中的有关关键词？</td>\n</tr>\n<tr>\n<td><code class=\"literal\">can_unique</code></td>\n<td lang=\"zh\">访问方法是否支持唯一索引？</td>\n</tr>\n<tr>\n<td><code class=\"literal\">can_multi_col</code></td>\n<td lang=\"zh\">访问方法是否支持多列索引？</td>\n</tr>\n<tr>\n<td><code class=\"literal\">can_exclude</code></td>\n<td lang=\"zh\">访问方法是否支持排除约束？</td>\n</tr>\n<tr>\n<td><code class=\"literal\">can_include</code></td>\n<td lang=\"zh\">该访问方法是否支持 CREATE INDEX 的 INCLUDE 子句？</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<div class=\"table\" id=\"FUNCTIONS-PG-SETTINGS-FLAGS\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.80. GUC 标志</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th lang=\"zh\">标志</th>\n<th lang=\"zh\">说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"literal\">EXPLAIN</code></td>\n<td lang=\"zh\">带有此标志的参数会在<code class=\"command\">EXPLAIN (SETTINGS)</code>命令的输出中显示。</td>\n</tr>\n<tr>\n<td><code class=\"literal\">NO_SHOW_ALL</code></td>\n<td lang=\"zh\">带有此标志的参数不会在<code class=\"command\">SHOW ALL</code>命令的输出中显示。</td>\n</tr>\n<tr>\n<td><code class=\"literal\">NO_RESET</code></td>\n<td lang=\"zh\">带有此标志的参数不支持<code class=\"command\">RESET</code>命令。</td>\n</tr>\n<tr>\n<td><code class=\"literal\">NO_RESET_ALL</code></td>\n<td lang=\"zh\">具有此标志的参数将被排除在<code class=\"command\">RESET ALL</code>命令之外。</td>\n</tr>\n<tr>\n<td><code class=\"literal\">NOT_IN_SAMPLE</code></td>\n<td lang=\"zh\">带有此标志的参数默认情况下不包含在 <code class=\"filename\">postgresql.conf</code>中。</td>\n</tr>\n<tr>\n<td><code class=\"literal\">RUNTIME_COMPUTED</code></td>\n<td lang=\"zh\">具有此标志的参数是在运行时计算的参数。</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n</div>\n<div class=\"sect2\" id=\"FUNCTIONS-INFO-OBJECT\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-OBJECT\">9.27.5. 对象信息和寻址函数</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-OBJECT-TABLE\" title=\"表 9.81. 对象信息和寻址函数\">表 9.81</a>列出了与数据库对象标识和寻址有关的函数。</p>\n<div class=\"table\" id=\"FUNCTIONS-INFO-OBJECT-TABLE\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.81. 对象信息和寻址函数</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th class=\"func_table_entry\" lang=\"zh\">\n<tr>\n<th class=\"func_table_entry\">\n<p class=\"func_signature\">函数</p>\n<p>描述</p>\n</th>\n</tr>\n</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.7.3.2.2.1.1.1.1\" name=\"id-1.5.8.33.7.3.2.2.1.1.1.1\"></a> <code class=\"function\">pg_get_acl</code> ( <em class=\"parameter\"><code>classid</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>objid</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>objsubid</code></em> <code class=\"type\">integer</code> ) → <code class=\"returnvalue\">aclitem[]</code></p>\n<p>返回由系统目录 OID、对象 OID 和子对象 ID 指定的数据库对象的<acronym class=\"acronym\">ACL</acronym>。对于未定义的对象，此函数返回<code class=\"literal\">NULL</code>值。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.7.3.2.2.2.1.1.1\" name=\"id-1.5.8.33.7.3.2.2.2.1.1.1\"></a> <code class=\"function\">pg_describe_object</code> ( <em class=\"parameter\"><code>classid</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>objid</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>objsubid</code></em> <code class=\"type\">integer</code> ) → <code class=\"returnvalue\">text</code></p>\n<p>返回数据库对象的文本描述，对象由系统目录 OID、对象 OID 和子对象 ID 指定（例如表中的列号；引用整个对象时，子对象 ID 为零）。该描述供人阅读，并可能根据服务器配置被翻译。这对于确定<code class=\"structname\">pg_depend</code>系统目录中所引用对象的标识尤其有用。对于未定义的对象，此函数返回<code class=\"literal\">NULL</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.7.3.2.2.3.1.1.1\" name=\"id-1.5.8.33.7.3.2.2.3.1.1.1\"></a> <code class=\"function\">pg_identify_object</code> ( <em class=\"parameter\"><code>classid</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>objid</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>objsubid</code></em> <code class=\"type\">integer</code> ) → <code class=\"returnvalue\">record</code> ( <em class=\"parameter\"><code>type</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>schema</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>name</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>identity</code></em> <code class=\"type\">text</code> )</p>\n<p>返回一行，其中包含足以唯一标识数据库对象的信息，该对象由系统目录 OID、对象 OID 和子对象 ID 指定。这些信息供机器读取，永远不会被翻译。<em class=\"parameter\"><code>type</code></em>标识数据库对象的类型；<em class=\"parameter\"><code>schema</code></em>是对象所属的模式名，对于不属于模式的对象类型则为<code class=\"literal\">NULL</code>；如果对象名（以及适用时的模式名）足以唯一标识该对象，<em class=\"parameter\"><code>name</code></em>就是对象名，并在必要时加引号，否则为<code class=\"literal\">NULL</code>；<em class=\"parameter\"><code>identity</code></em>是完整的对象标识，其具体格式取决于对象类型，格式中的每个名称都会根据需要加上模式限定和引号。未定义的对象以<code class=\"literal\">NULL</code>值标识。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.7.3.2.2.4.1.1.1\" name=\"id-1.5.8.33.7.3.2.2.4.1.1.1\"></a> <code class=\"function\">pg_identify_object_as_address</code> ( <em class=\"parameter\"><code>classid</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>objid</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>objsubid</code></em> <code class=\"type\">integer</code> ) → <code class=\"returnvalue\">record</code> ( <em class=\"parameter\"><code>type</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>object_names</code></em> <code class=\"type\">text[]</code>, <em class=\"parameter\"><code>object_args</code></em> <code class=\"type\">text[]</code> )</p>\n<p>返回一行，其中包含足以唯一标识数据库对象的信息，该对象由系统目录 OID、对象 OID 和子对象 ID 指定。返回的信息与当前服务器无关，也就是说，它也能用于标识另一台服务器上名称相同的对象。<em class=\"parameter\"><code>type</code></em>标识数据库对象的类型；<em class=\"parameter\"><code>object_names</code></em>和<em class=\"parameter\"><code>object_args</code></em>是 text 数组，共同构成对该对象的引用。将这三个值传给<code class=\"function\">pg_get_object_address</code>可以获得对象的内部地址。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.7.3.2.2.5.1.1.1\" name=\"id-1.5.8.33.7.3.2.2.5.1.1.1\"></a> <code class=\"function\">pg_get_object_address</code> ( <em class=\"parameter\"><code>type</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>object_names</code></em> <code class=\"type\">text[]</code>, <em class=\"parameter\"><code>object_args</code></em> <code class=\"type\">text[]</code> ) → <code class=\"returnvalue\">record</code> ( <em class=\"parameter\"><code>classid</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>objid</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>objsubid</code></em> <code class=\"type\">integer</code> )</p>\n<p>返回一行，其中包含足以唯一标识数据库对象的信息，该对象由类型代码、对象名称数组和参数数组指定。返回的值就是<code class=\"structname\">pg_depend</code>等系统目录中使用的值；它们可以传给<code class=\"function\">pg_describe_object</code>或<code class=\"function\">pg_identify_object</code>等其他系统函数。<em class=\"parameter\"><code>classid</code></em>是包含该对象的系统目录的 OID；<em class=\"parameter\"><code>objid</code></em>是对象自身的 OID；<em class=\"parameter\"><code>objsubid</code></em>是子对象 ID，没有子对象时为零。此函数执行<code class=\"function\">pg_identify_object_as_address</code>的逆操作。未定义的对象以<code class=\"literal\">NULL</code>值标识。</p>\n</td>\n</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<p lang=\"zh\"><code class=\"function\">pg_get_acl</code>可用于检索和检查与数据库对象关联的权限，而无需查看特定目录。例如，若要检索当前数据库中对象上已授予的全部权限：</p>\n<pre class=\"programlisting\">postgres=# SELECT\n    (pg_identify_object(s.classid,s.objid,s.objsubid)).*,\n    pg_catalog.pg_get_acl(s.classid,s.objid,s.objsubid) AS acl\nFROM pg_catalog.pg_shdepend AS s\nJOIN pg_catalog.pg_database AS d\n    ON d.datname = current_database() AND\n       d.oid = s.dbid\nJOIN pg_catalog.pg_authid AS a\n    ON a.oid = s.refobjid AND\n       s.refclassid = 'pg_authid'::regclass\nWHERE s.deptype = 'a';\n-[ RECORD 1 ]-----------------------------------------\ntype     | table\nschema   | public\nname     | testtab\nidentity | public.testtab\nacl      | {postgres=arwdDxtm/postgres,foo=r/postgres}\n</pre>\n</div>\n<div class=\"sect2\" id=\"FUNCTIONS-INFO-COMMENT\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-COMMENT\">9.27.6. 注释信息函数</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE\" title=\"表 9.82. 注释信息函数\">表 9.82</a>中的函数用于提取此前通过<a class=\"xref\" href=\"/docs/18/sql-comment.html\" title=\"COMMENT\"><span class=\"refentrytitle\">COMMENT</span></a>命令存储的注释。如果找不到与指定参数对应的注释，则返回空值。</p>\n<div class=\"table\" id=\"FUNCTIONS-INFO-COMMENT-TABLE\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.82. 注释信息函数</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th class=\"func_table_entry\" lang=\"zh\">\n<tr>\n<th class=\"func_table_entry\">\n<p class=\"func_signature\">函数</p>\n<p>描述</p>\n</th>\n</tr>\n</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.8.4.2.2.1.1.1.1\" name=\"id-1.5.8.33.8.4.2.2.1.1.1.1\"></a> <code class=\"function\">col_description</code> ( <em class=\"parameter\"><code>table</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>column</code></em> <code class=\"type\">integer</code> ) → <code class=\"returnvalue\">text</code></p>\n<p>返回表列的注释，列由所属表的 OID 和列号指定。（<code class=\"function\">obj_description</code>不能用于表列，因为列没有自身的 OID。）</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"> <code class=\"function\">obj_description</code> ( <em class=\"parameter\"><code>object</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>catalog</code></em> <code class=\"type\">name</code> ) → <code class=\"returnvalue\">text</code></p>\n<p lang=\"zh\">根据数据库对象的 OID 和所属系统目录名返回其注释。例如，obj_description(123456, 'pg_class') 返回 OID 为 123456 的表的注释。</p>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><code class=\"function\">obj_description</code> ( <em class=\"parameter\"><code>object</code></em> <code class=\"type\">oid</code> ) → <code class=\"returnvalue\">text</code></p>\n<p>返回仅由其 OID 指定的数据库对象的注释。此形式<span class=\"emphasis\"><em>已弃用</em></span>，因为无法保证 OID 在不同系统目录之间唯一，因而可能返回错误的注释。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.8.4.2.2.4.1.1.1\" name=\"id-1.5.8.33.8.4.2.2.4.1.1.1\"></a> <code class=\"function\">shobj_description</code> ( <em class=\"parameter\"><code>object</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>catalog</code></em> <code class=\"type\">name</code> ) → <code class=\"returnvalue\">text</code></p>\n<p>返回共享数据库对象的注释，对象由其 OID 和所在系统目录的名称指定。此函数与<code class=\"function\">obj_description</code>类似，但用于获取共享对象（即数据库、角色和表空间）的注释。有些系统目录由数据库集簇中的所有数据库全局共享，其中对象的描述也全局存储。</p>\n</td>\n</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n</div>\n<div class=\"sect2\" id=\"FUNCTIONS-INFO-VALIDITY\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-VALIDITY\">9.27.7. 数据有效性检查函数</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-VALIDITY-TABLE\" title=\"表 9.83. 数据有效性检查函数\">表 9.83</a>中所示的函数有助于检查待输入数据的有效性。</p>\n<div class=\"table\" id=\"FUNCTIONS-INFO-VALIDITY-TABLE\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.83. 数据有效性检查函数</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th class=\"func_table_entry\" lang=\"zh\">\n<tr>\n<th class=\"func_table_entry\">\n<p class=\"func_signature\">函数</p>\n<p>描述</p>\n<p>示例</p>\n</th>\n</tr>\n</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.9.3.2.2.1.1.1.1\" name=\"id-1.5.8.33.9.3.2.2.1.1.1.1\"></a> <code class=\"function\">pg_input_is_valid</code> ( <em class=\"parameter\"><code>string</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>type</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>测试给定的<em class=\"parameter\"><code>string</code></em>是否是指定数据类型的有效输入，返回 true 或 false。</p>\n<p>只有当该数据类型的输入函数已经更新为把无效输入报告为一种<span class=\"quote\">“<span class=\"quote\">软</span>”</span>错误时，此函数才能按预期工作。否则，无效输入将中止事务，就像直接将该字符串转换为该类型一样。</p>\n<p><code class=\"literal\">pg_input_is_valid('42', 'integer')</code> → <code class=\"returnvalue\">t</code></p>\n<p><code class=\"literal\">pg_input_is_valid('42000000000', 'integer')</code> → <code class=\"returnvalue\">f</code></p>\n<p><code class=\"literal\">pg_input_is_valid('1234.567', 'numeric(7,4)')</code> → <code class=\"returnvalue\">f</code></p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.9.3.2.2.2.1.1.1\" name=\"id-1.5.8.33.9.3.2.2.2.1.1.1\"></a> <code class=\"function\">pg_input_error_info</code> ( <em class=\"parameter\"><code>string</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>type</code></em> <code class=\"type\">text</code> ) → <code class=\"returnvalue\">record</code> ( <em class=\"parameter\"><code>message</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>detail</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>hint</code></em> <code class=\"type\">text</code>, <em class=\"parameter\"><code>sql_error_code</code></em> <code class=\"type\">text</code> )</p>\n<p>测试给定的<em class=\"parameter\"><code>string</code></em>是否是指定数据类型的有效输入；如果不是，则返回本应抛出的错误详情。如果输入有效，则结果为 NULL。输入参数与<code class=\"function\">pg_input_is_valid</code> 相同。</p>\n<p>只有当该数据类型的输入函数已经更新为把无效输入报告为一种<span class=\"quote\">“<span class=\"quote\">软</span>”</span>错误时，此函数才能按预期工作。否则，无效输入将中止事务，就像直接将该字符串转换为该类型一样。</p>\n<p><code class=\"literal\">SELECT * FROM pg_input_error_info('42000000000', 'integer')</code> →</p>\n<pre class=\"programlisting\">\n                       message                        | detail | hint | sql_error_code\n------------------------------------------------------+--------+------+----------------\n value \"42000000000\" is out of range for type integer |        |      | 22003\n</pre>\n</td>\n</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n</div>\n<div class=\"sect2\" id=\"FUNCTIONS-INFO-SNAPSHOT\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-SNAPSHOT\">9.27.8. 事务 ID 和快照信息函数</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-PG-SNAPSHOT\" title=\"表 9.84. 事务 ID 和快照信息函数\">表 9.84</a>中展示的函数以一种可导出的形式提供了服务器事务信息。这些函数的主要用途是判断在两个快照之间哪些事务被提交。</p>\n<div class=\"table\" id=\"FUNCTIONS-PG-SNAPSHOT\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.84. 事务 ID 和快照信息函数</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th class=\"func_table_entry\" lang=\"zh\">\n<tr>\n<th class=\"func_table_entry\">\n<p class=\"func_signature\">函数</p>\n<p>描述</p>\n</th>\n</tr>\n</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.3.2.2.1.1.1.1\" name=\"id-1.5.8.33.10.3.2.2.1.1.1.1\"></a> <code class=\"function\">age</code> ( <code class=\"type\">xid</code> ) → <code class=\"returnvalue\">integer</code></p>\n<p>返回给定事务 ID 与当前事务计数器之间的事务数。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.3.2.2.2.1.1.1\" name=\"id-1.5.8.33.10.3.2.2.2.1.1.1\"></a> <code class=\"function\">mxid_age</code> ( <code class=\"type\">xid</code> ) → <code class=\"returnvalue\">integer</code></p>\n<p>返回给定多事务 ID 与当前多事务计数器之间的多事务 ID 数。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.3.2.2.3.1.1.1\" name=\"id-1.5.8.33.10.3.2.2.3.1.1.1\"></a> <code class=\"function\">pg_current_xact_id</code> () → <code class=\"returnvalue\">xid8</code></p>\n<p>返回当前事务的ID。如果当前事务还没有一个ID（因为它还没有执行任何数据库更新），它将分配一个新的事务 ID；详见<a class=\"xref\" href=\"/docs/18/transaction-id.html\" title=\"67.1. 事务与标识符\">第 67.1 节</a>。如果在子事务中执行，它将返回顶层事务的ID；详见<a class=\"xref\" href=\"/docs/18/subxacts.html\" title=\"67.3. 子事务\">第 67.3 节</a>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.3.2.2.4.1.1.1\" name=\"id-1.5.8.33.10.3.2.2.4.1.1.1\"></a> <code class=\"function\">pg_current_xact_id_if_assigned</code> () → <code class=\"returnvalue\">xid8</code></p>\n<p>返回当前事务的 ID；如果尚未分配 ID，则返回<code class=\"literal\">NULL</code>。（如果事务本来可能是只读的，最好使用此变体，以免不必要地消耗 XID。）如果在子事务中执行，则返回顶层事务 ID。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.3.2.2.5.1.1.1\" name=\"id-1.5.8.33.10.3.2.2.5.1.1.1\"></a> <code class=\"function\">pg_xact_status</code> ( <code class=\"type\">xid8</code> ) → <code class=\"returnvalue\">text</code></p>\n<p>报告近期事务的提交状态。只要事务足够新，系统仍保留其提交状态，结果就为<code class=\"literal\">in progress</code>、<code class=\"literal\">committed</code>或<code class=\"literal\">aborted</code>。如果事务已足够旧，系统中不再有对它的引用，且提交状态信息已被丢弃，则返回<code class=\"literal\">NULL</code>。例如，在<code class=\"literal\">COMMIT</code>进行过程中应用与数据库服务器断开连接时，应用可以用此函数判断事务是提交了还是中止了。注意，预备事务被报告为<code class=\"literal\">in progress</code>；如果需要确定某个事务 ID 是否为预备事务，应用必须检查<a class=\"link\" href=\"/docs/18/view-pg-prepared-xacts.html\" title=\"53.17. pg_prepared_xacts\"><code class=\"structname\">pg_prepared_xacts</code></a>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.3.2.2.6.1.1.1\" name=\"id-1.5.8.33.10.3.2.2.6.1.1.1\"></a> <code class=\"function\">pg_current_snapshot</code> () → <code class=\"returnvalue\">pg_snapshot</code></p>\n<p>返回当前<em class=\"firstterm\">快照</em>，即显示哪些事务 ID 正在进行中的数据结构。快照中只包含顶层事务 ID，不显示子事务 ID；详见<a class=\"xref\" href=\"/docs/18/subxacts.html\" title=\"67.3. 子事务\">第 67.3 节</a>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.3.2.2.7.1.1.1\" name=\"id-1.5.8.33.10.3.2.2.7.1.1.1\"></a> <code class=\"function\">pg_snapshot_xip</code> ( <code class=\"type\">pg_snapshot</code> ) → <code class=\"returnvalue\">setof xid8</code></p>\n<p>返回快照中包含的正在进行的事务 ID集。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.3.2.2.8.1.1.1\" name=\"id-1.5.8.33.10.3.2.2.8.1.1.1\"></a> <code class=\"function\">pg_snapshot_xmax</code> ( <code class=\"type\">pg_snapshot</code> ) → <code class=\"returnvalue\">xid8</code></p>\n<p>返回快照的<code class=\"structfield\">xmax</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.3.2.2.9.1.1.1\" name=\"id-1.5.8.33.10.3.2.2.9.1.1.1\"></a> <code class=\"function\">pg_snapshot_xmin</code> ( <code class=\"type\">pg_snapshot</code> ) → <code class=\"returnvalue\">xid8</code></p>\n<p>返回快照的<code class=\"structfield\">xmin</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.3.2.2.10.1.1.1\" name=\"id-1.5.8.33.10.3.2.2.10.1.1.1\"></a> <code class=\"function\">pg_visible_in_snapshot</code> ( <code class=\"type\">xid8</code>, <code class=\"type\">pg_snapshot</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>根据此快照，给定的事务 ID 是否<em class=\"firstterm\">可见</em>（即该事务是否在生成快照之前完成）？注意，此函数无法为子事务 ID（subxid）给出正确结果；详见<a class=\"xref\" href=\"/docs/18/subxacts.html\" title=\"67.3. 子事务\">第 67.3 节</a>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.3.2.2.11.1.1.1\" name=\"id-1.5.8.33.10.3.2.2.11.1.1.1\"></a> <code class=\"function\">pg_get_multixact_members</code> ( <em class=\"parameter\"><code>multixid</code></em> <code class=\"type\">xid</code> ) → <code class=\"returnvalue\">setof record</code> ( <em class=\"parameter\"><code>xid</code></em> <code class=\"type\">xid</code>, <em class=\"parameter\"><code>mode</code></em> <code class=\"type\">text</code> )</p>\n<p>返回指定多事务 ID 中每个成员的事务 ID 和锁模式。锁模式 <code class=\"literal\">forupd</code>、<code class=\"literal\">fornokeyupd</code>、<code class=\"literal\">sh</code> 和 <code class=\"literal\">keysh</code> 分别对应于<a class=\"xref\" href=\"/docs/18/explicit-locking.html#LOCKING-ROWS\" title=\"13.3.2. 行级锁\">第 13.3.2 节</a>中描述的行级锁 <code class=\"literal\">FOR UPDATE</code>、<code class=\"literal\">FOR NO KEY UPDATE</code>、<code class=\"literal\">FOR SHARE</code> 和 <code class=\"literal\">FOR KEY SHARE</code>。另有两种多事务特有的模式：<code class=\"literal\">nokeyupd</code> 用于不修改键列的更新，<code class=\"literal\">upd</code> 用于修改键列的更新或删除。</p>\n</td>\n</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<p lang=\"zh\">内部事务 ID 类型 xid 为 32 位，每 40 亿次事务回卷一次。但表 9.84 中的函数，除 age、mxid_age 和 pg_get_multixact_members 外，都使用 64 位的 xid8；它在数据库安装的生命周期内不会回卷，必要时可通过强制转换得到 xid，详见第 67.1 节。pg_snapshot 存储某一时刻的事务 ID 可见性信息，组成部分见表 9.85。其文本形式为 xmin:xmax:xip_list。例如，10:20:10,14,15 表示 xmin=10、xmax=20、xip_list=10, 14, 15。</p>\n<div class=\"table\" id=\"FUNCTIONS-PG-SNAPSHOT-PARTS\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.85. 快照组件</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th>Name</th>\n<th lang=\"zh\">说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"structfield\">xmin</code></td>\n<td lang=\"zh\">仍然处于活动状态的最小事务 ID。所有小于<code class=\"structfield\">xmin</code>的事务 ID 要么已经提交且可见，要么已经回滚而失效。</td>\n</tr>\n<tr>\n<td><code class=\"structfield\">xmax</code></td>\n<td lang=\"zh\">已完成事务中的最大事务 ID 加一。所有大于或等于<code class=\"structfield\">xmax</code>的事务 ID 在生成快照时尚未完成，因此不可见。</td>\n</tr>\n<tr>\n<td><code class=\"structfield\">xip_list</code></td>\n<td lang=\"zh\">生成快照时正在进行的事务。满足<code class=\"literal\">xmin &lt;= <em class=\"replaceable\"><code>X</code></em> &lt; xmax</code>且不在此列表中的事务 ID 在生成快照时已经完成，因此根据其提交状态，要么可见，要么失效。此列表不包含子事务的事务 ID（subxid）。</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<p lang=\"zh\">PostgreSQL 13 之前没有 xid8 类型，因此提供了这些函数的变体，使用 bigint 表示 64 位 XID，并相应使用独立的快照数据类型 txid_snapshot。这些旧函数的名称中包含 txid。为保持向后兼容，它们仍受支持，但可能在未来版本中删除。参见表 9.86。</p>\n<div class=\"table\" id=\"FUNCTIONS-TXID-SNAPSHOT\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.86. 已弃用的事务 ID 和快照信息函数</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th class=\"func_table_entry\" lang=\"zh\">\n<tr>\n<th class=\"func_table_entry\">\n<p class=\"func_signature\">函数</p>\n<p>描述</p>\n</th>\n</tr>\n</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.7.2.2.1.1.1.1\" name=\"id-1.5.8.33.10.7.2.2.1.1.1.1\"></a> <code class=\"function\">txid_current</code> () → <code class=\"returnvalue\">bigint</code></p>\n<p>参见 <code class=\"function\">pg_current_xact_id()</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.7.2.2.2.1.1.1\" name=\"id-1.5.8.33.10.7.2.2.2.1.1.1\"></a> <code class=\"function\">txid_current_if_assigned</code> () → <code class=\"returnvalue\">bigint</code></p>\n<p>参见 <code class=\"function\">pg_current_xact_id_if_assigned()</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.7.2.2.3.1.1.1\" name=\"id-1.5.8.33.10.7.2.2.3.1.1.1\"></a> <code class=\"function\">txid_current_snapshot</code> () → <code class=\"returnvalue\">txid_snapshot</code></p>\n<p>参见 <code class=\"function\">pg_current_snapshot()</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.7.2.2.4.1.1.1\" name=\"id-1.5.8.33.10.7.2.2.4.1.1.1\"></a> <code class=\"function\">txid_snapshot_xip</code> ( <code class=\"type\">txid_snapshot</code> ) → <code class=\"returnvalue\">setof bigint</code></p>\n<p>参见 <code class=\"function\">pg_snapshot_xip()</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.7.2.2.5.1.1.1\" name=\"id-1.5.8.33.10.7.2.2.5.1.1.1\"></a> <code class=\"function\">txid_snapshot_xmax</code> ( <code class=\"type\">txid_snapshot</code> ) → <code class=\"returnvalue\">bigint</code></p>\n<p>参见 <code class=\"function\">pg_snapshot_xmax()</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.7.2.2.6.1.1.1\" name=\"id-1.5.8.33.10.7.2.2.6.1.1.1\"></a> <code class=\"function\">txid_snapshot_xmin</code> ( <code class=\"type\">txid_snapshot</code> ) → <code class=\"returnvalue\">bigint</code></p>\n<p>参见 <code class=\"function\">pg_snapshot_xmin()</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.7.2.2.7.1.1.1\" name=\"id-1.5.8.33.10.7.2.2.7.1.1.1\"></a> <code class=\"function\">txid_visible_in_snapshot</code> ( <code class=\"type\">bigint</code>, <code class=\"type\">txid_snapshot</code> ) → <code class=\"returnvalue\">boolean</code></p>\n<p>参见 <code class=\"function\">pg_visible_in_snapshot()</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.10.7.2.2.8.1.1.1\" name=\"id-1.5.8.33.10.7.2.2.8.1.1.1\"></a> <code class=\"function\">txid_status</code> ( <code class=\"type\">bigint</code> ) → <code class=\"returnvalue\">text</code></p>\n<p>参见 <code class=\"function\">pg_xact_status()</code>。</p>\n</td>\n</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n</div>\n<div class=\"sect2\" id=\"FUNCTIONS-INFO-COMMIT-TIMESTAMP\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-COMMIT-TIMESTAMP\">9.27.9. 已提交事务信息函数</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-COMMIT-TIMESTAMP\" title=\"表 9.87. 已提交事务信息函数\">表 9.87</a>中的函数提供过去事务的提交时间信息。只有启用<a class=\"xref\" href=\"/docs/18/runtime-config-replication.html#GUC-TRACK-COMMIT-TIMESTAMP\">track_commit_timestamp</a>配置选项后，这些函数才会提供有用的数据，并且只针对启用该选项之后提交的事务。提交时间戳信息会在清理过程中定期移除。</p>\n<div class=\"table\" id=\"FUNCTIONS-COMMIT-TIMESTAMP\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.87. 已提交事务信息函数</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th class=\"func_table_entry\" lang=\"zh\">\n<tr>\n<th class=\"func_table_entry\">\n<p class=\"func_signature\">函数</p>\n<p>描述</p>\n</th>\n</tr>\n</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.11.3.2.2.1.1.1.1\" name=\"id-1.5.8.33.11.3.2.2.1.1.1.1\"></a> <code class=\"function\">pg_xact_commit_timestamp</code> ( <code class=\"type\">xid</code> ) → <code class=\"returnvalue\">timestamp with time zone</code></p>\n<p>返回事务的提交时间戳。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.11.3.2.2.2.1.1.1\" name=\"id-1.5.8.33.11.3.2.2.2.1.1.1\"></a> <code class=\"function\">pg_xact_commit_timestamp_origin</code> ( <code class=\"type\">xid</code> ) → <code class=\"returnvalue\">record</code> ( <em class=\"parameter\"><code>timestamp</code></em> <code class=\"type\">timestamp with time zone</code>, <em class=\"parameter\"><code>roident</code></em> <code class=\"type\">oid</code>)</p>\n<p>返回事务的提交时间戳和复制源。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.11.3.2.2.3.1.1.1\" name=\"id-1.5.8.33.11.3.2.2.3.1.1.1\"></a> <code class=\"function\">pg_last_committed_xact</code> () → <code class=\"returnvalue\">record</code> ( <em class=\"parameter\"><code>xid</code></em> <code class=\"type\">xid</code>, <em class=\"parameter\"><code>timestamp</code></em> <code class=\"type\">timestamp with time zone</code>, <em class=\"parameter\"><code>roident</code></em> <code class=\"type\">oid</code> )</p>\n<p>返回最近提交事务的事务 ID、提交时间戳和复制源。</p>\n</td>\n</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n</div>\n<div class=\"sect2\" id=\"FUNCTIONS-INFO-CONTROLDATA\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-CONTROLDATA\">9.27.10. 控制数据函数</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-CONTROLDATA\" title=\"表 9.88. 控制数据函数\">表 9.88</a>中的函数显示在<code class=\"command\">initdb</code>期间初始化的信息，例如系统目录版本。它们也显示有关预写式日志和检查点处理的信息。这些信息适用于整个数据库集簇，而非某个特定数据库。这些函数与<a class=\"xref\" href=\"/docs/18/app-pgcontroldata.html\" title=\"pg_controldata\"><span class=\"refentrytitle\"><span class=\"application\">pg_controldata</span></span></a>应用程序从相同来源提供大部分相同的信息。</p>\n<div class=\"table\" id=\"FUNCTIONS-CONTROLDATA\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.88. 控制数据函数</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th class=\"func_table_entry\" lang=\"zh\">\n<tr>\n<th class=\"func_table_entry\">\n<p class=\"func_signature\">函数</p>\n<p>描述</p>\n</th>\n</tr>\n</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.12.3.2.2.1.1.1.1\" name=\"id-1.5.8.33.12.3.2.2.1.1.1.1\"></a> <code class=\"function\">pg_control_checkpoint</code> () → <code class=\"returnvalue\">record</code></p>\n<p>返回有关当前检查点状态的信息，如<a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-PG-CONTROL-CHECKPOINT\" title=\"表 9.89. pg_control_checkpoint 输出列\">表 9.89</a>所展示。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.12.3.2.2.2.1.1.1\" name=\"id-1.5.8.33.12.3.2.2.2.1.1.1\"></a> <code class=\"function\">pg_control_system</code> () → <code class=\"returnvalue\">record</code></p>\n<p>返回有关当前控制文件状态的信息，如<a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-PG-CONTROL-SYSTEM\" title=\"表 9.90. pg_control_system 输出列\">表 9.90</a>所展示。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.12.3.2.2.3.1.1.1\" name=\"id-1.5.8.33.12.3.2.2.3.1.1.1\"></a> <code class=\"function\">pg_control_init</code> () → <code class=\"returnvalue\">record</code></p>\n<p>返回有关集簇初始化状态的信息，如<a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-PG-CONTROL-INIT\" title=\"表 9.91. pg_control_init 输出列\">表 9.91</a>所展示。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.12.3.2.2.4.1.1.1\" name=\"id-1.5.8.33.12.3.2.2.4.1.1.1\"></a> <code class=\"function\">pg_control_recovery</code> () → <code class=\"returnvalue\">record</code></p>\n<p>返回有关恢复状态的信息，如<a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-PG-CONTROL-RECOVERY\" title=\"表 9.92. pg_control_recovery 输出列\">表 9.92</a>所展示。</p>\n</td>\n</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<div class=\"table\" id=\"FUNCTIONS-PG-CONTROL-CHECKPOINT\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.89. <code class=\"function\">pg_control_checkpoint</code> 输出列</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th lang=\"zh\">列名称</th>\n<th lang=\"zh\">数据类型</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"structfield\">checkpoint_lsn</code></td>\n<td><code class=\"type\">pg_lsn</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">redo_lsn</code></td>\n<td><code class=\"type\">pg_lsn</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">redo_wal_file</code></td>\n<td lang=\"zh\">文本</td>\n</tr>\n<tr>\n<td><code class=\"structfield\">timeline_id</code></td>\n<td><code class=\"type\">integer</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">prev_timeline_id</code></td>\n<td><code class=\"type\">integer</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">full_page_writes</code></td>\n<td><code class=\"type\">boolean</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">next_xid</code></td>\n<td lang=\"zh\">文本</td>\n</tr>\n<tr>\n<td><code class=\"structfield\">next_oid</code></td>\n<td><code class=\"type\">oid</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">next_multixact_id</code></td>\n<td><code class=\"type\">xid</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">next_multi_offset</code></td>\n<td><code class=\"type\">xid</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">oldest_xid</code></td>\n<td><code class=\"type\">xid</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">oldest_xid_dbid</code></td>\n<td><code class=\"type\">oid</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">oldest_active_xid</code></td>\n<td><code class=\"type\">xid</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">oldest_multi_xid</code></td>\n<td><code class=\"type\">xid</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">oldest_multi_dbid</code></td>\n<td><code class=\"type\">oid</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">oldest_commit_ts_xid</code></td>\n<td><code class=\"type\">xid</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">newest_commit_ts_xid</code></td>\n<td><code class=\"type\">xid</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">checkpoint_time</code></td>\n<td><code class=\"type\">timestamp with time zone</code></td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<div class=\"table\" id=\"FUNCTIONS-PG-CONTROL-SYSTEM\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.90. <code class=\"function\">pg_control_system</code> 输出列</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th lang=\"zh\">列名称</th>\n<th lang=\"zh\">数据类型</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"structfield\">pg_control_version</code></td>\n<td><code class=\"type\">integer</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">catalog_version_no</code></td>\n<td><code class=\"type\">integer</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">system_identifier</code></td>\n<td><code class=\"type\">bigint</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">pg_control_last_modified</code></td>\n<td><code class=\"type\">timestamp with time zone</code></td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<div class=\"table\" id=\"FUNCTIONS-PG-CONTROL-INIT\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.91. <code class=\"function\">pg_control_init</code> 输出列</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th lang=\"zh\">列名称</th>\n<th lang=\"zh\">数据类型</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"structfield\">max_data_alignment</code></td>\n<td><code class=\"type\">integer</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">database_block_size</code></td>\n<td><code class=\"type\">integer</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">blocks_per_segment</code></td>\n<td><code class=\"type\">integer</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">wal_block_size</code></td>\n<td><code class=\"type\">integer</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">bytes_per_wal_segment</code></td>\n<td><code class=\"type\">integer</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">max_identifier_length</code></td>\n<td><code class=\"type\">integer</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">max_index_columns</code></td>\n<td><code class=\"type\">integer</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">max_toast_chunk_size</code></td>\n<td><code class=\"type\">integer</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">large_object_chunk_size</code></td>\n<td><code class=\"type\">integer</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">float8_pass_by_value</code></td>\n<td><code class=\"type\">boolean</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">data_page_checksum_version</code></td>\n<td><code class=\"type\">integer</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">default_char_signedness</code></td>\n<td><code class=\"type\">boolean</code></td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<div class=\"table\" id=\"FUNCTIONS-PG-CONTROL-RECOVERY\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.92. <code class=\"function\">pg_control_recovery</code> 输出列</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th lang=\"zh\">列名称</th>\n<th lang=\"zh\">数据类型</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"structfield\">min_recovery_end_lsn</code></td>\n<td><code class=\"type\">pg_lsn</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">min_recovery_end_timeline</code></td>\n<td><code class=\"type\">integer</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">backup_start_lsn</code></td>\n<td><code class=\"type\">pg_lsn</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">backup_end_lsn</code></td>\n<td><code class=\"type\">pg_lsn</code></td>\n</tr>\n<tr>\n<td><code class=\"structfield\">end_of_backup_record_required</code></td>\n<td><code class=\"type\">boolean</code></td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n</div>\n<div class=\"sect2\" id=\"FUNCTIONS-INFO-VERSION\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-VERSION\">9.27.11. 版本信息函数</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-VERSION\" title=\"表 9.93. 版本信息函数\">表 9.93</a>中所示的函数打印版本信息。</p>\n<div class=\"table\" id=\"FUNCTIONS-VERSION\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.93. 版本信息函数</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th class=\"func_table_entry\" lang=\"zh\">\n<tr>\n<th class=\"func_table_entry\">\n<p class=\"func_signature\">函数</p>\n<p>描述</p>\n</th>\n</tr>\n</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.13.3.2.2.1.1.1.1\" name=\"id-1.5.8.33.13.3.2.2.1.1.1.1\"></a> <code class=\"function\">version</code> () → <code class=\"returnvalue\">text</code></p>\n<p>返回描述<span class=\"productname\">PostgreSQL</span> 服务器版本的字符串。你还可以从<a class=\"xref\" href=\"/docs/18/runtime-config-preset.html#GUC-SERVER-VERSION\">server_version</a>获得此信息，或者对于机器可读的版本，使用<a class=\"xref\" href=\"/docs/18/runtime-config-preset.html#GUC-SERVER-VERSION-NUM\">server_version_num</a>。软件开发人员应该使用<code class=\"varname\">server_version_num</code>（自 8.2 起可用）或<a class=\"xref\" href=\"/docs/18/libpq-status.html#LIBPQ-PQSERVERVERSION\"><code class=\"function\">PQserverVersion</code></a>，而不是解析文本版本。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.13.3.2.2.2.1.1.1\" name=\"id-1.5.8.33.13.3.2.2.2.1.1.1\"></a> <code class=\"function\">unicode_version</code> () → <code class=\"returnvalue\">text</code></p>\n<p>返回一个表示<span class=\"productname\">PostgreSQL</span>所使用的 Unicode 版本的字符串。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.13.3.2.2.3.1.1.1\" name=\"id-1.5.8.33.13.3.2.2.3.1.1.1\"></a> <code class=\"function\">icu_unicode_version</code> () → <code class=\"returnvalue\">text</code></p>\n<p>如果服务器在构建时启用了 ICU 支持，则返回一个表示 ICU 所使用的 Unicode 版本的字符串；否则返回 <code class=\"literal\">NULL</code>。</p>\n</td>\n</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n</div>\n<div class=\"sect2\" id=\"FUNCTIONS-INFO-WAL-SUMMARY\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-WAL-SUMMARY\">9.27.12. WAL 汇总信息函数</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-WAL-SUMMARY\" title=\"表 9.94. WAL 汇总信息函数\">表 9.94</a>中所示的函数打印有关 WAL 汇总状态的信息。参见<a class=\"xref\" href=\"/docs/18/runtime-config-wal.html#GUC-SUMMARIZE-WAL\">summarize_wal</a>。</p>\n<div class=\"table\" id=\"FUNCTIONS-WAL-SUMMARY\">\n<p class=\"title\" lang=\"zh\"><strong>表 9.94. WAL 汇总信息函数</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th class=\"func_table_entry\" lang=\"zh\">\n<tr>\n<th class=\"func_table_entry\">\n<p class=\"func_signature\">函数</p>\n<p>描述</p>\n</th>\n</tr>\n</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.14.3.2.2.1.1.1.1\" name=\"id-1.5.8.33.14.3.2.2.1.1.1.1\"></a> <code class=\"function\">pg_available_wal_summaries</code> () → <code class=\"returnvalue\">setof record</code> ( <em class=\"parameter\"><code>tli</code></em> <code class=\"type\">bigint</code>, <em class=\"parameter\"><code>start_lsn</code></em> <code class=\"type\">pg_lsn</code>, <em class=\"parameter\"><code>end_lsn</code></em> <code class=\"type\">pg_lsn</code> )</p>\n<p>返回数据目录中 <code class=\"literal\">pg_wal/summaries</code>下现有 WAL 汇总文件的信息。每个 WAL 汇总文件返回一行。每个文件都汇总了指定 TLI 上、指定 LSN 范围内的 WAL。该函数可用于判断服务器上是否存在足够的 WAL 汇总，从而基于某个已知起始 LSN 的先前备份执行增量备份。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.14.3.2.2.2.1.1.1\" name=\"id-1.5.8.33.14.3.2.2.2.1.1.1\"></a> <code class=\"function\">pg_wal_summary_contents</code> ( <em class=\"parameter\"><code>tli</code></em> <code class=\"type\">bigint</code>, <em class=\"parameter\"><code>start_lsn</code></em> <code class=\"type\">pg_lsn</code>, <em class=\"parameter\"><code>end_lsn</code></em> <code class=\"type\">pg_lsn</code> ) → <code class=\"returnvalue\">setof record</code> ( <em class=\"parameter\"><code>relfilenode</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>reltablespace</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>reldatabase</code></em> <code class=\"type\">oid</code>, <em class=\"parameter\"><code>relforknumber</code></em> <code class=\"type\">smallint</code>, <em class=\"parameter\"><code>relblocknumber</code></em> <code class=\"type\">bigint</code>, <em class=\"parameter\"><code>is_limit_block</code></em> <code class=\"type\">boolean</code> )</p>\n<p>返回由 TLI 以及起始和结束 LSN 标识的单个 WAL 汇总文件内容的信息。每一行中，如果<code class=\"literal\">is_limit_block</code>为 false，则表示其余输出列所标识的块在该文件所汇总的 WAL 记录范围内被至少一条 WAL 记录修改过。每一行中，如果<code class=\"literal\">is_limit_block</code> 为 true，则表示以下两种情况之一：(a) 该关系分支在相关 WAL 记录范围内被截断到<code class=\"literal\">relblocknumber</code>给出的长度；或者 (b) 该关系分支在相关 WAL 记录范围内被创建或删除；在创建或删除的情况下，<code class=\"literal\">relblocknumber</code>将为零。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"func_table_entry\" lang=\"zh\">\n<td class=\"func_table_entry\">\n<p class=\"func_signature\"><a class=\"indexterm\" id=\"id-1.5.8.33.14.3.2.2.3.1.1.1\" name=\"id-1.5.8.33.14.3.2.2.3.1.1.1\"></a> <code class=\"function\">pg_get_wal_summarizer_state</code> () → <code class=\"returnvalue\">record</code> ( <em class=\"parameter\"><code>summarized_tli</code></em> <code class=\"type\">bigint</code>, <em class=\"parameter\"><code>summarized_lsn</code></em> <code class=\"type\">pg_lsn</code>, <em class=\"parameter\"><code>pending_lsn</code></em> <code class=\"type\">pg_lsn</code>, <em class=\"parameter\"><code>summarizer_pid</code></em> <code class=\"type\">int</code> )</p>\n<p>返回有关 WAL 汇总器进度的信息。如果自实例启动以来 WAL 汇总器从未运行过，则 <code class=\"literal\">summarized_tli</code>和<code class=\"literal\">summarized_lsn</code> 将分别为<code class=\"literal\">0</code>和<code class=\"literal\">0/0</code>；否则，它们将是最近写入磁盘的 WAL 汇总文件的 TLI 和结束 LSN。如果 WAL 汇总器当前正在运行，<code class=\"literal\">pending_lsn</code>将是它已消费的最后一条记录的结束 LSN，该值必定始终大于或等于<code class=\"literal\">summarized_lsn</code>；如果 WAL 汇总器未在运行，则它将等于<code class=\"literal\">summarized_lsn</code>。<code class=\"literal\">summarizer_pid</code>是 WAL 汇总器进程的 PID；如果它正在运行则返回该 PID，否则为 NULL。</p>\n<p>作为一个特殊例外，如果在 <code class=\"literal\">wal_level=minimal</code>下生成的 WAL 上运行，WAL 汇总器将拒绝生成 WAL 汇总文件，因为这种汇总用作增量备份的基础是不安全的。在这种情况下，上述字段仍会像正在生成汇总一样继续推进，但不会有任何内容写入磁盘。一旦汇总器处理到在<code class=\"literal\">wal_level</code>被设置为<code class=\"literal\">replica</code>或更高时生成的 WAL，它就会恢复将汇总写入磁盘。</p>\n</td>\n</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n</div>\n</div>", "manual_path": "functions-info.html", "localization": {"status": "complete", "sources": [{"url": "/docs/18/functions-info.html", "method": "same-major semantic node", "sha256": "f01e01592b9628eda44eed894a65508faf00b18677b9a18879cec12a2eb7a02f", "language": "zh", "matched_nodes": ["#FUNCTIONS-INFO/div[0]", "#FUNCTIONS-INFO/div[10]/div[2]/div[1]/table[0]/tbody[2]/tr[0]", "#FUNCTIONS-INFO/div[10]/div[2]/div[1]/table[0]/tbody[2]/tr[10]", "#FUNCTIONS-INFO/div[10]/div[2]/div[1]/table[0]/tbody[2]/tr[1]", "#FUNCTIONS-INFO/div[10]/div[2]/div[1]/table[0]/tbody[2]/tr[2]", "#FUNCTIONS-INFO/div[10]/div[2]/div[1]/table[0]/tbody[2]/tr[3]", "#FUNCTIONS-INFO/div[10]/div[2]/div[1]/table[0]/tbody[2]/tr[4]", "#FUNCTIONS-INFO/div[10]/div[2]/div[1]/table[0]/tbody[2]/tr[5]", "#FUNCTIONS-INFO/div[10]/div[2]/div[1]/table[0]/tbody[2]/tr[6]", "#FUNCTIONS-INFO/div[10]/div[2]/div[1]/table[0]/tbody[2]/tr[7]", "#FUNCTIONS-INFO/div[10]/div[2]/div[1]/table[0]/tbody[2]/tr[8]", "#FUNCTIONS-INFO/div[10]/div[2]/div[1]/table[0]/tbody[2]/tr[9]", "#FUNCTIONS-INFO/div[10]/div[2]/p[0]", "#FUNCTIONS-INFO/div[10]/div[5]/div[1]/table[0]/tbody[2]/tr[0]/td[1]", "#FUNCTIONS-INFO/div[10]/div[5]/div[1]/table[0]/tbody[2]/tr[1]/td[1]", "#FUNCTIONS-INFO/div[10]/div[5]/div[1]/table[0]/tbody[2]/tr[2]/td[1]", "#FUNCTIONS-INFO/div[10]/div[5]/p[0]", "#FUNCTIONS-INFO/div[10]/div[8]/div[1]/table[0]/tbody[2]/tr[0]", "#FUNCTIONS-INFO/div[10]/div[8]/div[1]/table[0]/tbody[2]/tr[1]", "#FUNCTIONS-INFO/div[10]/div[8]/div[1]/table[0]/tbody[2]/tr[2]", "#FUNCTIONS-INFO/div[10]/div[8]/div[1]/table[0]/tbody[2]/tr[3]", "#FUNCTIONS-INFO/div[10]/div[8]/div[1]/table[0]/tbody[2]/tr[4]", "#FUNCTIONS-INFO/div[10]/div[8]/div[1]/table[0]/tbody[2]/tr[5]", "#FUNCTIONS-INFO/div[10]/div[8]/div[1]/table[0]/tbody[2]/tr[6]", "#FUNCTIONS-INFO/div[10]/div[8]/div[1]/table[0]/tbody[2]/tr[7]", "#FUNCTIONS-INFO/div[10]/div[8]/p[0]", "#FUNCTIONS-INFO/div[10]/p[1]", "#FUNCTIONS-INFO/div[11]/div[2]/div[1]/table[0]/tbody[2]/tr[0]", "#FUNCTIONS-INFO/div[11]/div[2]/div[1]/table[0]/tbody[2]/tr[1]", "#FUNCTIONS-INFO/div[11]/div[2]/div[1]/table[0]/tbody[2]/tr[2]", "#FUNCTIONS-INFO/div[11]/div[2]/p[0]", "#FUNCTIONS-INFO/div[11]/p[1]", "#FUNCTIONS-INFO/div[12]/div[10]/p[0]", "#FUNCTIONS-INFO/div[12]/div[2]/div[1]/table[0]/tbody[2]/tr[0]", "#FUNCTIONS-INFO/div[12]/div[2]/div[1]/table[0]/tbody[2]/tr[1]", "#FUNCTIONS-INFO/div[12]/div[2]/div[1]/table[0]/tbody[2]/tr[2]", "#FUNCTIONS-INFO/div[12]/div[2]/div[1]/table[0]/tbody[2]/tr[3]", "#FUNCTIONS-INFO/div[12]/div[2]/p[0]", "#FUNCTIONS-INFO/div[12]/div[4]/div[1]/table[0]/thead[1]/tr[0]/th[0]", "#FUNCTIONS-INFO/div[12]/div[4]/div[1]/table[0]/thead[1]/tr[0]/th[1]", "#FUNCTIONS-INFO/div[12]/div[4]/p[0]", "#FUNCTIONS-INFO/div[12]/div[6]/p[0]", "#FUNCTIONS-INFO/div[12]/div[8]/p[0]", "#FUNCTIONS-INFO/div[12]/p[1]", "#FUNCTIONS-INFO/div[13]/div[2]/div[1]/table[0]/tbody[2]/tr[0]", "#FUNCTIONS-INFO/div[13]/div[2]/div[1]/table[0]/tbody[2]/tr[1]", "#FUNCTIONS-INFO/div[13]/div[2]/div[1]/table[0]/tbody[2]/tr[2]", "#FUNCTIONS-INFO/div[13]/div[2]/p[0]", "#FUNCTIONS-INFO/div[13]/p[1]", "#FUNCTIONS-INFO/div[14]/div[2]/div[1]/table[0]/tbody[2]/tr[0]", "#FUNCTIONS-INFO/div[14]/div[2]/div[1]/table[0]/tbody[2]/tr[1]", "#FUNCTIONS-INFO/div[14]/div[2]/div[1]/table[0]/tbody[2]/tr[2]", "#FUNCTIONS-INFO/div[14]/div[2]/p[0]", "#FUNCTIONS-INFO/div[14]/p[1]", "#FUNCTIONS-INFO/div[1]/dl[0]/dt[0]", "#FUNCTIONS-INFO/div[1]/dl[0]/dt[10]", "#FUNCTIONS-INFO/div[1]/dl[0]/dt[11]", "#FUNCTIONS-INFO/div[1]/dl[0]/dt[1]", "#FUNCTIONS-INFO/div[1]/dl[0]/dt[2]", "#FUNCTIONS-INFO/div[1]/dl[0]/dt[3]", "#FUNCTIONS-INFO/div[1]/dl[0]/dt[4]", "#FUNCTIONS-INFO/div[1]/dl[0]/dt[5]", "#FUNCTIONS-INFO/div[1]/dl[0]/dt[6]", "#FUNCTIONS-INFO/div[1]/dl[0]/dt[7]", "#FUNCTIONS-INFO/div[1]/dl[0]/dt[8]", "#FUNCTIONS-INFO/div[1]/dl[0]/dt[9]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[0]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[10]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[11]/td[0]/p[1]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[11]/td[0]/p[3]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[12]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[13]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[15]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[16]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[17]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[18]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[19]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[1]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[20]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[21]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[22]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[23]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[24]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[25]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[26]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[2]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[3]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[4]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[5]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[6]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[7]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[8]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/tbody[2]/tr[9]", "#FUNCTIONS-INFO/div[3]/div[3]/div[1]/table[0]/thead[1]", "#FUNCTIONS-INFO/div[3]/div[3]/p[0]", "#FUNCTIONS-INFO/div[3]/div[5]/h3[0]", "#FUNCTIONS-INFO/div[3]/p[1]", "#FUNCTIONS-INFO/div[3]/p[2]", "#FUNCTIONS-INFO/div[3]/p[6]", "#FUNCTIONS-INFO/div[4]/div[10]/div[1]/table[0]/tbody[2]/tr[0]", "#FUNCTIONS-INFO/div[4]/div[10]/div[1]/table[0]/tbody[2]/tr[1]", "#FUNCTIONS-INFO/div[4]/div[10]/div[1]/table[0]/tbody[2]/tr[2]", "#FUNCTIONS-INFO/div[4]/div[10]/p[0]", "#FUNCTIONS-INFO/div[4]/div[4]/div[1]/table[0]/tbody[2]/tr[0]", "#FUNCTIONS-INFO/div[4]/div[4]/div[1]/table[0]/tbody[2]/tr[10]", "#FUNCTIONS-INFO/div[4]/div[4]/div[1]/table[0]/tbody[2]/tr[11]", "#FUNCTIONS-INFO/div[4]/div[4]/div[1]/table[0]/tbody[2]/tr[12]", "#FUNCTIONS-INFO/div[4]/div[4]/div[1]/table[0]/tbody[2]/tr[13]", "#FUNCTIONS-INFO/div[4]/div[4]/div[1]/table[0]/tbody[2]/tr[14]", "#FUNCTIONS-INFO/div[4]/div[4]/div[1]/table[0]/tbody[2]/tr[15]", "#FUNCTIONS-INFO/div[4]/div[4]/div[1]/table[0]/tbody[2]/tr[1]", "#FUNCTIONS-INFO/div[4]/div[4]/div[1]/table[0]/tbody[2]/tr[2]", "#FUNCTIONS-INFO/div[4]/div[4]/div[1]/table[0]/tbody[2]/tr[3]", "#FUNCTIONS-INFO/div[4]/div[4]/div[1]/table[0]/tbody[2]/tr[4]", "#FUNCTIONS-INFO/div[4]/div[4]/div[1]/table[0]/tbody[2]/tr[5]", "#FUNCTIONS-INFO/div[4]/div[4]/div[1]/table[0]/tbody[2]/tr[6]", "#FUNCTIONS-INFO/div[4]/div[4]/div[1]/table[0]/tbody[2]/tr[7]", "#FUNCTIONS-INFO/div[4]/div[4]/div[1]/table[0]/tbody[2]/tr[8]", "#FUNCTIONS-INFO/div[4]/div[4]/div[1]/table[0]/tbody[2]/tr[9]", "#FUNCTIONS-INFO/div[4]/div[4]/p[0]", "#FUNCTIONS-INFO/div[4]/div[7]/div[1]/table[0]/tbody[2]/tr[0]", "#FUNCTIONS-INFO/div[4]/div[7]/div[1]/table[0]/tbody[2]/tr[1]", "#FUNCTIONS-INFO/div[4]/div[7]/div[1]/table[0]/thead[1]", "#FUNCTIONS-INFO/div[4]/div[7]/p[0]", "#FUNCTIONS-INFO/div[4]/p[2]", "#FUNCTIONS-INFO/div[4]/p[6]", "#FUNCTIONS-INFO/div[4]/p[9]", "#FUNCTIONS-INFO/div[5]/div[5]/div[1]/table[0]/tbody[2]/tr[0]", "#FUNCTIONS-INFO/div[5]/div[5]/div[1]/table[0]/tbody[2]/tr[10]", "#FUNCTIONS-INFO/div[5]/div[5]/div[1]/table[0]/tbody[2]/tr[11]", "#FUNCTIONS-INFO/div[5]/div[5]/div[1]/table[0]/tbody[2]/tr[12]", "#FUNCTIONS-INFO/div[5]/div[5]/div[1]/table[0]/tbody[2]/tr[1]", "#FUNCTIONS-INFO/div[5]/div[5]/div[1]/table[0]/tbody[2]/tr[2]", "#FUNCTIONS-INFO/div[5]/div[5]/div[1]/table[0]/tbody[2]/tr[3]", "#FUNCTIONS-INFO/div[5]/div[5]/div[1]/table[0]/tbody[2]/tr[4]", "#FUNCTIONS-INFO/div[5]/div[5]/div[1]/table[0]/tbody[2]/tr[5]", "#FUNCTIONS-INFO/div[5]/div[5]/div[1]/table[0]/tbody[2]/tr[6]", "#FUNCTIONS-INFO/div[5]/div[5]/div[1]/table[0]/tbody[2]/tr[7]", "#FUNCTIONS-INFO/div[5]/div[5]/div[1]/table[0]/tbody[2]/tr[8]", "#FUNCTIONS-INFO/div[5]/div[5]/div[1]/table[0]/tbody[2]/tr[9]", "#FUNCTIONS-INFO/div[5]/div[5]/p[0]", "#FUNCTIONS-INFO/div[5]/p[1]", "#FUNCTIONS-INFO/div[5]/p[3]", "#FUNCTIONS-INFO/div[5]/p[7]", "#FUNCTIONS-INFO/div[5]/p[9]", "#FUNCTIONS-INFO/div[6]/div[11]/div[1]/table[0]/tbody[2]/tr[0]/td[1]", "#FUNCTIONS-INFO/div[6]/div[11]/div[1]/table[0]/tbody[2]/tr[1]/td[1]", "#FUNCTIONS-INFO/div[6]/div[11]/div[1]/table[0]/tbody[2]/tr[2]/td[1]", "#FUNCTIONS-INFO/div[6]/div[11]/div[1]/table[0]/tbody[2]/tr[3]/td[1]", "#FUNCTIONS-INFO/div[6]/div[11]/div[1]/table[0]/tbody[2]/tr[4]/td[1]", "#FUNCTIONS-INFO/div[6]/div[11]/div[1]/table[0]/tbody[2]/tr[5]/td[1]", "#FUNCTIONS-INFO/div[6]/div[11]/div[1]/table[0]/thead[1]/tr[0]/th[0]", "#FUNCTIONS-INFO/div[6]/div[11]/p[0]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[0]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[10]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[11]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[13]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[15]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[16]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[17]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[18]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[19]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[1]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[20]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[21]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[22]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[23]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[24]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[25]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[26]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[27]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[28]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[29]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[2]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[30]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[31]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[32]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[33]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[34]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[35]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[36]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[37]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[38]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[39]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[3]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[40]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[41]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[4]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[5]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[6]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[7]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[8]", "#FUNCTIONS-INFO/div[6]/div[2]/div[1]/table[0]/tbody[2]/tr[9]", "#FUNCTIONS-INFO/div[6]/div[2]/p[0]", "#FUNCTIONS-INFO/div[6]/div[5]/div[1]/table[0]/tbody[2]/tr[0]/td[1]", "#FUNCTIONS-INFO/div[6]/div[5]/div[1]/table[0]/tbody[2]/tr[1]/td[1]", "#FUNCTIONS-INFO/div[6]/div[5]/div[1]/table[0]/tbody[2]/tr[2]/td[1]", "#FUNCTIONS-INFO/div[6]/div[5]/div[1]/table[0]/tbody[2]/tr[3]/td[1]", "#FUNCTIONS-INFO/div[6]/div[5]/div[1]/table[0]/tbody[2]/tr[4]/td[1]", "#FUNCTIONS-INFO/div[6]/div[5]/div[1]/table[0]/tbody[2]/tr[5]/td[1]", "#FUNCTIONS-INFO/div[6]/div[5]/div[1]/table[0]/tbody[2]/tr[6]/td[1]", "#FUNCTIONS-INFO/div[6]/div[5]/div[1]/table[0]/tbody[2]/tr[7]/td[1]", "#FUNCTIONS-INFO/div[6]/div[5]/div[1]/table[0]/tbody[2]/tr[8]/td[1]", "#FUNCTIONS-INFO/div[6]/div[5]/p[0]", "#FUNCTIONS-INFO/div[6]/div[7]/div[1]/table[0]/tbody[2]/tr[0]/td[1]", "#FUNCTIONS-INFO/div[6]/div[7]/div[1]/table[0]/tbody[2]/tr[1]/td[1]", "#FUNCTIONS-INFO/div[6]/div[7]/div[1]/table[0]/tbody[2]/tr[2]/td[1]", "#FUNCTIONS-INFO/div[6]/div[7]/div[1]/table[0]/tbody[2]/tr[3]/td[1]", "#FUNCTIONS-INFO/div[6]/div[7]/p[0]", "#FUNCTIONS-INFO/div[6]/div[9]/div[1]/table[0]/tbody[2]/tr[0]/td[1]", "#FUNCTIONS-INFO/div[6]/div[9]/div[1]/table[0]/tbody[2]/tr[1]/td[1]", "#FUNCTIONS-INFO/div[6]/div[9]/div[1]/table[0]/tbody[2]/tr[2]/td[1]", "#FUNCTIONS-INFO/div[6]/div[9]/div[1]/table[0]/tbody[2]/tr[3]/td[1]", "#FUNCTIONS-INFO/div[6]/div[9]/p[0]", "#FUNCTIONS-INFO/div[6]/p[1]", "#FUNCTIONS-INFO/div[7]/div[2]/div[1]/table[0]/tbody[2]/tr[0]", "#FUNCTIONS-INFO/div[7]/div[2]/div[1]/table[0]/tbody[2]/tr[1]", "#FUNCTIONS-INFO/div[7]/div[2]/div[1]/table[0]/tbody[2]/tr[2]", "#FUNCTIONS-INFO/div[7]/div[2]/div[1]/table[0]/tbody[2]/tr[3]", "#FUNCTIONS-INFO/div[7]/div[2]/div[1]/table[0]/tbody[2]/tr[4]", "#FUNCTIONS-INFO/div[7]/div[2]/p[0]", "#FUNCTIONS-INFO/div[7]/p[1]", "#FUNCTIONS-INFO/div[7]/p[4]", "#FUNCTIONS-INFO/div[8]/div[3]/div[1]/table[0]/tbody[2]/tr[0]", "#FUNCTIONS-INFO/div[8]/div[3]/div[1]/table[0]/tbody[2]/tr[2]", "#FUNCTIONS-INFO/div[8]/div[3]/div[1]/table[0]/tbody[2]/tr[3]", "#FUNCTIONS-INFO/div[8]/div[3]/p[0]", "#FUNCTIONS-INFO/div[8]/p[2]", "#FUNCTIONS-INFO/div[9]/div[2]/div[1]/table[0]/tbody[2]/tr[0]", "#FUNCTIONS-INFO/div[9]/div[2]/div[1]/table[0]/tbody[2]/tr[1]", "#FUNCTIONS-INFO/div[9]/div[2]/div[1]/table[0]/thead[1]", "#FUNCTIONS-INFO/div[9]/div[2]/p[0]", "#FUNCTIONS-INFO/div[9]/p[1]", "#FUNCTIONS-INFO/p[2]"]}, {"url": "/docs/18/functions-matching.html", "method": "same-major semantic node", "sha256": "704120d783880b39b956c073d1a82ba1f40b35068b4d3b9a195f543b86c3a22a", "language": "zh", "matched_nodes": ["#FUNCTIONS-MATCHING/div[9]/div[51]/p[2]/em[2]"]}, {"url": "/docs/18/protocol-overview.html", "method": "same-major semantic node", "sha256": "3f1aa8bd4dbef58e9a82e8cf4c82829a4df7416cfa83dd61c18e9e25060f22da", "language": "zh", "matched_nodes": ["#PROTOCOL-OVERVIEW/div[9]/p[1]/span[2]/span[0]"]}], "language": "zh", "original_text": {"/versions/18/description/0": "user-level transaction ID snapshot", "/versions/18/facts/0/label": "Catalog name", "/versions/18/facts/1/label": "Type OID", "/versions/18/facts/2/label": "Type kind", "/versions/18/facts/2/value": "Base type", "/versions/18/facts/3/label": "Declared length", "/versions/18/facts/3/value": "Variable length (varlena)", "/versions/18/facts/4/label": "Storage strategy", "/versions/18/facts/4/value": "extended", "/versions/18/facts/5/label": "Input function", "/versions/18/facts/6/label": "Output function", "/versions/18/facts/7/label": "Documented declaration", "/versions/18/facts/7/value": "pg_snapshot_xip ( pg_snapshot ) → setof xid8 Returns the set of in-progress transaction IDs contained in a snapshot.", "/versions/18/facts/8/label": "Documented declaration", "/versions/18/facts/8/value": "pg_snapshot_xmax ( pg_snapshot ) → xid8 Returns the xmax of a snapshot.", "/versions/18/facts/9/label": "Documented declaration", "/versions/18/facts/9/value": "pg_snapshot_xmin ( pg_snapshot ) → xid8 Returns the xmin of a snapshot.", "/versions/18/facts/10/label": "Documented declaration", "/versions/18/facts/10/value": "pg_visible_in_snapshot ( xid8 , pg_snapshot ) → boolean Is the given transaction ID visible according to this snapshot (that is, was it completed before the snapshot was taken)? Note that this function will not give the correct answer for a subtransaction ID (subxid); see Section 67.3 for details.", "/versions/18/related/0/label": "pg_type catalog", "/versions/18/related/1/label": "pg_cast catalog", "/versions/18/related/2/label": "pg_operator catalog", "/versions/18/related/3/label": "pg_opclass catalog", "/versions/18/related/4/label": "Arrays"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "9ef46789a319f5cf428f06281acb9a76703949907b975d2d29d5ad0216979650"}, "comparison_data": {"casts": [], "facts": [{"label": "Catalog name", "value": "pg_catalog.pg_snapshot"}, {"label": "Declared length", "value": "Variable length (varlena)"}, {"label": "Documented declaration", "value": "pg_snapshot_xip ( pg_snapshot ) → setof xid8 Returns the set of in-progress transaction IDs contained in a snapshot."}, {"label": "Documented declaration", "value": "pg_snapshot_xmax ( pg_snapshot ) → xid8 Returns the xmax of a snapshot."}, {"label": "Documented declaration", "value": "pg_snapshot_xmin ( pg_snapshot ) → xid8 Returns the xmin of a snapshot."}, {"label": "Documented declaration", "value": "pg_visible_in_snapshot ( xid8 , pg_snapshot ) → boolean Is the given transaction ID visible according to this snapshot (that is, was it completed before the snapshot was taken)? Note that this function will not give the correct answer for a subtransaction ID (subxid); see Section 67.3 for details."}, {"label": "Input function", "value": "pg_snapshot_in"}, {"label": "Output function", "value": "pg_snapshot_out"}, {"label": "Storage strategy", "value": "extended"}, {"label": "Type OID", "value": "5038"}, {"label": "Type kind", "value": "Base type"}], "ranges": [], "aliases": [], "catalog": {"typacl": "_null_", "typlen": "-1", "typelem": "0", "typname": "pg_snapshot", "typsend": "pg_snapshot_send", "typtype": "b", "typalign": "d", "typarray": "_pg_snapshot", "typbyval": "f", "typdelim": ",", "typinput": "pg_snapshot_in", "typmodin": "-", "typndims": "0", "typrelid": "0", "typmodout": "-", "typoutput": "pg_snapshot_out", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "pg_snapshot_recv", "typstorage": "x", "typbasetype": "0", "typcategory": "U", "typcollation": "0", "typisdefined": "t", "typsubscript": "-", "typdefaultbin": "_null_", "typispreferred": "f", "array_type_name": "_pg_snapshot"}, "operators": [], "operator_classes": []}, "comparison_hash": "3550f03549140a845a7345876bcc91efad9b1a881f10269f2d356bc433ec0bc2", "manual_language": "zh", "operator_classes": [], "manual_documentation": "dedicated family chapter"}, "from": "17", "comparison": {"available": true, "changes": [{"label": "手册中的声明", "before": "pg_snapshot_xip ( pg_snapshot ) → setof xid8 返回快照中包含的正在进行的事务 ID集。; pg_snapshot_xmax ( pg_snapshot ) → xid8 返回快照的 xmax 。; pg_snapshot_xmin ( pg_snapshot ) → xid8 返回快照的 xmin 。; pg_visible_in_snapshot ( xid8 , pg_snapshot ) → boolean 根据此快照，给定的事务 ID 是否 可见 （即该事务是否在生成快照之前完成）？注意，此函数无法为子事务 ID（subxid）给出正确结果；详见 第 66.3 节 。", "after": "pg_snapshot_xip ( pg_snapshot ) → setof xid8 返回快照中包含的正在进行的事务 ID集。; pg_snapshot_xmax ( pg_snapshot ) → xid8 返回快照的 xmax 。; pg_snapshot_xmin ( pg_snapshot ) → xid8 返回快照的 xmin 。; pg_visible_in_snapshot ( xid8 , pg_snapshot ) → boolean 根据此快照，给定的事务 ID 是否 可见 （即该事务是否在生成快照之前完成）？注意，此函数无法为子事务 ID（subxid）给出正确结果；详见 第 67.3 节 。"}], "prose_changed": true}}