{"kind": "type", "slug": "regrole", "name": "regrole", "major": "18", "snapshot": {"casts": [{"castfunc": "0", "castmethod": "b", "castsource": "oid", "casttarget": "regrole", "castcontext": "i"}, {"castfunc": "0", "castmethod": "b", "castsource": "regrole", "casttarget": "oid", "castcontext": "i"}, {"castfunc": "oid", "castmethod": "f", "castsource": "int8", "casttarget": "regrole", "castcontext": "i"}, {"castfunc": "int4(int2)", "castmethod": "f", "castsource": "int2", "casttarget": "regrole", "castcontext": "i"}, {"castfunc": "0", "castmethod": "b", "castsource": "int4", "casttarget": "regrole", "castcontext": "i"}, {"castfunc": "int8(oid)", "castmethod": "f", "castsource": "regrole", "casttarget": "int8", "castcontext": "a"}, {"castfunc": "0", "castmethod": "b", "castsource": "regrole", "casttarget": "int4", "castcontext": "a"}], "facts": [{"label": "目录名称", "value": "pg_catalog.regrole"}, {"label": "类型 OID", "value": "4096"}, {"label": "类型种类", "value": "基础类型"}, {"label": "声明长度", "value": "4 字节"}, {"label": "存储策略", "value": "plain"}, {"label": "输入函数", "value": "regrolein"}, {"label": "输出函数", "value": "regroleout"}, {"label": "手册中的声明", "value": "regrole"}, {"label": "参考资料", "value": "pg_authid"}, {"label": "手册说明", "value": "角色名"}, {"label": "示例值", "value": "smithee"}], "ranges": [], "aliases": [], "catalog": {"oid": "4096", "descr": "registered role", "typacl": "_null_", "typlen": "4", "typelem": "0", "typname": "regrole", "typsend": "regrolesend", "typtype": "b", "typalign": "i", "typarray": "0", "typbyval": "t", "typdelim": "','", "typinput": "regrolein", "typmodin": "-", "typndims": "0", "typowner": "POSTGRES", "typrelid": "0", "typmodout": "-", "typoutput": "regroleout", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "regrolerecv", "typstorage": "p", "typbasetype": "0", "typcategory": "N", "typcollation": "0", "typisdefined": "t", "typnamespace": "pg_catalog", "typsubscript": "-", "typdefaultbin": "_null_", "array_type_oid": "4097", "typispreferred": "f", "array_type_name": "_regrole"}, "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": "数组"}, {"url": "/wiki/oid/regrole/?v=18", "label": "OID 类型百科"}], "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/datatype-oid.html", "path": "datatype-oid.html", "label": "PostgreSQL 18 English manual", "sha256": "8b3360302225f08ae72716ce1804596de95b568e5d31f788cb4597427b28cc38", "language": "en", "original_url": "/docs/18/datatype-oid.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": "regrole", "description": ["角色名"], "manual_html": "<div class=\"sect1\" id=\"DATATYPE-OID\">\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\">8.19. 对象标识符类型 </h2>\n</div>\n</div>\n</h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\">对象标识符（OID）在 <span class=\"productname\">PostgreSQL</span> 内部被用作若干系统表的主键。类型 <code class=\"type\">oid</code> 表示一个对象标识符。此外还有若干 <code class=\"type\">oid</code> 的别名类型，其名称均形如 <code class=\"type\">reg<em class=\"replaceable\"><code>something</code></em></code>。<a class=\"xref\" href=\"/docs/18/datatype-oid.html#DATATYPE-OID-TABLE\" title=\"表 8.26. 对象标识符类型\">表 8.26</a>给出了概要说明。</p>\n<p lang=\"zh\">oid 目前实现为无符号四字节整数，因此在大型数据库中，甚至在单张大型表中，都不足以保证数据库范围内的唯一性。</p>\n<p lang=\"zh\"><code class=\"type\">oid</code> 类型本身除比较之外几乎没有其他操作。不过，它可以转换为整数，然后再用标准整数操作符进行处理。（这样做时要注意有符号与无符号可能造成的混淆。）</p>\n<p lang=\"zh\">除专用输入／输出例程外，OID 别名类型没有自己的运算。这些例程能够接受和显示系统对象的符号名称，而非 oid 类型使用的原始数值。别名类型可简化对象 OID 的查找。例如，要查看表 mytable 对应的 pg_attribute 行，可以写成：</p>\n<pre class=\"programlisting\">SELECT * FROM pg_attribute WHERE attrelid = 'mytable'::regclass;\n</pre>\n<p lang=\"zh\">而不是：</p>\n<pre class=\"programlisting\">SELECT * FROM pg_attribute\n  WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'mytable');\n</pre>\n<p lang=\"zh\">虽然这样看起来也不算太糟，但其实仍然过于简化。如果不同模式中有多个名为 <code class=\"literal\">mytable</code> 的表，就必须写一个复杂得多的子查询来选出正确的 OID。<code class=\"type\">regclass</code> 的输入转换器会按照模式路径设置来处理表查找，因此能够自动完成<span class=\"quote\">“<span class=\"quote\">正确的事情</span>”</span>。同样，把表的 OID 转换成 <code class=\"type\">regclass</code>，也很适合用来以符号形式显示数值 OID。</p>\n<div class=\"table\" id=\"DATATYPE-OID-TABLE\">\n<p class=\"title\" lang=\"zh\"><strong>表 8.26. 对象标识符类型</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<th lang=\"zh\">说明</th>\n<th lang=\"zh\">示例值</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"type\">oid</code></td>\n<td lang=\"zh\">任意</td>\n<td lang=\"zh\">数字形式的对象标识符</td>\n<td><code class=\"literal\">564182</code></td>\n</tr>\n<tr>\n<td><code class=\"type\">regclass</code></td>\n<td><code class=\"structname\">pg_class</code></td>\n<td lang=\"zh\">关系名称</td>\n<td><code class=\"literal\">pg_type</code></td>\n</tr>\n<tr>\n<td><code class=\"type\">regcollation</code></td>\n<td><code class=\"structname\">pg_collation</code></td>\n<td lang=\"zh\">排序规则名称</td>\n<td><code class=\"literal\">\"POSIX\"</code></td>\n</tr>\n<tr>\n<td><code class=\"type\">regconfig</code></td>\n<td><code class=\"structname\">pg_ts_config</code></td>\n<td lang=\"zh\">文本检索配置</td>\n<td><code class=\"literal\">english</code></td>\n</tr>\n<tr>\n<td><code class=\"type\">regdictionary</code></td>\n<td><code class=\"structname\">pg_ts_dict</code></td>\n<td lang=\"zh\">文本检索词典</td>\n<td lang=\"zh\">简单</td>\n</tr>\n<tr>\n<td><code class=\"type\">regnamespace</code></td>\n<td><code class=\"structname\">pg_namespace</code></td>\n<td lang=\"zh\">命名空间名称</td>\n<td><code class=\"literal\">pg_catalog</code></td>\n</tr>\n<tr>\n<td><code class=\"type\">regoper</code></td>\n<td><code class=\"structname\">pg_operator</code></td>\n<td lang=\"zh\">操作符名称</td>\n<td><code class=\"literal\">+</code></td>\n</tr>\n<tr>\n<td><code class=\"type\">regoperator</code></td>\n<td><code class=\"structname\">pg_operator</code></td>\n<td lang=\"zh\">带参数类型的操作符</td>\n<td lang=\"zh\"><code class=\"literal\">*(integer,​integer)</code> 或 <code class=\"literal\">-(NONE,​integer)</code></td>\n</tr>\n<tr>\n<td><code class=\"type\">regproc</code></td>\n<td><code class=\"structname\">pg_proc</code></td>\n<td lang=\"zh\">函数名称</td>\n<td><code class=\"literal\">sum</code></td>\n</tr>\n<tr>\n<td><code class=\"type\">regprocedure</code></td>\n<td><code class=\"structname\">pg_proc</code></td>\n<td lang=\"zh\">带参数类型的函数</td>\n<td><code class=\"literal\">sum(int4)</code></td>\n</tr>\n<tr>\n<td><code class=\"type\">regrole</code></td>\n<td><code class=\"structname\">pg_authid</code></td>\n<td lang=\"zh\">角色名</td>\n<td><code class=\"literal\">smithee</code></td>\n</tr>\n<tr>\n<td><code class=\"type\">regtype</code></td>\n<td><code class=\"structname\">pg_type</code></td>\n<td lang=\"zh\">数据类型名称</td>\n<td><code class=\"literal\">integer</code></td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<p lang=\"zh\">所有按命名空间分组的对象对应的 OID 别名类型，都接受模式限定名称；如果某对象在当前搜索路径下未经限定就无法找到，则其输出也会显示为模式限定名称。例如，<code class=\"literal\">myschema.mytable</code> 可作为 <code class=\"type\">regclass</code> 的输入（前提是确有此表）。该值输出时可能是 <code class=\"literal\">myschema.mytable</code>，也可能只是 <code class=\"literal\">mytable</code>，具体取决于当前搜索路径。<code class=\"type\">regproc</code> 和 <code class=\"type\">regoper</code> 只接受唯一（未重载）的输入名称，因此用途有限；多数情况下，<code class=\"type\">regprocedure</code> 或 <code class=\"type\">regoperator</code> 更合适。对于 <code class=\"type\">regoperator</code>，可以通过在未使用的操作数位置写入 <code class=\"literal\">NONE</code> 来表示一元操作符。</p>\n<p lang=\"zh\">这些类型的输入函数允许在各个词元之间插入空白，并且会把大写字母折叠为小写，双引号内除外；这样做是为了让语法规则更接近 SQL 中书写对象名的方式。反过来，如果需要让输出成为有效的 SQL 标识符，输出函数会自动加上双引号。例如，一个名为 <code class=\"literal\">Foo</code>（大写 <code class=\"literal\">F</code>）且带两个整数参数的函数，其 OID 可以写成 <code class=\"literal\">' \"Foo\" ( int, integer ) '::regprocedure</code>。输出则会是 <code class=\"literal\">\"Foo\"(integer,integer)</code>。函数名和参数类型名也都可以带模式限定。</p>\n<p lang=\"zh\">许多内置的 <span class=\"productname\">PostgreSQL</span> 函数接受表的 OID 或其他数据库对象的 OID。为了方便，这些函数会被声明为接受 <code class=\"type\">regclass</code>（或相应的 OID 别名类型）参数。这意味着你不必手工查找对象的 OID，只需把对象名写成字符串字面值即可。例如，<code class=\"function\">nextval(regclass)</code> 函数接受一个序列关系的 OID，因此可以这样调用：</p>\n<pre class=\"programlisting\">nextval('foo')              <em class=\"lineannotation\"><span class=\"lineannotation\">operates on sequence <code class=\"literal\">foo</code></span></em>\nnextval('FOO')              <em class=\"lineannotation\"><span class=\"lineannotation\">same as above</span></em>\nnextval('\"Foo\"')            <em class=\"lineannotation\"><span class=\"lineannotation\">operates on sequence <code class=\"literal\">Foo</code></span></em>\nnextval('myschema.foo')     <em class=\"lineannotation\"><span class=\"lineannotation\">operates on <code class=\"literal\">myschema.foo</code></span></em>\nnextval('\"myschema\".foo')   <em class=\"lineannotation\"><span class=\"lineannotation\">same as above</span></em>\nnextval('foo')              <em class=\"lineannotation\"><span class=\"lineannotation\">searches search path for <code class=\"literal\">foo</code></span></em>\n</pre>\n<div class=\"note\">\n<h3 class=\"title\" lang=\"zh\">注意</h3>\n<p lang=\"zh\">当你把这类函数的参数写成未经修饰的字符串字面值时，它会变成 <code class=\"type\">regclass</code>（或相应类型）的常量。由于这实际上只是一个 OID，所以即便对象后来被重命名、重新分配到其他模式等，它仍会持续指向最初识别到的对象。这种<span class=\"quote\">“<span class=\"quote\">早绑定</span>”</span>行为，通常很适合列默认值和视图中的对象引用。但有时你可能希望得到<span class=\"quote\">“<span class=\"quote\">后绑定</span>”</span>行为，也就是在运行时再解析对象引用。要实现后绑定，请强制把该常量存储为 <code class=\"type\">text</code> 常量，而不是 <code class=\"type\">regclass</code>：</p>\n<pre class=\"programlisting\">nextval('foo'::text)      <em class=\"lineannotation\"><span class=\"lineannotation\"><code class=\"literal\">foo</code> is looked up at runtime</span></em>\n</pre>\n<p lang=\"zh\"><code class=\"function\">to_regclass()</code> 及其同类函数也可用于执行运行时查找。参见<a class=\"xref\" href=\"/docs/18/functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE\" title=\"表 9.76. 系统目录信息函数\">表 9.76</a>。</p>\n</div>\n<p lang=\"zh\"><code class=\"type\">regclass</code> 的另一个实际用途，是查找 <code class=\"literal\">information_schema</code> 视图中列出的表的 OID，而这些视图本身并不直接提供此类 OID。例如，你可能想调用 <code class=\"function\">pg_relation_size()</code> 函数，而它需要表的 OID。综合上述规则，正确的写法是：</p>\n<pre class=\"programlisting\">SELECT table_schema, table_name,\n       pg_relation_size((quote_ident(table_schema) || '.' ||\n                         quote_ident(table_name))::regclass)\nFROM information_schema.tables\nWHERE ...\n</pre>\n<p lang=\"zh\"><code class=\"function\">quote_ident()</code> 函数会在需要时为标识符添加双引号。看起来似乎更简单的写法</p>\n<pre class=\"programlisting\">SELECT pg_relation_size(table_name)\nFROM information_schema.tables\nWHERE ...\n</pre>\n<p lang=\"zh\"><span class=\"emphasis\"><em>并不推荐</em></span>，因为对于搜索路径之外的表，或者名字需要加引号的表，它都会失败。</p>\n<p lang=\"zh\">大多数 OID 别名类型还有一个附加特性，就是会创建依赖关系。如果这些类型的常量出现在存储的表达式中（例如列默认表达式或视图），它就会对被引用对象建立依赖。例如，如果某列的默认表达式是 <code class=\"literal\">nextval('my_seq'::regclass)</code>，<span class=\"productname\">PostgreSQL</span> 就会知道该默认表达式依赖于序列 <code class=\"literal\">my_seq</code>，因此系统不允许在尚未移除该默认表达式时删除序列。改用 <code class=\"literal\">nextval('my_seq'::text)</code> 则不会建立依赖。（<code class=\"type\">regrole</code> 是这一特性的例外：该类型的常量不允许出现在存储表达式中。）</p>\n<p lang=\"zh\">系统使用的另一种标识符类型是 xid，即事务（缩写为 xact）标识符。系统列 xmin 和 xmax 使用这种数据类型。事务标识符是 32 位数值。在某些场景中，使用其 64 位变体 xid8。与 xid 值不同，xid8 值严格单调递增，且在数据库集群的整个生命周期内不会被重用。详见第 67.1 节。</p>\n<p lang=\"zh\">系统使用的第三种标识符类型是 <code class=\"type\">cid</code>，也就是命令标识符。这是系统列 <code class=\"structfield\">cmin</code> 和 <code class=\"structfield\">cmax</code> 的数据类型。命令标识符同样是 32 位量。</p>\n<p lang=\"zh\">系统使用的最后一种标识符类型是 <code class=\"type\">tid</code>，也就是元组标识符（行标识符）。这是系统列 <code class=\"structfield\">ctid</code> 的数据类型。一个元组 ID 是一对值（块号、块内元组索引），用来标识该行在其所属表中的物理位置。</p>\n<p lang=\"zh\">（系统列的更多说明见<a class=\"xref\" href=\"/docs/18/ddl-system-columns.html\" title=\"5.6. 系统列\">第 5.6 节</a>。）</p>\n</div>", "manual_path": "datatype-oid.html", "localization": {"status": "complete", "sources": [{"url": "/docs/18/datatype-oid.html", "method": "same-major semantic node", "sha256": "8f164426c9777438bfef5614eb8d0576a7e5e559ac2be8ea12bde26b56710b7e", "language": "zh", "matched_nodes": ["#DATATYPE-OID/div[0]", "#DATATYPE-OID/div[26]/div[1]/table[0]/tbody[2]/tr[0]/td[1]", "#DATATYPE-OID/div[26]/div[1]/table[0]/tbody[2]/tr[0]/td[2]", "#DATATYPE-OID/div[26]/div[1]/table[0]/tbody[2]/tr[10]/td[2]", "#DATATYPE-OID/div[26]/div[1]/table[0]/tbody[2]/tr[11]/td[2]", "#DATATYPE-OID/div[26]/div[1]/table[0]/tbody[2]/tr[1]/td[2]", "#DATATYPE-OID/div[26]/div[1]/table[0]/tbody[2]/tr[2]/td[2]", "#DATATYPE-OID/div[26]/div[1]/table[0]/tbody[2]/tr[3]/td[2]", "#DATATYPE-OID/div[26]/div[1]/table[0]/tbody[2]/tr[4]/td[2]", "#DATATYPE-OID/div[26]/div[1]/table[0]/tbody[2]/tr[5]/td[2]", "#DATATYPE-OID/div[26]/div[1]/table[0]/tbody[2]/tr[6]/td[2]", "#DATATYPE-OID/div[26]/div[1]/table[0]/tbody[2]/tr[7]/td[2]", "#DATATYPE-OID/div[26]/div[1]/table[0]/tbody[2]/tr[7]/td[3]", "#DATATYPE-OID/div[26]/div[1]/table[0]/tbody[2]/tr[8]/td[2]", "#DATATYPE-OID/div[26]/div[1]/table[0]/tbody[2]/tr[9]/td[2]", "#DATATYPE-OID/div[26]/div[1]/table[0]/thead[1]/tr[0]/th[0]", "#DATATYPE-OID/div[26]/p[0]", "#DATATYPE-OID/div[32]/h3[0]", "#DATATYPE-OID/div[32]/p[1]", "#DATATYPE-OID/div[32]/p[3]", "#DATATYPE-OID/p[18]", "#DATATYPE-OID/p[20]", "#DATATYPE-OID/p[23]", "#DATATYPE-OID/p[25]", "#DATATYPE-OID/p[28]", "#DATATYPE-OID/p[29]", "#DATATYPE-OID/p[30]", "#DATATYPE-OID/p[33]", "#DATATYPE-OID/p[35]", "#DATATYPE-OID/p[37]", "#DATATYPE-OID/p[38]", "#DATATYPE-OID/p[40]", "#DATATYPE-OID/p[41]", "#DATATYPE-OID/p[42]"]}, {"url": "/docs/18/using-explain.html", "method": "same-major semantic node", "sha256": "b8835ec9adbc70ec150667a6b5443f8d298222dc0cc8c2bd1abb1c1d64895904", "language": "zh", "matched_nodes": ["#USING-EXPLAIN/div[7]/p[24]/span[0]/span[0]"]}], "language": "zh", "original_text": {"/versions/18/description/0": "role name", "/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": "4 bytes", "/versions/18/facts/4/label": "Storage strategy", "/versions/18/facts/5/label": "Input function", "/versions/18/facts/6/label": "Output function", "/versions/18/facts/7/label": "Documented declaration", "/versions/18/facts/8/label": "References", "/versions/18/facts/9/label": "Manual description", "/versions/18/facts/9/value": "role name", "/versions/18/facts/10/label": "Value Example", "/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", "/versions/18/related/5/label": "OID Types topic"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "4ba0149fa7df5de55869e6eed04863e19debf2be29ff87a4b0ba186d7e77248f"}, "comparison_data": {"casts": [{"castfunc": "0", "castmethod": "b", "castsource": "regrole", "casttarget": "int4", "castcontext": "a"}, {"castfunc": "int8(oid)", "castmethod": "f", "castsource": "regrole", "casttarget": "int8", "castcontext": "a"}, {"castfunc": "0", "castmethod": "b", "castsource": "int4", "casttarget": "regrole", "castcontext": "i"}, {"castfunc": "0", "castmethod": "b", "castsource": "oid", "casttarget": "regrole", "castcontext": "i"}, {"castfunc": "0", "castmethod": "b", "castsource": "regrole", "casttarget": "oid", "castcontext": "i"}, {"castfunc": "int4(int2)", "castmethod": "f", "castsource": "int2", "casttarget": "regrole", "castcontext": "i"}, {"castfunc": "oid", "castmethod": "f", "castsource": "int8", "casttarget": "regrole", "castcontext": "i"}], "facts": [{"label": "Catalog name", "value": "pg_catalog.regrole"}, {"label": "Declared length", "value": "4 bytes"}, {"label": "Documented declaration", "value": "regrole"}, {"label": "Input function", "value": "regrolein"}, {"label": "Output function", "value": "regroleout"}, {"label": "References", "value": "pg_authid"}, {"label": "Storage strategy", "value": "plain"}, {"label": "Type OID", "value": "4096"}, {"label": "Type kind", "value": "Base type"}, {"label": "Value Example", "value": "smithee"}], "ranges": [], "aliases": [], "catalog": {"typacl": "_null_", "typlen": "4", "typelem": "0", "typname": "regrole", "typsend": "regrolesend", "typtype": "b", "typalign": "i", "typarray": "_regrole", "typbyval": "t", "typdelim": ",", "typinput": "regrolein", "typmodin": "-", "typndims": "0", "typrelid": "0", "typmodout": "-", "typoutput": "regroleout", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "regrolerecv", "typstorage": "p", "typbasetype": "0", "typcategory": "N", "typcollation": "0", "typisdefined": "t", "typsubscript": "-", "typdefaultbin": "_null_", "typispreferred": "f", "array_type_name": "_regrole"}, "operators": [], "operator_classes": []}, "comparison_hash": "208e582ce4bf30616c82e2be6c3317123f5ff6a575f5b3558bdfd2a4504e7ee3", "manual_language": "zh", "operator_classes": [], "manual_documentation": "dedicated family chapter"}, "from": "17", "comparison": {"available": true, "changes": [], "prose_changed": true}}