{"Entry":{"collection":"type","key":"table_am_handler","name":"table_am_handler","aliases":[],"metadata":{"aliases":[],"category":"Pseudo-types","content_hash":"919b554fa4e949f19f26f5a64e42dd411b317a6d6d7e8c8d4832c75d65a13bcf","derived_content_hash":"7e417082336d318aac63c1f66767541a365031e35b88c9681969e95c8340e02a","imported_at":"2026-09-30T00:40:36.679202+08:00","name":"table_am_handler","name_zh":"","slug":"table_am_handler","summary":"A table access method handler is declared to return table_am_handler ."}},"Definition":{"Collection":"type","Key":"table_am_handler","SourceDatabase":"center","Version":"18","SourceTable":"data_type","SourceKey":"table_am_handler","SourceRevision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","Facts":{"aliases":[],"casts":[],"catalog":{"array_type_name":"","array_type_oid":"0","descr":"pseudo-type for the result of a table AM handler function","oid":"269","typacl":"_null_","typalign":"i","typanalyze":"-","typarray":"0","typbasetype":"0","typbyval":"t","typcategory":"P","typcollation":"0","typdefault":"_null_","typdefaultbin":"_null_","typdelim":"','","typelem":"0","typinput":"table_am_handler_in","typisdefined":"t","typispreferred":"f","typlen":"4","typmodin":"-","typmodout":"-","typname":"table_am_handler","typnamespace":"pg_catalog","typndims":"0","typnotnull":"f","typoutput":"table_am_handler_out","typowner":"POSTGRES","typreceive":"-","typrelid":"0","typsend":"-","typstorage":"p","typsubscript":"-","typtype":"p","typtypmod":"-1"},"comparison_data":{"aliases":[],"casts":[],"catalog":{"array_type_name":"","typacl":"_null_","typalign":"i","typanalyze":"-","typarray":"","typbasetype":"0","typbyval":"t","typcategory":"P","typcollation":"0","typdefault":"_null_","typdefaultbin":"_null_","typdelim":",","typelem":"0","typinput":"table_am_handler_in","typisdefined":"t","typispreferred":"f","typlen":"4","typmodin":"-","typmodout":"-","typname":"table_am_handler","typndims":"0","typnotnull":"f","typoutput":"table_am_handler_out","typreceive":"-","typrelid":"0","typsend":"-","typstorage":"p","typsubscript":"-","typtype":"p","typtypmod":"-1"},"facts":[{"label":"Catalog name","value":"pg_catalog.table_am_handler"},{"label":"Declared length","value":"4 bytes"},{"label":"Documented declaration","value":"table_am_handler"},{"label":"Input function","value":"table_am_handler_in"},{"label":"Output function","value":"table_am_handler_out"},{"label":"Storage strategy","value":"plain"},{"label":"Type OID","value":"269"},{"label":"Type kind","value":"Pseudo-type"}],"operator_classes":[],"operators":[],"ranges":[]},"comparison_hash":"4bcae3064ba320553ce8dbbcfc92158ec8c41910b421c18f2f5d2ff83d2c207c","coverage":"source inventory; exact declared input types for operator classes","description":["A table access method handler is declared to return table_am_handler ."],"description_zh":"表示表访问方法处理器被声明为返回 table_am_handler 。","description_zh_html":"\u003cp\u003e表示表访问方法处理器被声明为返回 table_am_handler 。\u003c/p\u003e\u003ch3\u003e同版本中文手册定义\u003c/h3\u003e\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode class=\"type\"\u003etable_am_handler\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e表示表访问方法处理器被声明为返回 \u003ccode class=\"type\"\u003etable_am_handler\u003c/code\u003e。\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003cp\u003e\u003ca href=\"/zh/docs/18/datatype-pseudo.html\"\u003e查看完整中文手册与上下文\u003c/a\u003e。\u003c/p\u003e","facts":[{"label":"Catalog name","value":"pg_catalog.table_am_handler"},{"label":"Type OID","value":"269"},{"label":"Type kind","value":"Pseudo-type"},{"label":"Declared length","value":"4 bytes"},{"label":"Storage strategy","value":"plain"},{"label":"Input function","value":"table_am_handler_in"},{"label":"Output function","value":"table_am_handler_out"},{"label":"Documented declaration","value":"table_am_handler"},{"label":"Manual description","value":"A table access method handler is declared to return table_am_handler ."}],"facts_zh":[{"label":"目录名称","value":"pg_catalog.table_am_handler"},{"label":"类型 OID","value":"269"},{"label":"类型种类","value":"Pseudo-type"},{"label":"声明长度","value":"4 字节"},{"label":"存储策略","value":"plain"},{"label":"输入函数","value":"table_am_handler_in"},{"label":"输出函数","value":"table_am_handler_out"},{"label":"手册中的声明","value":"table_am_handler"},{"label":"手册说明","value":"表示表访问方法处理器被声明为返回 table_am_handler 。"}],"manual_documentation":"dedicated family chapter","manual_html":"\u003cdiv class=\"sect1\" id=\"DATATYPE-PSEUDO\"\u003e\n\u003cdiv class=\"titlepage\"\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003ch2 class=\"title\"\u003e8.21. Pseudo-Types \u003c/h2\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cp\u003eThe \u003cspan class=\"productname\"\u003ePostgreSQL\u003c/span\u003e type system contains a number of special-purpose entries that are collectively called \u003cem class=\"firstterm\"\u003epseudo-types\u003c/em\u003e. A pseudo-type cannot be used as a column data type, but it can be used to declare a function's argument or result type. Each of the available pseudo-types is useful in situations where a function's behavior does not correspond to simply taking or returning a value of a specific SQL data type. \u003ca class=\"xref\" href=\"/docs/18/datatype-pseudo.html#DATATYPE-PSEUDOTYPES-TABLE\" title=\"Table 8.27. Pseudo-Types\"\u003eTable 8.27\u003c/a\u003e lists the existing pseudo-types.\u003c/p\u003e\n\u003cdiv class=\"table\" id=\"DATATYPE-PSEUDOTYPES-TABLE\"\u003e\n\u003cp class=\"title\"\u003e\u003cstrong\u003eTable 8.27. Pseudo-Types\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"table-contents\"\u003e\n\u003ctable class=\"table\"\u003e\n\n\n\n\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eName\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eany\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any input data type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanyelement\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanyarray\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any array data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanynonarray\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any non-array data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanyenum\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any enum data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e and \u003ca class=\"xref\" href=\"/docs/18/datatype-enum.html\" title=\"8.7. Enumerated Types\"\u003eSection 8.7\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanyrange\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any range data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e and \u003ca class=\"xref\" href=\"/docs/18/rangetypes.html\" title=\"8.17. Range Types\"\u003eSection 8.17\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanymultirange\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any multirange data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e and \u003ca class=\"xref\" href=\"/docs/18/rangetypes.html\" title=\"8.17. Range Types\"\u003eSection 8.17\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanycompatible\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any data type, with automatic promotion of multiple arguments to a common data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanycompatiblearray\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any array data type, with automatic promotion of multiple arguments to a common data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanycompatiblenonarray\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any non-array data type, with automatic promotion of multiple arguments to a common data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanycompatiblerange\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any range data type, with automatic promotion of multiple arguments to a common data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e and \u003ca class=\"xref\" href=\"/docs/18/rangetypes.html\" title=\"8.17. Range Types\"\u003eSection 8.17\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanycompatiblemultirange\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any multirange data type, with automatic promotion of multiple arguments to a common data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e and \u003ca class=\"xref\" href=\"/docs/18/rangetypes.html\" title=\"8.17. Range Types\"\u003eSection 8.17\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003ecstring\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts or returns a null-terminated C string.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003einternal\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts or returns a server-internal data type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003elanguage_handler\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eA procedural language call handler is declared to return \u003ccode class=\"type\"\u003elanguage_handler\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003efdw_handler\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eA foreign-data wrapper handler is declared to return \u003ccode class=\"type\"\u003efdw_handler\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003etable_am_handler\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eA table access method handler is declared to return \u003ccode class=\"type\"\u003etable_am_handler\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eindex_am_handler\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eAn index access method handler is declared to return \u003ccode class=\"type\"\u003eindex_am_handler\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003etsm_handler\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eA tablesample method handler is declared to return \u003ccode class=\"type\"\u003etsm_handler\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003erecord\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIdentifies a function taking or returning an unspecified row type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003etrigger\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eA trigger function is declared to return \u003ccode class=\"type\"\u003etrigger.\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eevent_trigger\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eAn event trigger function is declared to return \u003ccode class=\"type\"\u003eevent_trigger.\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003epg_ddl_command\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIdentifies a representation of DDL commands that is available to event triggers.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003evoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function returns no value.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eunknown\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIdentifies a not-yet-resolved type, e.g., of an undecorated string literal.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\u003c/div\u003e\u003cbr class=\"table-break\"\u003e\n\u003cp\u003eFunctions coded in C (whether built-in or dynamically loaded) can be declared to accept or return any of these pseudo-types. It is up to the function author to ensure that the function will behave safely when a pseudo-type is used as an argument type.\u003c/p\u003e\n\u003cp\u003eFunctions coded in procedural languages can use pseudo-types only as allowed by their implementation languages. At present most procedural languages forbid use of a pseudo-type as an argument type, and allow only \u003ccode class=\"type\"\u003evoid\u003c/code\u003e and \u003ccode class=\"type\"\u003erecord\u003c/code\u003e as a result type (plus \u003ccode class=\"type\"\u003etrigger\u003c/code\u003e or \u003ccode class=\"type\"\u003eevent_trigger\u003c/code\u003e when the function is used as a trigger or event trigger). Some also support polymorphic functions using the polymorphic pseudo-types, which are shown above and discussed in detail in \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode class=\"type\"\u003einternal\u003c/code\u003e pseudo-type is used to declare functions that are meant only to be called internally by the database system, and not by direct invocation in an SQL query. If a function has at least one \u003ccode class=\"type\"\u003einternal\u003c/code\u003e-type argument then it cannot be called from SQL. To preserve the type safety of this restriction it is important to follow this coding rule: do not create any function that is declared to return \u003ccode class=\"type\"\u003einternal\u003c/code\u003e unless it has at least one \u003ccode class=\"type\"\u003einternal\u003c/code\u003e argument.\u003c/p\u003e\n\u003c/div\u003e","manual_path":"datatype-pseudo.html","operator_classes":[],"operators":[],"ranges":[],"related":[{"label":"pg_type catalog","url":"/wiki/catalog/pg_type/?v=18"},{"label":"pg_cast catalog","url":"/wiki/catalog/pg_cast/?v=18"},{"label":"pg_operator catalog","url":"/wiki/catalog/pg_operator/?v=18"},{"label":"pg_opclass catalog","url":"/wiki/catalog/pg_opclass/?v=18"},{"label":"Arrays","url":"/wiki/type/arrays/?v=18"}],"release":{"channel":"stable","label":"18.6","major":"18","manual_sha256":{"arrays.html":"0e1d5c5a7b4a949d4439995f44f74ad4264e050d16eb9ad2a850fbaee04032df","catalog-pg-type.html":"ea9c9313bab8e92a7da18ebc50c7ff1f908dd80999a7e0ca3bbc82ba626c58d4","datatype-binary.html":"0c03ec47b76e37888a3da7f5dcfd340128a5d356642a85185cc9ebe17856a904","datatype-bit.html":"c49124aad561636c18080b9e09572fde7785a6b9eae86f5a33283f0fd6774c37","datatype-boolean.html":"b633f663e6c8276e7056287640c413aa79dbc15d5353cee0d41653d58d376956","datatype-character.html":"c73eebe413ea709a7792e4cfc3cfe9fb68cb496ebe83c3ebaa9d09f8c40d0f73","datatype-datetime.html":"e366275d8b13845bfa4ef0d68faa093e5f3ecb708a1ec870cbcbf7e425b85699","datatype-enum.html":"cab38e53222e30cc94b24de4b33634fd22d7c93f58ebcf35f646c9b8da78fae8","datatype-geometric.html":"0eb3053cfe7d6b0a4b5592c5d7af8d97cae527e87f063c5793413bcba5c14cd9","datatype-json.html":"650162a05b660146b500a205d523374d00aee117a6a6240d30262be51b6e33e5","datatype-money.html":"8b29c14b90679683ac5c472b59a0a7e2853f32cc7db43fab417b2697a6879964","datatype-net-types.html":"96846e641cc37727ddcd8b8a1aa0dbe33cd9787760a2b4efb0dcb9403d5be63f","datatype-numeric.html":"b74619f7ac2f1ca9f85c48073df78c33dd30e464e61baba6008634534edcb500","datatype-oid.html":"8b3360302225f08ae72716ce1804596de95b568e5d31f788cb4597427b28cc38","datatype-pg-lsn.html":"339172f5107cc7eb7139bec911277647219e92a532cebd0f3da0a5dacf8195af","datatype-pseudo.html":"c7cf0b8214304bd8702c95f2142671ae5f0d631f83717f9c07d9e1f2579961b4","datatype-textsearch.html":"4b15e05be8b49a71b28aea22f2c46d0dbf639a91e7b4fe129a4c737c6daad47c","datatype-uuid.html":"292b307b3223c6182bdba687e7f69e6dca9038430143ad79d56327f6ed4c3246","datatype-xml.html":"061fc2295b7b69be704f0a741b8decd10ad721059f871fb0243c669bb54d7822","datatype.html":"e581f67c74e42006289638c8659e9b338adbfd7f068bd8bf2b3be3880fcd2254","domains.html":"82d486973ccc35d14276627a67ac76b434452f23f9ed4d8aa3fbb01fdf285fc2","functions-info.html":"78ac80bf81da2e4f4a33f3b850faa86f0f58ec54a083d6c31da557907de0df87","rangetypes.html":"e4960abc7ce8e51d794f94f1e57b099d30b7f75dd7f2b23a960eef91f6291c33","rowtypes.html":"74f99e029c3a9edfd3e18810ba3c8cb66d3aada91eb67b86476560871e6617e9","sql-createdomain.html":"e94f927196de1b0ea1ce35cd4603c1f6f544439adcc0edf1c4222358e832245b"},"ref":"https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2","revision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","source_files":{"doc/src/sgml/datatype.sgml":"86328daa77e20d81d222376ec0306d9841a17104e436c08d138eb763aefb3700","src/include/catalog/pg_am.dat":"b3cb86b102a42fb0024cbd99779c9897afb40d12a71f5cc5a0e5aee7ff2f9969","src/include/catalog/pg_am.h":"3426799df799f32163fcc0765f43dbdb5e88e626acf31284fef9fc6014b69d8e","src/include/catalog/pg_cast.dat":"97911281ca2c81917394ccb2ec13367e37c6801fd461d5e1a3d2f28b911b46b2","src/include/catalog/pg_cast.h":"de585c7df687d698e7d1d100dce8a794ac9da52414ea48169191019178c8f053","src/include/catalog/pg_opclass.dat":"4ee7d3619a6aa106e1c0db55de903931c7d11b1c60ba053a022519c55f8ee668","src/include/catalog/pg_opclass.h":"9c218537806c8ef0398302faaca7f91315dfc1198c48706cebffb479b68defaf","src/include/catalog/pg_operator.dat":"5d35b9b2ef5f9797cc815263927ef8a12367fedace53e828b4e8b320e2a7f703","src/include/catalog/pg_operator.h":"621b18cfffe102413d79b746ce7a10f77fc60fdd097bac34c22b31070d3ee3c4","src/include/catalog/pg_opfamily.dat":"3b694879027b858f2ecf1fa1152b7e30c6e15a216ba99c2384291c30e9d52311","src/include/catalog/pg_opfamily.h":"e1f5fc8aebd3042df847455bf66bf755f768c2aa8a9b03d22f7ec8563eba59c0","src/include/catalog/pg_proc.dat":"1f934ce80d460159dda137714374a35f9896315ea2476709cbb4da13b38ef95a","src/include/catalog/pg_proc.h":"f7d59f07c5b95e2f3c7141762a0f576e8a3af7581ba54c27537f4d500472bea5","src/include/catalog/pg_range.dat":"5c2271f8e89e9378d1887204e5785060b77405b5f0ff3e6c719250c9c1dcfcc4","src/include/catalog/pg_range.h":"45546d952b5181f989bd9234721897fc2b37005c8e49ce2ddc156f26974c3ca4","src/include/catalog/pg_type.dat":"5f5887b75677cba2d4a1a0cfeb355df5ed91f85d385fac88bd8d7c605b3578f9","src/include/catalog/pg_type.h":"8fb198749fd82b6c1818a3c18455f226f66116fcfeb3d4959c65ce3fda22802e"},"source_sha256":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"},"sections":[],"sections_zh":[],"signature":"table_am_handler","sources":[{"label":"PostgreSQL 18 English manual","path":"datatype-pseudo.html","sha256":"c7cf0b8214304bd8702c95f2142671ae5f0d631f83717f9c07d9e1f2579961b4","url":"/docs/18/datatype-pseudo.html"},{"label":"Matching PostgreSQL source archive","sha256":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","url":"https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2"}],"tables_zh":[],"zh_from":{"authored_translation":"preserved-translation-of-reverified-type-description","body_sha256":"8d36e7a2f7150cf43f412116db690b09fd3cf51a9e7e1ae3e3c3d65165d1f003","kind":"same-version-chinese-manual-with-preserved-translation-of-reverified-type-description","manual":{"anchor":"","build_id":107,"extraction":"exact-table-row","fragment_sha256":"2554254768a99d78df50c8d63aa2353f22cfeaf13c6c72a682a3b72d9da0dd61","locale":"zh-Hans","page_key":"datatype-pseudo.html","source_hash":"7e980477c184e20fbd5211b18fe90dab32732938eb64018d1bc36699055c924d","source_revision":"unknown:rendered-translation-baseline","translated_from_revision":null,"translation_revision":"git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:08e987a66af27b98444a8057c256314eafa13611a3fb9e888214fc436824244b","url":"/zh/docs/18/datatype-pseudo.html","version":"18"},"runtime_rerun":false,"source_facts_revision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","summary_translation":{"english_description_sha256":"a6fe7854d69fdf67b67128f91598a87eea7880558e627eb9a71e212e003b6893","key":"table_am_handler","kind":"preserved-translation-of-reverified-type-description","localized_description_sha256":"6501326e5a1ebbba712a9f62e4da6c367949363f7ee9424c8e52e37ab9403058","original_localization_sources":[{"language":"zh","matched_nodes":["#DATATYPE-BOOLEAN/p[4]/span[7]/span[0]"],"method":"same-major semantic node","sha256":"02f326be1cdcfc675ceee38ca098a7cc5bcd8cf05d7ac9ee169d8718c8bf67e0","url":"/docs/18/datatype-boolean.html"},{"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]"],"method":"same-major semantic node","sha256":"4b627e5e49247dd880068f21ea137dbbdc9f5e648fdcbf20ddbefad580816773","url":"/docs/18/datatype-pseudo.html"},{"language":"zh","matched_nodes":["#XFUNC-C/p[3]/span[1]/span[0]"],"method":"same-major semantic node","sha256":"4b35ab16ac85cc22b5c37555941784a2fd0a1b66b507e9dfff9a239102c15e77","url":"/docs/18/xfunc-c.html"}],"source_database":"pgweb","table":"data_type","version":"18"}}},"ManualEvidence":{"manual_path":"datatype-pseudo.html","release":{"channel":"stable","label":"18.6","major":"18","manual_sha256":{"arrays.html":"0e1d5c5a7b4a949d4439995f44f74ad4264e050d16eb9ad2a850fbaee04032df","catalog-pg-type.html":"ea9c9313bab8e92a7da18ebc50c7ff1f908dd80999a7e0ca3bbc82ba626c58d4","datatype-binary.html":"0c03ec47b76e37888a3da7f5dcfd340128a5d356642a85185cc9ebe17856a904","datatype-bit.html":"c49124aad561636c18080b9e09572fde7785a6b9eae86f5a33283f0fd6774c37","datatype-boolean.html":"b633f663e6c8276e7056287640c413aa79dbc15d5353cee0d41653d58d376956","datatype-character.html":"c73eebe413ea709a7792e4cfc3cfe9fb68cb496ebe83c3ebaa9d09f8c40d0f73","datatype-datetime.html":"e366275d8b13845bfa4ef0d68faa093e5f3ecb708a1ec870cbcbf7e425b85699","datatype-enum.html":"cab38e53222e30cc94b24de4b33634fd22d7c93f58ebcf35f646c9b8da78fae8","datatype-geometric.html":"0eb3053cfe7d6b0a4b5592c5d7af8d97cae527e87f063c5793413bcba5c14cd9","datatype-json.html":"650162a05b660146b500a205d523374d00aee117a6a6240d30262be51b6e33e5","datatype-money.html":"8b29c14b90679683ac5c472b59a0a7e2853f32cc7db43fab417b2697a6879964","datatype-net-types.html":"96846e641cc37727ddcd8b8a1aa0dbe33cd9787760a2b4efb0dcb9403d5be63f","datatype-numeric.html":"b74619f7ac2f1ca9f85c48073df78c33dd30e464e61baba6008634534edcb500","datatype-oid.html":"8b3360302225f08ae72716ce1804596de95b568e5d31f788cb4597427b28cc38","datatype-pg-lsn.html":"339172f5107cc7eb7139bec911277647219e92a532cebd0f3da0a5dacf8195af","datatype-pseudo.html":"c7cf0b8214304bd8702c95f2142671ae5f0d631f83717f9c07d9e1f2579961b4","datatype-textsearch.html":"4b15e05be8b49a71b28aea22f2c46d0dbf639a91e7b4fe129a4c737c6daad47c","datatype-uuid.html":"292b307b3223c6182bdba687e7f69e6dca9038430143ad79d56327f6ed4c3246","datatype-xml.html":"061fc2295b7b69be704f0a741b8decd10ad721059f871fb0243c669bb54d7822","datatype.html":"e581f67c74e42006289638c8659e9b338adbfd7f068bd8bf2b3be3880fcd2254","domains.html":"82d486973ccc35d14276627a67ac76b434452f23f9ed4d8aa3fbb01fdf285fc2","functions-info.html":"78ac80bf81da2e4f4a33f3b850faa86f0f58ec54a083d6c31da557907de0df87","rangetypes.html":"e4960abc7ce8e51d794f94f1e57b099d30b7f75dd7f2b23a960eef91f6291c33","rowtypes.html":"74f99e029c3a9edfd3e18810ba3c8cb66d3aada91eb67b86476560871e6617e9","sql-createdomain.html":"e94f927196de1b0ea1ce35cd4603c1f6f544439adcc0edf1c4222358e832245b"},"ref":"https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2","revision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","source_files":{"doc/src/sgml/datatype.sgml":"86328daa77e20d81d222376ec0306d9841a17104e436c08d138eb763aefb3700","src/include/catalog/pg_am.dat":"b3cb86b102a42fb0024cbd99779c9897afb40d12a71f5cc5a0e5aee7ff2f9969","src/include/catalog/pg_am.h":"3426799df799f32163fcc0765f43dbdb5e88e626acf31284fef9fc6014b69d8e","src/include/catalog/pg_cast.dat":"97911281ca2c81917394ccb2ec13367e37c6801fd461d5e1a3d2f28b911b46b2","src/include/catalog/pg_cast.h":"de585c7df687d698e7d1d100dce8a794ac9da52414ea48169191019178c8f053","src/include/catalog/pg_opclass.dat":"4ee7d3619a6aa106e1c0db55de903931c7d11b1c60ba053a022519c55f8ee668","src/include/catalog/pg_opclass.h":"9c218537806c8ef0398302faaca7f91315dfc1198c48706cebffb479b68defaf","src/include/catalog/pg_operator.dat":"5d35b9b2ef5f9797cc815263927ef8a12367fedace53e828b4e8b320e2a7f703","src/include/catalog/pg_operator.h":"621b18cfffe102413d79b746ce7a10f77fc60fdd097bac34c22b31070d3ee3c4","src/include/catalog/pg_opfamily.dat":"3b694879027b858f2ecf1fa1152b7e30c6e15a216ba99c2384291c30e9d52311","src/include/catalog/pg_opfamily.h":"e1f5fc8aebd3042df847455bf66bf755f768c2aa8a9b03d22f7ec8563eba59c0","src/include/catalog/pg_proc.dat":"1f934ce80d460159dda137714374a35f9896315ea2476709cbb4da13b38ef95a","src/include/catalog/pg_proc.h":"f7d59f07c5b95e2f3c7141762a0f576e8a3af7581ba54c27537f4d500472bea5","src/include/catalog/pg_range.dat":"5c2271f8e89e9378d1887204e5785060b77405b5f0ff3e6c719250c9c1dcfcc4","src/include/catalog/pg_range.h":"45546d952b5181f989bd9234721897fc2b37005c8e49ce2ddc156f26974c3ca4","src/include/catalog/pg_type.dat":"5f5887b75677cba2d4a1a0cfeb355df5ed91f85d385fac88bd8d7c605b3578f9","src/include/catalog/pg_type.h":"8fb198749fd82b6c1818a3c18455f226f66116fcfeb3d4959c65ce3fda22802e"},"source_sha256":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"},"sources":[{"label":"PostgreSQL 18 English manual","path":"datatype-pseudo.html","sha256":"c7cf0b8214304bd8702c95f2142671ae5f0d631f83717f9c07d9e1f2579961b4","url":"/docs/18/datatype-pseudo.html"},{"label":"Matching PostgreSQL source archive","sha256":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","url":"https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2"}]},"MeasuredEvidence":{}},"Text":{"Collection":"type","Key":"table_am_handler","SourceDatabase":"center","Version":"18","Locale":"en","Title":"table_am_handler","Summary":"A table access method handler is declared to return table_am_handler .","BodyHTML":"\u003cdiv id=\"DATATYPE-PSEUDO\"\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003ch2\u003e8.21. Pseudo-Types \u003c/h2\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cp\u003eThe \u003cspan\u003ePostgreSQL\u003c/span\u003e type system contains a number of special-purpose entries that are collectively called \u003cem\u003epseudo-types\u003c/em\u003e. A pseudo-type cannot be used as a column data type, but it can be used to declare a function\u0026#39;s argument or result type. Each of the available pseudo-types is useful in situations where a function\u0026#39;s behavior does not correspond to simply taking or returning a value of a specific SQL data type. \u003ca href=\"/docs/18/datatype-pseudo.html#DATATYPE-PSEUDOTYPES-TABLE\" rel=\"nofollow\"\u003eTable 8.27\u003c/a\u003e lists the existing pseudo-types.\u003c/p\u003e\n\u003cdiv id=\"DATATYPE-PSEUDOTYPES-TABLE\"\u003e\n\u003cp\u003e\u003cstrong\u003eTable 8.27. Pseudo-Types\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv\u003e\n\u003ctable\u003e\n\n\n\n\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eName\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eany\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any input data type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eanyelement\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any data type (see \u003ca href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" rel=\"nofollow\"\u003eSection 36.2.5\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eanyarray\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any array data type (see \u003ca href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" rel=\"nofollow\"\u003eSection 36.2.5\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eanynonarray\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any non-array data type (see \u003ca href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" rel=\"nofollow\"\u003eSection 36.2.5\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eanyenum\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any enum data type (see \u003ca href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" rel=\"nofollow\"\u003eSection 36.2.5\u003c/a\u003e and \u003ca href=\"/docs/18/datatype-enum.html\" rel=\"nofollow\"\u003eSection 8.7\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eanyrange\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any range data type (see \u003ca href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" rel=\"nofollow\"\u003eSection 36.2.5\u003c/a\u003e and \u003ca href=\"/docs/18/rangetypes.html\" rel=\"nofollow\"\u003eSection 8.17\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eanymultirange\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any multirange data type (see \u003ca href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" rel=\"nofollow\"\u003eSection 36.2.5\u003c/a\u003e and \u003ca href=\"/docs/18/rangetypes.html\" rel=\"nofollow\"\u003eSection 8.17\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eanycompatible\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any data type, with automatic promotion of multiple arguments to a common data type (see \u003ca href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" rel=\"nofollow\"\u003eSection 36.2.5\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eanycompatiblearray\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any array data type, with automatic promotion of multiple arguments to a common data type (see \u003ca href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" rel=\"nofollow\"\u003eSection 36.2.5\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eanycompatiblenonarray\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any non-array data type, with automatic promotion of multiple arguments to a common data type (see \u003ca href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" rel=\"nofollow\"\u003eSection 36.2.5\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eanycompatiblerange\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any range data type, with automatic promotion of multiple arguments to a common data type (see \u003ca href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" rel=\"nofollow\"\u003eSection 36.2.5\u003c/a\u003e and \u003ca href=\"/docs/18/rangetypes.html\" rel=\"nofollow\"\u003eSection 8.17\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eanycompatiblemultirange\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any multirange data type, with automatic promotion of multiple arguments to a common data type (see \u003ca href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" rel=\"nofollow\"\u003eSection 36.2.5\u003c/a\u003e and \u003ca href=\"/docs/18/rangetypes.html\" rel=\"nofollow\"\u003eSection 8.17\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003ecstring\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts or returns a null-terminated C string.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003einternal\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts or returns a server-internal data type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003elanguage_handler\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eA procedural language call handler is declared to return \u003ccode\u003elanguage_handler\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003efdw_handler\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eA foreign-data wrapper handler is declared to return \u003ccode\u003efdw_handler\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etable_am_handler\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eA table access method handler is declared to return \u003ccode\u003etable_am_handler\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eindex_am_handler\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eAn index access method handler is declared to return \u003ccode\u003eindex_am_handler\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etsm_handler\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eA tablesample method handler is declared to return \u003ccode\u003etsm_handler\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003erecord\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIdentifies a function taking or returning an unspecified row type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etrigger\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eA trigger function is declared to return \u003ccode\u003etrigger.\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eevent_trigger\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eAn event trigger function is declared to return \u003ccode\u003eevent_trigger.\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003epg_ddl_command\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIdentifies a representation of DDL commands that is available to event triggers.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003evoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function returns no value.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eunknown\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIdentifies a not-yet-resolved type, e.g., of an undecorated string literal.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\u003c/div\u003e\u003cbr\u003e\n\u003cp\u003eFunctions coded in C (whether built-in or dynamically loaded) can be declared to accept or return any of these pseudo-types. It is up to the function author to ensure that the function will behave safely when a pseudo-type is used as an argument type.\u003c/p\u003e\n\u003cp\u003eFunctions coded in procedural languages can use pseudo-types only as allowed by their implementation languages. At present most procedural languages forbid use of a pseudo-type as an argument type, and allow only \u003ccode\u003evoid\u003c/code\u003e and \u003ccode\u003erecord\u003c/code\u003e as a result type (plus \u003ccode\u003etrigger\u003c/code\u003e or \u003ccode\u003eevent_trigger\u003c/code\u003e when the function is used as a trigger or event trigger). Some also support polymorphic functions using the polymorphic pseudo-types, which are shown above and discussed in detail in \u003ca href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" rel=\"nofollow\"\u003eSection 36.2.5\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003einternal\u003c/code\u003e pseudo-type is used to declare functions that are meant only to be called internally by the database system, and not by direct invocation in an SQL query. If a function has at least one \u003ccode\u003einternal\u003c/code\u003e-type argument then it cannot be called from SQL. To preserve the type safety of this restriction it is important to follow this coding rule: do not create any function that is declared to return \u003ccode\u003einternal\u003c/code\u003e unless it has at least one \u003ccode\u003einternal\u003c/code\u003e argument.\u003c/p\u003e\n\u003c/div\u003e","SourceRevision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","ContentHash":"17ef3697eea12f5dabc6dcc94a761be91c61b6e5cd97b8c7e44a98a5c8a15879","Payload":{"description":["A table access method handler is declared to return table_am_handler ."],"manual_html":"\u003cdiv class=\"sect1\" id=\"DATATYPE-PSEUDO\"\u003e\n\u003cdiv class=\"titlepage\"\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003ch2 class=\"title\"\u003e8.21. Pseudo-Types \u003c/h2\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cp\u003eThe \u003cspan class=\"productname\"\u003ePostgreSQL\u003c/span\u003e type system contains a number of special-purpose entries that are collectively called \u003cem class=\"firstterm\"\u003epseudo-types\u003c/em\u003e. A pseudo-type cannot be used as a column data type, but it can be used to declare a function's argument or result type. Each of the available pseudo-types is useful in situations where a function's behavior does not correspond to simply taking or returning a value of a specific SQL data type. \u003ca class=\"xref\" href=\"/docs/18/datatype-pseudo.html#DATATYPE-PSEUDOTYPES-TABLE\" title=\"Table 8.27. Pseudo-Types\"\u003eTable 8.27\u003c/a\u003e lists the existing pseudo-types.\u003c/p\u003e\n\u003cdiv class=\"table\" id=\"DATATYPE-PSEUDOTYPES-TABLE\"\u003e\n\u003cp class=\"title\"\u003e\u003cstrong\u003eTable 8.27. Pseudo-Types\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"table-contents\"\u003e\n\u003ctable class=\"table\"\u003e\n\n\n\n\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eName\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eany\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any input data type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanyelement\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanyarray\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any array data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanynonarray\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any non-array data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanyenum\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any enum data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e and \u003ca class=\"xref\" href=\"/docs/18/datatype-enum.html\" title=\"8.7. Enumerated Types\"\u003eSection 8.7\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanyrange\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any range data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e and \u003ca class=\"xref\" href=\"/docs/18/rangetypes.html\" title=\"8.17. Range Types\"\u003eSection 8.17\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanymultirange\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any multirange data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e and \u003ca class=\"xref\" href=\"/docs/18/rangetypes.html\" title=\"8.17. Range Types\"\u003eSection 8.17\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanycompatible\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any data type, with automatic promotion of multiple arguments to a common data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanycompatiblearray\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any array data type, with automatic promotion of multiple arguments to a common data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanycompatiblenonarray\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any non-array data type, with automatic promotion of multiple arguments to a common data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanycompatiblerange\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any range data type, with automatic promotion of multiple arguments to a common data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e and \u003ca class=\"xref\" href=\"/docs/18/rangetypes.html\" title=\"8.17. Range Types\"\u003eSection 8.17\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eanycompatiblemultirange\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts any multirange data type, with automatic promotion of multiple arguments to a common data type (see \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e and \u003ca class=\"xref\" href=\"/docs/18/rangetypes.html\" title=\"8.17. Range Types\"\u003eSection 8.17\u003c/a\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003ecstring\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts or returns a null-terminated C string.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003einternal\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function accepts or returns a server-internal data type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003elanguage_handler\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eA procedural language call handler is declared to return \u003ccode class=\"type\"\u003elanguage_handler\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003efdw_handler\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eA foreign-data wrapper handler is declared to return \u003ccode class=\"type\"\u003efdw_handler\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003etable_am_handler\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eA table access method handler is declared to return \u003ccode class=\"type\"\u003etable_am_handler\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eindex_am_handler\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eAn index access method handler is declared to return \u003ccode class=\"type\"\u003eindex_am_handler\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003etsm_handler\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eA tablesample method handler is declared to return \u003ccode class=\"type\"\u003etsm_handler\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003erecord\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIdentifies a function taking or returning an unspecified row type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003etrigger\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eA trigger function is declared to return \u003ccode class=\"type\"\u003etrigger.\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eevent_trigger\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eAn event trigger function is declared to return \u003ccode class=\"type\"\u003eevent_trigger.\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003epg_ddl_command\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIdentifies a representation of DDL commands that is available to event triggers.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003evoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIndicates that a function returns no value.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eunknown\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIdentifies a not-yet-resolved type, e.g., of an undecorated string literal.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\u003c/div\u003e\u003cbr class=\"table-break\"\u003e\n\u003cp\u003eFunctions coded in C (whether built-in or dynamically loaded) can be declared to accept or return any of these pseudo-types. It is up to the function author to ensure that the function will behave safely when a pseudo-type is used as an argument type.\u003c/p\u003e\n\u003cp\u003eFunctions coded in procedural languages can use pseudo-types only as allowed by their implementation languages. At present most procedural languages forbid use of a pseudo-type as an argument type, and allow only \u003ccode class=\"type\"\u003evoid\u003c/code\u003e and \u003ccode class=\"type\"\u003erecord\u003c/code\u003e as a result type (plus \u003ccode class=\"type\"\u003etrigger\u003c/code\u003e or \u003ccode class=\"type\"\u003eevent_trigger\u003c/code\u003e when the function is used as a trigger or event trigger). Some also support polymorphic functions using the polymorphic pseudo-types, which are shown above and discussed in detail in \u003ca class=\"xref\" href=\"/docs/18/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC\" title=\"36.2.5. Polymorphic Types\"\u003eSection 36.2.5\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode class=\"type\"\u003einternal\u003c/code\u003e pseudo-type is used to declare functions that are meant only to be called internally by the database system, and not by direct invocation in an SQL query. If a function has at least one \u003ccode class=\"type\"\u003einternal\u003c/code\u003e-type argument then it cannot be called from SQL. To preserve the type safety of this restriction it is important to follow this coding rule: do not create any function that is declared to return \u003ccode class=\"type\"\u003einternal\u003c/code\u003e unless it has at least one \u003ccode class=\"type\"\u003einternal\u003c/code\u003e argument.\u003c/p\u003e\n\u003c/div\u003e","related":[{"label":"pg_type catalog","url":"/wiki/catalog/pg_type/?v=18"},{"label":"pg_cast catalog","url":"/wiki/catalog/pg_cast/?v=18"},{"label":"pg_operator catalog","url":"/wiki/catalog/pg_operator/?v=18"},{"label":"pg_opclass catalog","url":"/wiki/catalog/pg_opclass/?v=18"},{"label":"Arrays","url":"/wiki/type/arrays/?v=18"}],"sections":[]}},"RequestedLocale":"en","Fallback":false,"Versions":["12","13","14","15","16","17","18","19","20"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
