{"kind": "type", "slug": "language_handler", "name": "language_handler", "major": "18", "snapshot": {"casts": [], "facts": [{"label": "目录名称", "value": "pg_catalog.language_handler"}, {"label": "类型 OID", "value": "2280"}, {"label": "类型种类", "value": "Pseudo-type"}, {"label": "声明长度", "value": "4 字节"}, {"label": "存储策略", "value": "plain"}, {"label": "输入函数", "value": "language_handler_in"}, {"label": "输出函数", "value": "language_handler_out"}, {"label": "手册中的声明", "value": "language_handler"}, {"label": "手册说明", "value": "表示过程语言调用处理器被声明为返回 language_handler 。"}], "ranges": [], "aliases": [], "catalog": {"oid": "2280", "descr": "pseudo-type for the result of a language handler function", "typacl": "_null_", "typlen": "4", "typelem": "0", "typname": "language_handler", "typsend": "-", "typtype": "p", "typalign": "i", "typarray": "0", "typbyval": "t", "typdelim": "','", "typinput": "language_handler_in", "typmodin": "-", "typndims": "0", "typowner": "POSTGRES", "typrelid": "0", "typmodout": "-", "typoutput": "language_handler_out", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "-", "typstorage": "p", "typbasetype": "0", "typcategory": "P", "typcollation": "0", "typisdefined": "t", "typnamespace": "pg_catalog", "typsubscript": "-", "typdefaultbin": "_null_", "array_type_oid": "0", "typispreferred": "f", "array_type_name": ""}, "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/datatype-pseudo.html", "path": "datatype-pseudo.html", "label": "PostgreSQL 18 English manual", "sha256": "c7cf0b8214304bd8702c95f2142671ae5f0d631f83717f9c07d9e1f2579961b4", "language": "en", "original_url": "/docs/18/datatype-pseudo.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": "language_handler", "description": ["表示过程语言调用处理器被声明为返回 language_handler 。"], "manual_html": "<div class=\"sect1\" id=\"DATATYPE-PSEUDO\">\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.21. 伪类型 </h2>\n</div>\n</div>\n</h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><span class=\"productname\">PostgreSQL</span> 的类型系统中包含一些特殊用途的条目，统称为<em class=\"firstterm\">伪类型</em>。伪类型不能作为列数据类型使用，但可以用于声明函数的参数类型或结果类型。每一种伪类型都适用于这样的场景：函数的行为并不对应于简单地接受或返回某个特定 <acronym class=\"acronym\">SQL</acronym> 数据类型的值。<a class=\"xref\" href=\"/docs/18/datatype-pseudo.html#DATATYPE-PSEUDOTYPES-TABLE\" title=\"表 8.27. 伪类型\">表 8.27</a>列出了现有的伪类型。</p>\n<div class=\"table\" id=\"DATATYPE-PSEUDOTYPES-TABLE\">\n<p class=\"title\" lang=\"zh\"><strong>表 8.27. 伪类型</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=\"type\">any</code></td>\n<td lang=\"zh\">表示一个函数可以接受任意输入数据类型。</td>\n</tr>\n<tr>\n<td><code class=\"type\">anyelement</code></td>\n<td lang=\"zh\">表示一个函数可以接受任意数据类型（参见<a class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. 多态类型\">第 36.2.5 节</a>）。</td>\n</tr>\n<tr>\n<td><code class=\"type\">anyarray</code></td>\n<td lang=\"zh\">表示一个函数可以接受任意数组数据类型（参见<a class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. 多态类型\">第 36.2.5 节</a>）。</td>\n</tr>\n<tr>\n<td><code class=\"type\">anynonarray</code></td>\n<td lang=\"zh\">表示一个函数可以接受任意非数组数据类型（参见<a class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. 多态类型\">第 36.2.5 节</a>）。</td>\n</tr>\n<tr>\n<td><code class=\"type\">anyenum</code></td>\n<td lang=\"zh\">表示一个函数可以接受任意枚举数据类型（参见<a class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. 多态类型\">第 36.2.5 节</a>和<a class=\"xref\" href=\"/docs/18/datatype-enum.html\" title=\"8.7. 枚举类型\">第 8.7 节</a>）。</td>\n</tr>\n<tr>\n<td><code class=\"type\">anyrange</code></td>\n<td lang=\"zh\">表示一个函数可以接受任意范围数据类型（参见<a class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. 多态类型\">第 36.2.5 节</a>和<a class=\"xref\" href=\"/docs/18/rangetypes.html\" title=\"8.17. 范围类型\">第 8.17 节</a>）。</td>\n</tr>\n<tr>\n<td><code class=\"type\">anymultirange</code></td>\n<td lang=\"zh\">表示一个函数可以接受任意多范围数据类型（参见<a class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. 多态类型\">第 36.2.5 节</a>和<a class=\"xref\" href=\"/docs/18/rangetypes.html\" title=\"8.17. 范围类型\">第 8.17 节</a>）。</td>\n</tr>\n<tr>\n<td><code class=\"type\">anycompatible</code></td>\n<td lang=\"zh\">表示一个函数可以接受任意数据类型，并自动将多个参数提升为公共数据类型（参见<a class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. 多态类型\">第 36.2.5 节</a>）。</td>\n</tr>\n<tr>\n<td><code class=\"type\">anycompatiblearray</code></td>\n<td lang=\"zh\">表示一个函数可以接受任意数组数据类型，并自动将多个参数提升为公共数据类型（参见<a class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. 多态类型\">第 36.2.5 节</a>）。</td>\n</tr>\n<tr>\n<td><code class=\"type\">anycompatiblenonarray</code></td>\n<td lang=\"zh\">表示一个函数可以接受任意非数组数据类型，并自动将多个参数提升为公共数据类型（参见<a class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. 多态类型\">第 36.2.5 节</a>）。</td>\n</tr>\n<tr>\n<td><code class=\"type\">anycompatiblerange</code></td>\n<td lang=\"zh\">表示一个函数可以接受任意范围数据类型，并自动将多个参数提升为公共数据类型（参见<a class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. 多态类型\">第 36.2.5 节</a>和<a class=\"xref\" href=\"/docs/18/rangetypes.html\" title=\"8.17. 范围类型\">第 8.17 节</a>）。</td>\n</tr>\n<tr>\n<td><code class=\"type\">anycompatiblemultirange</code></td>\n<td lang=\"zh\">表示一个函数可以接受任意多范围数据类型，并自动将多个参数提升为公共数据类型（参见<a class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. 多态类型\">第 36.2.5 节</a>和<a class=\"xref\" href=\"/docs/18/rangetypes.html\" title=\"8.17. 范围类型\">第 8.17 节</a>）。</td>\n</tr>\n<tr>\n<td><code class=\"type\">cstring</code></td>\n<td lang=\"zh\">表示一个函数接受或返回一个以空字符结尾的 C 字符串。</td>\n</tr>\n<tr>\n<td lang=\"zh\">内部</td>\n<td lang=\"zh\">表示一个函数接受或返回一个服务器内部数据类型。</td>\n</tr>\n<tr>\n<td><code class=\"type\">language_handler</code></td>\n<td lang=\"zh\">表示过程语言调用处理器被声明为返回 <code class=\"type\">language_handler</code>。</td>\n</tr>\n<tr>\n<td><code class=\"type\">fdw_handler</code></td>\n<td lang=\"zh\">表示外部数据包装器处理器被声明为返回 <code class=\"type\">fdw_handler</code>。</td>\n</tr>\n<tr>\n<td><code class=\"type\">table_am_handler</code></td>\n<td lang=\"zh\">表示表访问方法处理器被声明为返回 <code class=\"type\">table_am_handler</code>。</td>\n</tr>\n<tr>\n<td><code class=\"type\">index_am_handler</code></td>\n<td lang=\"zh\">表示索引访问方法处理器被声明为返回 <code class=\"type\">index_am_handler</code>。</td>\n</tr>\n<tr>\n<td><code class=\"type\">tsm_handler</code></td>\n<td lang=\"zh\">表示表采样方法处理器被声明为返回 <code class=\"type\">tsm_handler</code>。</td>\n</tr>\n<tr>\n<td><code class=\"type\">record</code></td>\n<td lang=\"zh\">标识一个接受或返回未指定行类型的函数。</td>\n</tr>\n<tr>\n<td><code class=\"type\">trigger</code></td>\n<td lang=\"zh\">触发器函数声明返回 trigger 类型。</td>\n</tr>\n<tr>\n<td><code class=\"type\">event_trigger</code></td>\n<td lang=\"zh\">事件触发器函数声明返回 event_trigger 类型。</td>\n</tr>\n<tr>\n<td><code class=\"type\">pg_ddl_command</code></td>\n<td lang=\"zh\">标识一种可供事件触发器使用的 DDL 命令表示形式。</td>\n</tr>\n<tr>\n<td><code class=\"type\">void</code></td>\n<td lang=\"zh\">表示一个函数不返回值。</td>\n</tr>\n<tr>\n<td lang=\"zh\">unknown（未知）</td>\n<td lang=\"zh\">标识一种尚未解析出的类型，例如未修饰的字符串字面值的类型。</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<p lang=\"zh\">用 C 编写的函数（无论是内置的还是动态装载的）都可以声明为接受或返回这些伪类型中的任意一种。函数作者必须自行确保，当伪类型被用作参数类型时，该函数的行为仍然安全。</p>\n<p lang=\"zh\">用过程语言编写的函数，只有在其实现语言允许的情况下才能使用伪类型。目前，大多数过程语言都禁止把伪类型用作参数类型，而只允许把 <code class=\"type\">void</code> 和 <code class=\"type\">record</code> 用作结果类型（如果函数被用作触发器或事件触发器，则也允许 <code class=\"type\">trigger</code> 或 <code class=\"type\">event_trigger</code> 作为结果类型）。有些语言还支持借助上面列出的多态伪类型来实现多态函数；详见<a class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. 多态类型\">第 36.2.5 节</a>。</p>\n<p lang=\"zh\">伪类型 internal 用于声明仅供数据库系统内部调用、而不能在 SQL 查询中直接调用的函数。只要函数至少有一个 internal 类型参数，就不能从 SQL 调用。为保持此限制的类型安全性，必须遵循以下编码规则：除非函数至少有一个 internal 参数，否则不要创建声明为返回 internal 的函数。</p>\n</div>", "manual_path": "datatype-pseudo.html", "localization": {"status": "complete", "sources": [{"url": "/docs/18/datatype-boolean.html", "method": "same-major semantic node", "sha256": "02f326be1cdcfc675ceee38ca098a7cc5bcd8cf05d7ac9ee169d8718c8bf67e0", "language": "zh", "matched_nodes": ["#DATATYPE-BOOLEAN/p[4]/span[7]/span[0]"]}, {"url": "/docs/18/datatype-pseudo.html", "method": "same-major semantic node", "sha256": "4b627e5e49247dd880068f21ea137dbbdc9f5e648fdcbf20ddbefad580816773", "language": "zh", "matched_nodes": ["#DATATYPE-PSEUDO/div[0]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[0]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[10]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[11]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[12]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[13]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[14]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[15]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[16]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[17]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[18]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[19]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[1]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[22]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[23]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[24]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[2]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[3]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[4]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[5]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[6]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[7]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[8]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/tbody[2]/tr[9]/td[1]", "#DATATYPE-PSEUDO/div[27]/div[1]/table[0]/thead[1]/tr[0]/th[0]", "#DATATYPE-PSEUDO/div[27]/p[0]", "#DATATYPE-PSEUDO/p[26]", "#DATATYPE-PSEUDO/p[29]", "#DATATYPE-PSEUDO/p[30]"]}, {"url": "/docs/18/xfunc-c.html", "method": "same-major semantic node", "sha256": "4b35ab16ac85cc22b5c37555941784a2fd0a1b66b507e9dfff9a239102c15e77", "language": "zh", "matched_nodes": ["#XFUNC-C/p[3]/span[1]/span[0]"]}], "language": "zh", "original_text": {"/versions/18/description/0": "A procedural language call handler is declared to return language_handler .", "/versions/18/facts/0/label": "Catalog name", "/versions/18/facts/1/label": "Type OID", "/versions/18/facts/2/label": "Type kind", "/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": "Manual description", "/versions/18/facts/8/value": "A procedural language call handler is declared to return language_handler .", "/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": "cd7a444b30a1f7b6fbbdf2ad78cb2feb3053eecf092bea7a25e89dbd08740840"}, "comparison_data": {"casts": [], "facts": [{"label": "Catalog name", "value": "pg_catalog.language_handler"}, {"label": "Declared length", "value": "4 bytes"}, {"label": "Documented declaration", "value": "language_handler"}, {"label": "Input function", "value": "language_handler_in"}, {"label": "Output function", "value": "language_handler_out"}, {"label": "Storage strategy", "value": "plain"}, {"label": "Type OID", "value": "2280"}, {"label": "Type kind", "value": "Pseudo-type"}], "ranges": [], "aliases": [], "catalog": {"typacl": "_null_", "typlen": "4", "typelem": "0", "typname": "language_handler", "typsend": "-", "typtype": "p", "typalign": "i", "typarray": "", "typbyval": "t", "typdelim": ",", "typinput": "language_handler_in", "typmodin": "-", "typndims": "0", "typrelid": "0", "typmodout": "-", "typoutput": "language_handler_out", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "-", "typstorage": "p", "typbasetype": "0", "typcategory": "P", "typcollation": "0", "typisdefined": "t", "typsubscript": "-", "typdefaultbin": "_null_", "typispreferred": "f", "array_type_name": ""}, "operators": [], "operator_classes": []}, "comparison_hash": "7bbeda62c33bc4817d74aed33a33a8b22deb8f063d75f829c269757a74f5adb6", "manual_language": "zh", "operator_classes": [], "manual_documentation": "dedicated family chapter"}, "from": "17", "comparison": {"available": true, "changes": [], "prose_changed": true}}