{"kind": "type", "slug": "int2vector", "name": "int2vector", "major": "18", "snapshot": {"casts": [], "facts": [{"label": "目录名称", "value": "pg_catalog.int2vector"}, {"label": "类型 OID", "value": "22"}, {"label": "类型种类", "value": "基础类型"}, {"label": "声明长度", "value": "变长（varlena）"}, {"label": "存储策略", "value": "plain"}, {"label": "输入函数", "value": "int2vectorin"}, {"label": "输出函数", "value": "int2vectorout"}], "ranges": [], "aliases": [], "catalog": {"oid": "22", "descr": "array of int2, used in system tables", "typacl": "_null_", "typlen": "-1", "typelem": "int2", "typname": "int2vector", "typsend": "int2vectorsend", "typtype": "b", "typalign": "i", "typarray": "0", "typbyval": "f", "typdelim": "','", "typinput": "int2vectorin", "typmodin": "-", "typndims": "0", "typowner": "POSTGRES", "typrelid": "0", "typmodout": "-", "typoutput": "int2vectorout", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "int2vectorrecv", "typstorage": "p", "typbasetype": "0", "typcategory": "A", "typcollation": "0", "typisdefined": "t", "typnamespace": "pg_catalog", "typsubscript": "array_subscript_handler", "typdefaultbin": "_null_", "array_type_oid": "1006", "typispreferred": "f", "array_type_name": "_int2vector"}, "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/catalog-pg-type.html", "path": "catalog-pg-type.html", "label": "PostgreSQL 18 English manual", "sha256": "ea9c9313bab8e92a7da18ebc50c7ff1f908dd80999a7e0ca3bbc82ba626c58d4", "language": "en", "original_url": "/docs/18/catalog-pg-type.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": "int2vector", "description": ["用于系统表的 int2 数组"], "manual_html": "<div class=\"sect1\" id=\"CATALOG-PG-TYPE\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">52.64. <code class=\"structname\">pg_type</code> </h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\">目录<code class=\"structname\">pg_type</code>存储有关数据类型的信息。基础类型和枚举类型（标量类型）使用<a class=\"link\" href=\"/docs/18/sql-createtype.html\" title=\"CREATE TYPE\"><code class=\"command\">CREATE TYPE</code></a>创建，而域使用<a class=\"link\" href=\"/docs/18/sql-createdomain.html\" title=\"CREATE DOMAIN\"><code class=\"command\">CREATE DOMAIN</code></a>创建。数据库中的每一个表都会有一个自动创建的复合类型，用于表示表的行结构。也可以使用<code class=\"command\">CREATE TYPE AS</code>创建复合类型。</p>\n<div class=\"table\" id=\"id-1.10.4.66.4\">\n<p class=\"title\" lang=\"zh\"><strong>表 52.64. <code class=\"structname\">pg_type</code> 列</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th class=\"catalog_table_entry\" lang=\"zh\">\n<tr>\n<th class=\"catalog_table_entry\">\n<p class=\"column_definition\">列类型</p>\n<p>描述</p>\n</th>\n</tr>\n</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">oid</code> <code class=\"type\">oid</code></p>\n<p>行标识符</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typname</code> <code class=\"type\">name</code></p>\n<p>数据类型的名字</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typnamespace</code> <code class=\"type\">oid</code>（引用 <a class=\"link\" href=\"/docs/18/catalog-pg-namespace.html\" title=\"52.32. pg_namespace\"><code class=\"structname\">pg_namespace</code></a>.<code class=\"structfield\">oid</code>）</p>\n<p>包含此类型的名字空间的OID</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typowner</code> <code class=\"type\">oid</code>（引用 <a class=\"link\" href=\"/docs/18/catalog-pg-authid.html\" title=\"52.8. pg_authid\"><code class=\"structname\">pg_authid</code></a>.<code class=\"structfield\">oid</code>）</p>\n<p>类型的拥有者</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typlen</code> <code class=\"type\">int2</code></p>\n<p lang=\"zh\">对于定长类型，typlen 是该类型内部表示所占的字节数。对于变长类型，typlen 为负数。-1 表示“varlena”类型（包含长度字的类型），-2 表示以空字符结尾的 C 字符串。</p>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typbyval</code> <code class=\"type\">bool</code></p>\n<p lang=\"zh\">typbyval 决定内部例程是按值还是按引用传递此类型的值。如果 typlen 不是 1、2 或 4（在 Datum 为 8 字节的机器上还包括 8），typbyval 应当为 false。变长类型始终按引用传递。注意，即使长度允许按值传递，typbyval 也可以为 false。</p>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typtype</code> <code class=\"type\">char</code></p>\n<p><code class=\"structfield\">typtype</code>可以是：<code class=\"literal\">b</code>表示一个基础类型，<code class=\"literal\">c</code>表示一个复合类型（例如一个表的行类型），<code class=\"literal\">d</code>表示一个域，<code class=\"literal\">e</code>表示一个枚举类型，<code class=\"literal\">p</code>表示一个伪类型，<code class=\"literal\">r</code>表示一个范围类型，或 <code class=\"literal\">m</code>表示一个多范围类型。另请参阅<code class=\"structfield\">typrelid</code>和<code class=\"structfield\">typbasetype</code>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typcategory</code> <code class=\"type\">char</code></p>\n<p><code class=\"structfield\">typcategory</code>是一种任意的数据类型分类，它被解析器用来决定应<span class=\"quote\">“<span class=\"quote\">首选</span>”</span>哪些隐式类型转换。参见<a class=\"xref\" href=\"/docs/18/catalog-pg-type.html#CATALOG-TYPCATEGORY-TABLE\" title=\"表 52.65. typcategory 代码\">表 52.65</a>。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typispreferred</code> <code class=\"type\">bool</code></p>\n<p>如果此类型在它的<code class=\"structfield\">typcategory</code>中是首选的类型转换目标，此列为真</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typisdefined</code> <code class=\"type\">bool</code></p>\n<p>如果此类型已被定义则为真，如果此类型只是一个表示还未定义类型的占位符则为假。当<code class=\"structfield\">typisdefined</code>为假，除了类型名字、名字空间和OID之外什么都不能被依赖。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typdelim</code> <code class=\"type\">char</code></p>\n<p>在分析数组输入时，分隔两个此类型值的字符。注意该分隔符是与数组元素数据类型相关联的，而不是和数组的数据类型关联。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typrelid</code> <code class=\"type\">oid</code>（引用 <a class=\"link\" href=\"/docs/18/catalog-pg-class.html\" title=\"52.11. pg_class\"><code class=\"structname\">pg_class</code></a>.<code class=\"structfield\">oid</code>）</p>\n<p>如果这是一个复合类型（见<code class=\"structfield\">typtype</code>），那么此列指向<a class=\"link\" href=\"/docs/18/catalog-pg-class.html\" title=\"52.11. pg_class\"><code class=\"structname\">pg_class</code></a>中定义对应表的项（对于独立定义的复合类型，<a class=\"link\" href=\"/docs/18/catalog-pg-class.html\" title=\"52.11. pg_class\"><code class=\"structname\">pg_class</code></a>项并不表示一个表，但不管怎样该类型的<a class=\"link\" href=\"/docs/18/catalog-pg-attribute.html\" title=\"52.7. pg_attribute\"><code class=\"structname\">pg_attribute</code></a>项需要链接到它）。对非复合类型此列为零。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typsubscript</code> <code class=\"type\">regproc</code>（引用 <a class=\"link\" href=\"/docs/18/catalog-pg-proc.html\" title=\"52.39. pg_proc\"><code class=\"structname\">pg_proc</code></a>.<code class=\"structfield\">oid</code>）</p>\n<p>下标处理函数的 OID，如果该类型不支持下标则为零。<span class=\"quote\">“<span class=\"quote\">真正的</span>”</span>数组类型的 <code class=\"structfield\">typsubscript</code> = <code class=\"function\">array_subscript_handler</code>，但其他类型也可能使用不同的处理函数来实现特定的下标行为。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typelem</code> <code class=\"type\">oid</code>（引用 <a class=\"link\" href=\"/docs/18/catalog-pg-type.html\" title=\"52.64. pg_type\"><code class=\"structname\">pg_type</code></a>.<code class=\"structfield\">oid</code>）</p>\n<p>如果<code class=\"structfield\">typelem</code>不为零，则它标识<code class=\"structname\">pg_type</code>中的另一行，该行定义了下标操作产生的类型。如果<code class=\"structfield\">typsubscript</code>为零则该项为零。但是，当<code class=\"structfield\">typsubscript</code>不为零时它也可以为零，如果处理函数不需要<code class=\"structfield\">typelem</code>来决定下标结果类型。注意<code class=\"structfield\">typelem</code>依赖被视为意味着该类型在物理上包含其元素类型；所以这个元素类型上的DDL变更可能会受到该类型存在的限制。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typarray</code> <code class=\"type\">oid</code>（引用 <a class=\"link\" href=\"/docs/18/catalog-pg-type.html\" title=\"52.64. pg_type\"><code class=\"structname\">pg_type</code></a>.<code class=\"structfield\">oid</code>）</p>\n<p>如果<code class=\"structfield\">typarray</code>不是零，则它标识<code class=\"structname\">pg_type</code>中的另一行，这一行是一个将此类型作为元素的<span class=\"quote\">“<span class=\"quote\">真正的</span>”</span>数组类型</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typinput</code> <code class=\"type\">regproc</code>（引用 <a class=\"link\" href=\"/docs/18/catalog-pg-proc.html\" title=\"52.39. pg_proc\"><code class=\"structname\">pg_proc</code></a>.<code class=\"structfield\">oid</code>）</p>\n<p>输入转换函数（文本格式）</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typoutput</code> <code class=\"type\">regproc</code>（引用 <a class=\"link\" href=\"/docs/18/catalog-pg-proc.html\" title=\"52.39. pg_proc\"><code class=\"structname\">pg_proc</code></a>.<code class=\"structfield\">oid</code>）</p>\n<p>输出转换函数（文本格式）</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typreceive</code> <code class=\"type\">regproc</code>（引用 <a class=\"link\" href=\"/docs/18/catalog-pg-proc.html\" title=\"52.39. pg_proc\"><code class=\"structname\">pg_proc</code></a>.<code class=\"structfield\">oid</code>）</p>\n<p>输入转换函数（二进制格式），如果没有则为零</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typsend</code> <code class=\"type\">regproc</code>（引用 <a class=\"link\" href=\"/docs/18/catalog-pg-proc.html\" title=\"52.39. pg_proc\"><code class=\"structname\">pg_proc</code></a>.<code class=\"structfield\">oid</code>）</p>\n<p>输出转换函数（二进制格式），如果没有则为零</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typmodin</code> <code class=\"type\">regproc</code>（引用 <a class=\"link\" href=\"/docs/18/catalog-pg-proc.html\" title=\"52.39. pg_proc\"><code class=\"structname\">pg_proc</code></a>.<code class=\"structfield\">oid</code>）</p>\n<p>类型修饰符输入函数，如果类型不支持修饰符则为零</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typmodout</code> <code class=\"type\">regproc</code>（引用 <a class=\"link\" href=\"/docs/18/catalog-pg-proc.html\" title=\"52.39. pg_proc\"><code class=\"structname\">pg_proc</code></a>.<code class=\"structfield\">oid</code>）</p>\n<p>类型修饰符输出函数，或为零以使用标准格式</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typanalyze</code> <code class=\"type\">regproc</code>（引用 <a class=\"link\" href=\"/docs/18/catalog-pg-proc.html\" title=\"52.39. pg_proc\"><code class=\"structname\">pg_proc</code></a>.<code class=\"structfield\">oid</code>）</p>\n<p>自定义<a class=\"xref\" href=\"/docs/18/sql-analyze.html\" title=\"ANALYZE\"><span class=\"refentrytitle\">ANALYZE</span></a>函数，零表示使用标准函数</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typalign</code> <code class=\"type\">char</code></p>\n<p lang=\"zh\"><code class=\"structfield\">typalign</code>表示存储此类型值时所要求的对齐方式。它适用于磁盘存储，以及该值在 <span class=\"productname\">PostgreSQL</span> 内部的大多数表示形式。当多个值连续存放时，例如在磁盘上完整行的表示中，这种类型的数据前会插入填充，使其从指定边界开始。对齐参考点是该序列中第一个数据的起始位置。可能的值为：</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist\">\n<li class=\"listitem\" lang=\"zh\">\n<p><code class=\"literal\">c</code> = <code class=\"type\">char</code>对齐，即不需要对齐。</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">s = 按 short 对齐（大多数机器上为 2 字节）。</li>\n<li class=\"listitem\" lang=\"zh\">i = 按 int 对齐（大多数机器上为 4 字节）。</li>\n<li class=\"listitem\" lang=\"zh\">d = 按 double 对齐（许多机器上为 8 字节，但并非所有机器都是如此）。</li>\n</ul>\n</div>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typstorage</code> <code class=\"type\">char</code></p>\n<p lang=\"zh\">对于 varlena 类型（typlen = -1 的类型），typstorage 指明该类型是否支持 TOAST，以及此类型属性的默认存储策略。可能的值为：</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist\">\n<li class=\"listitem\" lang=\"zh\">\n<p><code class=\"literal\">p</code>（普通）：值必须始终以普通方式存储（非 varlena 类型总是使用这个值）。</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p><code class=\"literal\">e</code>（外部）：值可以存储在一个二级<span class=\"quote\">“<span class=\"quote\">TOAST</span>”</span>关系中（如果原关系有这样的关系，参见<code class=\"literal\">pg_class.reltoastrelid</code>）。</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p><code class=\"literal\">m</code>（主要）：值可以压缩后存储在行内。</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p><code class=\"literal\">x</code>（扩展）：值可以被压缩和/或移动到二级关系。</p>\n</li>\n</ul>\n</div>\n<p lang=\"zh\"><code class=\"literal\">x</code> 是支持 TOAST 的类型的常见选择。注意，<code class=\"literal\">m</code>值也可以移到二级存储，但只能作为最后手段（<code class=\"literal\">e</code>和<code class=\"literal\">x</code>值会先被移动）。</p>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typnotnull</code> <code class=\"type\">bool</code></p>\n<p><code class=\"structfield\">typnotnull</code>表示类型上的一个非空约束。只用于域。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\" lang=\"zh\"><code class=\"structfield\">typbasetype</code> <code class=\"type\">oid</code>（引用 <a class=\"link\" href=\"/docs/18/catalog-pg-type.html\" title=\"52.64. pg_type\"><code class=\"structname\">pg_type</code></a>.<code class=\"structfield\">oid</code>）</p>\n<p lang=\"zh\">如果这是一个域（参见 typtype），typbasetype 就标识其基础类型。如果该类型不是域，则为零。</p>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typtypmod</code> <code class=\"type\">int4</code></p>\n<p>域使用<code class=\"structfield\">typtypmod</code>来记录被应用于它们基础类型的<code class=\"literal\">typmod</code>（如果基础类型不使用<code class=\"literal\">typmod</code>，则为-1）。如果此类型不是一个域则为-1。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typndims</code> <code class=\"type\">int4</code></p>\n<p>对于基于数组的域，<code class=\"structfield\">typndims</code>是数组维度数（即，<code class=\"structfield\">typbasetype</code>是一个数组类型）。对于不是基于数组的域的类型，此列为零。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typcollation</code> <code class=\"type\">oid</code>（引用 <a class=\"link\" href=\"/docs/18/catalog-pg-collation.html\" title=\"52.12. pg_collation\"><code class=\"structname\">pg_collation</code></a>.<code class=\"structfield\">oid</code>）</p>\n<p><code class=\"structfield\">typcollation</code>指定此类型的排序规则。如果类型不支持排序规则，此列为零。支持排序规则的基础类型在这里会有一个非零值，典型值为<code class=\"symbol\">DEFAULT_COLLATION_OID</code>。基于支持排序规则的类型的域，如果为其指定了排序规则 OID，则它的排序规则 OID 可以不同于其基础类型的排序规则 OID。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typdefaultbin</code> <code class=\"type\">pg_node_tree</code></p>\n<p>如果<code class=\"structfield\">typdefaultbin</code>非 NULL，那么它就是该类型默认表达式的<code class=\"function\">nodeToString()</code>表示形式。此列只用于域。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typdefault</code> <code class=\"type\">text</code></p>\n<p>如果某类型没有相关默认值，那么<code class=\"structfield\">typdefault</code>为 NULL。如果<code class=\"structfield\">typdefaultbin</code>不为 NULL，那么<code class=\"structfield\">typdefault</code>必须包含由<code class=\"structfield\">typdefaultbin</code>表示的默认表达式的人类可读版本。如果<code class=\"structfield\">typdefaultbin</code>为 NULL而<code class=\"structfield\">typdefault</code>不为 NULL，则<code class=\"structfield\">typdefault</code>是该类型默认值的外部表示形式，它可以被交给该类型的输入转换器来产生一个常量。</p>\n</td>\n</td>\n</tr>\n<tr>\n<td class=\"catalog_table_entry\" lang=\"zh\">\n<td class=\"catalog_table_entry\">\n<p class=\"column_definition\"><code class=\"structfield\">typacl</code> <code class=\"type\">aclitem[]</code></p>\n<p>访问权限，另请参阅<a class=\"xref\" href=\"/docs/18/ddl-priv.html\" title=\"5.8. 权限\">第 5.8 节</a></p>\n</td>\n</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<div class=\"note\">\n<h3 class=\"title\" lang=\"zh\">注意</h3>\n<p lang=\"zh\">对于系统表中使用的固定宽度类型，关键的是在<code class=\"structname\">pg_type</code>中定义的大小和对齐与编译器在表示表行的结构体中布局列的方式一致。</p>\n</div>\n<p lang=\"zh\"><a class=\"xref\" href=\"/docs/18/catalog-pg-type.html#CATALOG-TYPCATEGORY-TABLE\" title=\"表 52.65. typcategory 代码\">表 52.65</a>列出了<code class=\"structfield\">typcategory</code>的系统定义值。任何未来对此列表的增加都将是大写ASCII字母。所有其他ASCII字符都保留给用户定义的类别。</p>\n<div class=\"table\" id=\"CATALOG-TYPCATEGORY-TABLE\">\n<p class=\"title\" lang=\"zh\"><strong>表 52.65. <code class=\"structfield\">typcategory</code> 代码</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th lang=\"zh\">代码</th>\n<th lang=\"zh\">类别</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"literal\">A</code></td>\n<td lang=\"zh\">数组类型</td>\n</tr>\n<tr>\n<td><code class=\"literal\">B</code></td>\n<td lang=\"zh\">布尔类型</td>\n</tr>\n<tr>\n<td><code class=\"literal\">C</code></td>\n<td lang=\"zh\">复合类型</td>\n</tr>\n<tr>\n<td><code class=\"literal\">D</code></td>\n<td lang=\"zh\">日期/时间类型</td>\n</tr>\n<tr>\n<td><code class=\"literal\">E</code></td>\n<td lang=\"zh\">枚举类型</td>\n</tr>\n<tr>\n<td><code class=\"literal\">G</code></td>\n<td lang=\"zh\">几何类型</td>\n</tr>\n<tr>\n<td><code class=\"literal\">I</code></td>\n<td lang=\"zh\">网络地址类型</td>\n</tr>\n<tr>\n<td><code class=\"literal\">N</code></td>\n<td lang=\"zh\">数值类型</td>\n</tr>\n<tr>\n<td><code class=\"literal\">P</code></td>\n<td lang=\"zh\">伪类型</td>\n</tr>\n<tr>\n<td><code class=\"literal\">R</code></td>\n<td lang=\"zh\">范围类型</td>\n</tr>\n<tr>\n<td><code class=\"literal\">S</code></td>\n<td lang=\"zh\">字符串类型</td>\n</tr>\n<tr>\n<td><code class=\"literal\">T</code></td>\n<td lang=\"zh\">时间间隔类型</td>\n</tr>\n<tr>\n<td><code class=\"literal\">U</code></td>\n<td lang=\"zh\">用户定义类型</td>\n</tr>\n<tr>\n<td><code class=\"literal\">V</code></td>\n<td lang=\"zh\">位字符串类型</td>\n</tr>\n<tr>\n<td><code class=\"literal\">X</code></td>\n<td lang=\"zh\"><code class=\"type\">unknown</code> 类型</td>\n</tr>\n<tr>\n<td><code class=\"literal\">Z</code></td>\n<td lang=\"zh\">内部使用类型</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n</div>", "manual_path": "catalog-pg-type.html", "localization": {"status": "complete", "sources": [{"url": "/docs/18/catalog-pg-type.html", "method": "same-major semantic node", "sha256": "d058a9fbc71b6818121baea9b35c974403a553664ee052c5a8f50588d48ae5de", "language": "zh", "matched_nodes": ["#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[0]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[10]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[11]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[12]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[13]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[14]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[15]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[16]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[17]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[18]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[19]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[1]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[20]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[21]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[22]/td[0]/div[2]/ul[0]/li[0]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[22]/td[0]/p[1]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[23]/td[0]/div[2]/ul[0]/li[0]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[23]/td[0]/div[2]/ul[0]/li[1]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[23]/td[0]/div[2]/ul[0]/li[2]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[23]/td[0]/div[2]/ul[0]/li[3]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[23]/td[0]/p[3]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[24]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[25]/td[0]/p[0]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[26]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[27]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[28]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[29]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[2]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[30]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[31]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[3]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[6]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[7]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[8]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/tbody[2]/tr[9]", "#CATALOG-PG-TYPE/div[3]/div[1]/table[0]/thead[1]", "#CATALOG-PG-TYPE/div[3]/p[0]", "#CATALOG-PG-TYPE/div[5]/h3[0]", "#CATALOG-PG-TYPE/div[5]/p[1]", "#CATALOG-PG-TYPE/div[7]/div[1]/table[0]/tbody[2]/tr[0]/td[1]", "#CATALOG-PG-TYPE/div[7]/div[1]/table[0]/tbody[2]/tr[10]/td[1]", "#CATALOG-PG-TYPE/div[7]/div[1]/table[0]/tbody[2]/tr[11]/td[1]", "#CATALOG-PG-TYPE/div[7]/div[1]/table[0]/tbody[2]/tr[12]/td[1]", "#CATALOG-PG-TYPE/div[7]/div[1]/table[0]/tbody[2]/tr[13]/td[1]", "#CATALOG-PG-TYPE/div[7]/div[1]/table[0]/tbody[2]/tr[14]/td[1]", "#CATALOG-PG-TYPE/div[7]/div[1]/table[0]/tbody[2]/tr[15]/td[1]", "#CATALOG-PG-TYPE/div[7]/div[1]/table[0]/tbody[2]/tr[1]/td[1]", "#CATALOG-PG-TYPE/div[7]/div[1]/table[0]/tbody[2]/tr[2]/td[1]", "#CATALOG-PG-TYPE/div[7]/div[1]/table[0]/tbody[2]/tr[3]/td[1]", "#CATALOG-PG-TYPE/div[7]/div[1]/table[0]/tbody[2]/tr[4]/td[1]", "#CATALOG-PG-TYPE/div[7]/div[1]/table[0]/tbody[2]/tr[5]/td[1]", "#CATALOG-PG-TYPE/div[7]/div[1]/table[0]/tbody[2]/tr[6]/td[1]", "#CATALOG-PG-TYPE/div[7]/div[1]/table[0]/tbody[2]/tr[7]/td[1]", "#CATALOG-PG-TYPE/div[7]/div[1]/table[0]/tbody[2]/tr[9]/td[1]", "#CATALOG-PG-TYPE/div[7]/div[1]/table[0]/thead[1]/tr[0]/th[0]", "#CATALOG-PG-TYPE/div[7]/div[1]/table[0]/thead[1]/tr[0]/th[1]", "#CATALOG-PG-TYPE/div[7]/p[0]", "#CATALOG-PG-TYPE/p[2]", "#CATALOG-PG-TYPE/p[6]"]}], "language": "zh", "original_text": {"/versions/18/description/0": "array of int2, used in system tables", "/versions/18/facts/0/label": "Catalog name", "/versions/18/facts/1/label": "Type OID", "/versions/18/facts/2/label": "Type kind", "/versions/18/facts/2/value": "Base type", "/versions/18/facts/3/label": "Declared length", "/versions/18/facts/3/value": "Variable length (varlena)", "/versions/18/facts/4/label": "Storage strategy", "/versions/18/facts/5/label": "Input function", "/versions/18/facts/6/label": "Output function", "/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": "9b2a7f6140b30d5d33586d574aa36be2b670e448bd3909d1a0a2fa7f29113188"}, "comparison_data": {"casts": [], "facts": [{"label": "Catalog name", "value": "pg_catalog.int2vector"}, {"label": "Declared length", "value": "Variable length (varlena)"}, {"label": "Input function", "value": "int2vectorin"}, {"label": "Output function", "value": "int2vectorout"}, {"label": "Storage strategy", "value": "plain"}, {"label": "Type OID", "value": "22"}, {"label": "Type kind", "value": "Base type"}], "ranges": [], "aliases": [], "catalog": {"typacl": "_null_", "typlen": "-1", "typelem": "int2", "typname": "int2vector", "typsend": "int2vectorsend", "typtype": "b", "typalign": "i", "typarray": "_int2vector", "typbyval": "f", "typdelim": ",", "typinput": "int2vectorin", "typmodin": "-", "typndims": "0", "typrelid": "0", "typmodout": "-", "typoutput": "int2vectorout", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "int2vectorrecv", "typstorage": "p", "typbasetype": "0", "typcategory": "A", "typcollation": "0", "typisdefined": "t", "typsubscript": "array_subscript_handler", "typdefaultbin": "_null_", "typispreferred": "f", "array_type_name": "_int2vector"}, "operators": [], "operator_classes": []}, "comparison_hash": "fe93b9d8661128084d7da178772bdf46eb54197d28ad71542ab6714c0e0455b6", "manual_language": "zh", "operator_classes": [], "manual_documentation": "catalog schema only"}, "from": "17", "comparison": {"available": true, "changes": [], "prose_changed": true}}