{"Entry":{"collection":"type","key":"smgr","name":"smgr","aliases":[],"metadata":{"aliases":[],"category":"Other built-in types","content_hash":"07808ee785089e8e39c9d97969c2e664d2188d4aecf179f393af89db80b8b7fd","imported_at":"2026-09-30T00:40:36.675959+08:00","name":"smgr","name_zh":"","slug":"smgr","summary":"storage manager"}},"Definition":{"Collection":"type","Key":"smgr","SourceDatabase":"center","Version":"11","SourceTable":"data_type","SourceKey":"smgr","SourceRevision":"2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0","Facts":{"aliases":[],"casts":[],"catalog":{"array_type_name":"","array_type_oid":"0","descr":"storage manager","oid":"210","typacl":"_null_","typalign":"s","typanalyze":"-","typarray":"0","typbasetype":"0","typbyval":"t","typcategory":"U","typcollation":"0","typdefault":"_null_","typdefaultbin":"_null_","typdelim":"','","typelem":"0","typinput":"smgrin","typisdefined":"t","typispreferred":"f","typlen":"2","typmodin":"-","typmodout":"-","typname":"smgr","typnamespace":"PGNSP","typndims":"0","typnotnull":"f","typoutput":"smgrout","typowner":"PGUID","typreceive":"-","typrelid":"0","typsend":"-","typstorage":"p","typtype":"b","typtypmod":"-1"},"comparison_data":{"aliases":[],"casts":[],"catalog":{"array_type_name":"","typacl":"_null_","typalign":"s","typanalyze":"-","typarray":"","typbasetype":"0","typbyval":"t","typcategory":"U","typcollation":"0","typdefault":"_null_","typdefaultbin":"_null_","typdelim":",","typelem":"0","typinput":"smgrin","typisdefined":"t","typispreferred":"f","typlen":"2","typmodin":"-","typmodout":"-","typname":"smgr","typndims":"0","typnotnull":"f","typoutput":"smgrout","typreceive":"-","typrelid":"0","typsend":"-","typstorage":"p","typtype":"b","typtypmod":"-1"},"facts":[{"label":"Catalog name","value":"pg_catalog.smgr"},{"label":"Declared length","value":"2 bytes"},{"label":"Input function","value":"smgrin"},{"label":"Output function","value":"smgrout"},{"label":"Storage strategy","value":"plain"},{"label":"Type OID","value":"210"},{"label":"Type kind","value":"Base type"}],"operator_classes":[],"operators":[],"ranges":[]},"comparison_hash":"8d92521a46768f583818d267f59cf0577e5a0bfd36e1e1fe5458d5e3b4eef07d","coverage":"source inventory; exact declared input types for operator classes","description":["storage manager"],"facts":[{"label":"Catalog name","value":"pg_catalog.smgr"},{"label":"Type OID","value":"210"},{"label":"Type kind","value":"Base type"},{"label":"Declared length","value":"2 bytes"},{"label":"Storage strategy","value":"plain"},{"label":"Input function","value":"smgrin"},{"label":"Output function","value":"smgrout"}],"manual_documentation":"catalog schema only","manual_html":"\u003cdiv class=\"sect1\" id=\"CATALOG-PG-TYPE\"\u003e\n\u003cdiv class=\"titlepage\"\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003ch2 class=\"title\"\u003e52.62. \u003ccode class=\"structname\"\u003epg_type\u003c/code\u003e\u003c/h2\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cp\u003eThe catalog \u003ccode class=\"structname\"\u003epg_type\u003c/code\u003e stores information about data types. Base types and enum types (scalar types) are created with \u003ca class=\"xref\" href=\"/docs/11/sql-createtype.html\" title=\"CREATE TYPE\"\u003e\u003cspan class=\"refentrytitle\"\u003eCREATE TYPE\u003c/span\u003e\u003c/a\u003e, and domains with \u003ca class=\"xref\" href=\"/docs/11/sql-createdomain.html\" title=\"CREATE DOMAIN\"\u003e\u003cspan class=\"refentrytitle\"\u003eCREATE DOMAIN\u003c/span\u003e\u003c/a\u003e. A composite type is automatically created for each table in the database, to represent the row structure of the table. It is also possible to create composite types with \u003ccode class=\"command\"\u003eCREATE TYPE AS\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"table\" id=\"id-1.10.4.64.4\"\u003e\n\u003cp class=\"title\"\u003e\u003cstrong\u003eTable 52.62. \u003ccode class=\"structname\"\u003epg_type\u003c/code\u003e Columns\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"table-contents\"\u003e\n\u003ctable class=\"table\"\u003e\n\n\n\n\n\n\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eName\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eReferences\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=\"structfield\"\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eRow identifier (hidden attribute; must be explicitly selected)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypname\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003ename\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eData type name\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypnamespace\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-namespace.html\" title=\"52.32. pg_namespace\"\u003e\u003ccode class=\"structname\"\u003epg_namespace\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eThe OID of the namespace that contains this type\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypowner\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-authid.html\" title=\"52.8. pg_authid\"\u003e\u003ccode class=\"structname\"\u003epg_authid\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eOwner of the type\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etyplen\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eint2\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eFor a fixed-size type, \u003ccode class=\"structfield\"\u003etyplen\u003c/code\u003e is the number of bytes in the internal representation of the type. But for a variable-length type, \u003ccode class=\"structfield\"\u003etyplen\u003c/code\u003e is negative. -1 indicates a \u003cspan class=\"quote\"\u003e“\u003cspan class=\"quote\"\u003evarlena\u003c/span\u003e”\u003c/span\u003e type (one that has a length word), -2 indicates a null-terminated C string.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypbyval\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003ebool\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypbyval\u003c/code\u003e determines whether internal routines pass a value of this type by value or by reference. \u003ccode class=\"structfield\"\u003etypbyval\u003c/code\u003e had better be false if \u003ccode class=\"structfield\"\u003etyplen\u003c/code\u003e is not 1, 2, or 4 (or 8 on machines where Datum is 8 bytes). Variable-length types are always passed by reference. Note that \u003ccode class=\"structfield\"\u003etypbyval\u003c/code\u003e can be false even if the length would allow pass-by-value.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etyptype\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003echar\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etyptype\u003c/code\u003e is \u003ccode class=\"literal\"\u003eb\u003c/code\u003e for a base type, \u003ccode class=\"literal\"\u003ec\u003c/code\u003e for a composite type (e.g., a table's row type), \u003ccode class=\"literal\"\u003ed\u003c/code\u003e for a domain, \u003ccode class=\"literal\"\u003ee\u003c/code\u003e for an enum type, \u003ccode class=\"literal\"\u003ep\u003c/code\u003e for a pseudo-type, or \u003ccode class=\"literal\"\u003er\u003c/code\u003e for a range type. See also \u003ccode class=\"structfield\"\u003etyprelid\u003c/code\u003e and \u003ccode class=\"structfield\"\u003etypbasetype\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypcategory\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003echar\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypcategory\u003c/code\u003e is an arbitrary classification of data types that is used by the parser to determine which implicit casts should be \u003cspan class=\"quote\"\u003e“\u003cspan class=\"quote\"\u003epreferred\u003c/span\u003e”\u003c/span\u003e. See \u003ca class=\"xref\" href=\"/docs/11/catalog-pg-type.html#CATALOG-TYPCATEGORY-TABLE\" title=\"Table 52.63. typcategory Codes\"\u003eTable 52.63\u003c/a\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypispreferred\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003ebool\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eTrue if the type is a preferred cast target within its \u003ccode class=\"structfield\"\u003etypcategory\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypisdefined\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003ebool\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eTrue if the type is defined, false if this is a placeholder entry for a not-yet-defined type. When \u003ccode class=\"structfield\"\u003etypisdefined\u003c/code\u003e is false, nothing except the type name, namespace, and OID can be relied on.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypdelim\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003echar\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eCharacter that separates two values of this type when parsing array input. Note that the delimiter is associated with the array element data type, not the array data type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etyprelid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-class.html\" title=\"52.11. pg_class\"\u003e\u003ccode class=\"structname\"\u003epg_class\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIf this is a composite type (see \u003ccode class=\"structfield\"\u003etyptype\u003c/code\u003e), then this column points to the \u003ccode class=\"structname\"\u003epg_class\u003c/code\u003e entry that defines the corresponding table. (For a free-standing composite type, the \u003ccode class=\"structname\"\u003epg_class\u003c/code\u003e entry doesn't really represent a table, but it is needed anyway for the type's \u003ccode class=\"structname\"\u003epg_attribute\u003c/code\u003e entries to link to.) Zero for non-composite types.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypelem\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-type.html\" title=\"52.62. pg_type\"\u003e\u003ccode class=\"structname\"\u003epg_type\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIf \u003ccode class=\"structfield\"\u003etypelem\u003c/code\u003e is not 0 then it identifies another row in \u003ccode class=\"structname\"\u003epg_type\u003c/code\u003e. The current type can then be subscripted like an array yielding values of type \u003ccode class=\"structfield\"\u003etypelem\u003c/code\u003e. A \u003cspan class=\"quote\"\u003e“\u003cspan class=\"quote\"\u003etrue\u003c/span\u003e”\u003c/span\u003e array type is variable length (\u003ccode class=\"structfield\"\u003etyplen\u003c/code\u003e = -1), but some fixed-length (\u003ccode class=\"structfield\"\u003etyplen\u003c/code\u003e \u0026gt; 0) types also have nonzero \u003ccode class=\"structfield\"\u003etypelem\u003c/code\u003e, for example \u003ccode class=\"type\"\u003ename\u003c/code\u003e and \u003ccode class=\"type\"\u003epoint\u003c/code\u003e. If a fixed-length type has a \u003ccode class=\"structfield\"\u003etypelem\u003c/code\u003e then its internal representation must be some number of values of the \u003ccode class=\"structfield\"\u003etypelem\u003c/code\u003e data type with no other data. Variable-length array types have a header defined by the array subroutines.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etyparray\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-type.html\" title=\"52.62. pg_type\"\u003e\u003ccode class=\"structname\"\u003epg_type\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIf \u003ccode class=\"structfield\"\u003etyparray\u003c/code\u003e is not 0 then it identifies another row in \u003ccode class=\"structname\"\u003epg_type\u003c/code\u003e, which is the \u003cspan class=\"quote\"\u003e“\u003cspan class=\"quote\"\u003etrue\u003c/span\u003e”\u003c/span\u003e array type having this type as element\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypinput\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-proc.html\" title=\"52.39. pg_proc\"\u003e\u003ccode class=\"structname\"\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eInput conversion function (text format)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypoutput\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-proc.html\" title=\"52.39. pg_proc\"\u003e\u003ccode class=\"structname\"\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eOutput conversion function (text format)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypreceive\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-proc.html\" title=\"52.39. pg_proc\"\u003e\u003ccode class=\"structname\"\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eInput conversion function (binary format), or 0 if none\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypsend\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-proc.html\" title=\"52.39. pg_proc\"\u003e\u003ccode class=\"structname\"\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eOutput conversion function (binary format), or 0 if none\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypmodin\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-proc.html\" title=\"52.39. pg_proc\"\u003e\u003ccode class=\"structname\"\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eType modifier input function, or 0 if type does not support modifiers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypmodout\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-proc.html\" title=\"52.39. pg_proc\"\u003e\u003ccode class=\"structname\"\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eType modifier output function, or 0 to use the standard format\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypanalyze\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-proc.html\" title=\"52.39. pg_proc\"\u003e\u003ccode class=\"structname\"\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eCustom \u003ccode class=\"command\"\u003eANALYZE\u003c/code\u003e function, or 0 to use the standard function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypalign\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003echar\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003ccode class=\"structfield\"\u003etypalign\u003c/code\u003e is the alignment required when storing a value of this type. It applies to storage on disk as well as most representations of the value inside \u003cspan class=\"productname\"\u003ePostgreSQL\u003c/span\u003e. When multiple values are stored consecutively, such as in the representation of a complete row on disk, padding is inserted before a datum of this type so that it begins on the specified boundary. The alignment reference is the beginning of the first datum in the sequence.\u003c/p\u003e\n\u003cp\u003ePossible values are:\u003c/p\u003e\n\u003cdiv class=\"itemizedlist\"\u003e\n\u003cul class=\"itemizedlist\"\u003e\n\u003cli class=\"listitem\"\u003e\n\u003cp\u003e\u003ccode class=\"literal\"\u003ec\u003c/code\u003e = \u003ccode class=\"type\"\u003echar\u003c/code\u003e alignment, i.e., no alignment needed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli class=\"listitem\"\u003e\n\u003cp\u003e\u003ccode class=\"literal\"\u003es\u003c/code\u003e = \u003ccode class=\"type\"\u003eshort\u003c/code\u003e alignment (2 bytes on most machines).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli class=\"listitem\"\u003e\n\u003cp\u003e\u003ccode class=\"literal\"\u003ei\u003c/code\u003e = \u003ccode class=\"type\"\u003eint\u003c/code\u003e alignment (4 bytes on most machines).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli class=\"listitem\"\u003e\n\u003cp\u003e\u003ccode class=\"literal\"\u003ed\u003c/code\u003e = \u003ccode class=\"type\"\u003edouble\u003c/code\u003e alignment (8 bytes on many machines, but by no means all).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n\u003cdiv class=\"note\"\u003e\n\u003ch3 class=\"title\"\u003eNote\u003c/h3\u003e\n\u003cp\u003eFor types used in system tables, it is critical that the size and alignment defined in \u003ccode class=\"structname\"\u003epg_type\u003c/code\u003e agree with the way that the compiler will lay out the column in a structure representing a table row.\u003c/p\u003e\n\u003c/div\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypstorage\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003echar\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003ccode class=\"structfield\"\u003etypstorage\u003c/code\u003e tells for varlena types (those with \u003ccode class=\"structfield\"\u003etyplen\u003c/code\u003e = -1) if the type is prepared for toasting and what the default strategy for attributes of this type should be. Possible values are\u003c/p\u003e\n\u003cdiv class=\"itemizedlist\"\u003e\n\u003cul class=\"itemizedlist\"\u003e\n\u003cli class=\"listitem\"\u003e\n\u003cp\u003e\u003ccode class=\"literal\"\u003ep\u003c/code\u003e: Value must always be stored plain.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli class=\"listitem\"\u003e\n\u003cp\u003e\u003ccode class=\"literal\"\u003ee\u003c/code\u003e: Value can be stored in a \u003cspan class=\"quote\"\u003e“\u003cspan class=\"quote\"\u003esecondary\u003c/span\u003e”\u003c/span\u003e relation (if relation has one, see \u003ccode class=\"literal\"\u003epg_class.reltoastrelid\u003c/code\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli class=\"listitem\"\u003e\n\u003cp\u003e\u003ccode class=\"literal\"\u003em\u003c/code\u003e: Value can be stored compressed inline.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli class=\"listitem\"\u003e\n\u003cp\u003e\u003ccode class=\"literal\"\u003ex\u003c/code\u003e: Value can be stored compressed inline or stored in \u003cspan class=\"quote\"\u003e“\u003cspan class=\"quote\"\u003esecondary\u003c/span\u003e”\u003c/span\u003e storage.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n\u003cp\u003eNote that \u003ccode class=\"literal\"\u003em\u003c/code\u003e columns can also be moved out to secondary storage, but only as a last resort (\u003ccode class=\"literal\"\u003ee\u003c/code\u003e and \u003ccode class=\"literal\"\u003ex\u003c/code\u003e columns are moved first).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypnotnull\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003ebool\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003ccode class=\"structfield\"\u003etypnotnull\u003c/code\u003e represents a not-null constraint on a type. Used for domains only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypbasetype\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-type.html\" title=\"52.62. pg_type\"\u003e\u003ccode class=\"structname\"\u003epg_type\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eIf this is a domain (see \u003ccode class=\"structfield\"\u003etyptype\u003c/code\u003e), then \u003ccode class=\"structfield\"\u003etypbasetype\u003c/code\u003e identifies the type that this one is based on. Zero if this type is not a domain.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etyptypmod\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eint4\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eDomains use \u003ccode class=\"structfield\"\u003etyptypmod\u003c/code\u003e to record the \u003ccode class=\"literal\"\u003etypmod\u003c/code\u003e to be applied to their base type (-1 if base type does not use a \u003ccode class=\"literal\"\u003etypmod\u003c/code\u003e). -1 if this type is not a domain.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypndims\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eint4\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003ccode class=\"structfield\"\u003etypndims\u003c/code\u003e is the number of array dimensions for a domain over an array (that is, \u003ccode class=\"structfield\"\u003etypbasetype\u003c/code\u003e is an array type). Zero for types other than domains over array types.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypcollation\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-collation.html\" title=\"52.12. pg_collation\"\u003e\u003ccode class=\"structname\"\u003epg_collation\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003ccode class=\"structfield\"\u003etypcollation\u003c/code\u003e specifies the collation of the type. If the type does not support collations, this will be zero. A base type that supports collations will have \u003ccode class=\"symbol\"\u003eDEFAULT_COLLATION_OID\u003c/code\u003e here. A domain over a collatable type can have some other collation OID, if one was specified for the domain.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypdefaultbin\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003epg_node_tree\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eIf \u003ccode class=\"structfield\"\u003etypdefaultbin\u003c/code\u003e is not null, it is the \u003ccode class=\"function\"\u003enodeToString()\u003c/code\u003e representation of a default expression for the type. This is only used for domains.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypdefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003etext\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003ccode class=\"structfield\"\u003etypdefault\u003c/code\u003e is null if the type has no associated default value. If \u003ccode class=\"structfield\"\u003etypdefaultbin\u003c/code\u003e is not null, \u003ccode class=\"structfield\"\u003etypdefault\u003c/code\u003e must contain a human-readable version of the default expression represented by \u003ccode class=\"structfield\"\u003etypdefaultbin\u003c/code\u003e. If \u003ccode class=\"structfield\"\u003etypdefaultbin\u003c/code\u003e is null and \u003ccode class=\"structfield\"\u003etypdefault\u003c/code\u003e is not, then \u003ccode class=\"structfield\"\u003etypdefault\u003c/code\u003e is the external representation of the type's default value, which can be fed to the type's input converter to produce a constant.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypacl\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eaclitem[]\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eAccess privileges; see \u003ca class=\"xref\" href=\"/docs/11/sql-grant.html\" title=\"GRANT\"\u003e\u003cspan class=\"refentrytitle\"\u003eGRANT\u003c/span\u003e\u003c/a\u003e and \u003ca class=\"xref\" href=\"/docs/11/sql-revoke.html\" title=\"REVOKE\"\u003e\u003cspan class=\"refentrytitle\"\u003eREVOKE\u003c/span\u003e\u003c/a\u003e for details\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\u003e\u003ca class=\"xref\" href=\"/docs/11/catalog-pg-type.html#CATALOG-TYPCATEGORY-TABLE\" title=\"Table 52.63. typcategory Codes\"\u003eTable 52.63\u003c/a\u003e lists the system-defined values of \u003ccode class=\"structfield\"\u003etypcategory\u003c/code\u003e. Any future additions to this list will also be upper-case ASCII letters. All other ASCII characters are reserved for user-defined categories.\u003c/p\u003e\n\u003cdiv class=\"table\" id=\"CATALOG-TYPCATEGORY-TABLE\"\u003e\n\u003cp class=\"title\"\u003e\u003cstrong\u003eTable 52.63. \u003ccode class=\"structfield\"\u003etypcategory\u003c/code\u003e Codes\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\u003eCode\u003c/th\u003e\n\u003cth\u003eCategory\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eA\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eArray types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eB\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eBoolean types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eC\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eComposite types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eD\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eDate/time types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eEnum types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eG\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eGeometric types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eI\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eNetwork address types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eN\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eNumeric types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eP\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ePseudo-types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eR\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eRange types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eS\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eString types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eT\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eTimespan types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eU\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eUser-defined types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eV\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eBit-string types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eX\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eunknown\u003c/code\u003e type\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\u003c/div\u003e","manual_path":"catalog-pg-type.html","operator_classes":[],"operators":[],"ranges":[],"related":[{"label":"pg_type catalog","url":"/wiki/catalog/pg_type/?v=11"},{"label":"pg_cast catalog","url":"/wiki/catalog/pg_cast/?v=11"},{"label":"pg_operator catalog","url":"/wiki/catalog/pg_operator/?v=11"},{"label":"pg_opclass catalog","url":"/wiki/catalog/pg_opclass/?v=11"},{"label":"Arrays","url":"/wiki/type/arrays/?v=11"}],"release":{"channel":"historical","label":"11.22","major":"11","manual_sha256":{"arrays.html":"ae1d229901017914c890c2a829236404c16380563ffe134809bc65912122e86a","catalog-pg-type.html":"60543c66e09294bcdb864736356c36027f1dd20c935fbd2436f52635cb6d0732","datatype-binary.html":"fbf53867dc1deb017063e71db284e07e959bcb6a24f78aa28cf8017f6d94db5f","datatype-bit.html":"3a1b043fec9e399faf7aa63ea1c8b3b6dde3422c33e33757e630be021cad567f","datatype-boolean.html":"9fdfa960d8bf705429cd4d1b1720ca762d3e2c969f92ca08236ec5698fdc9c40","datatype-character.html":"fbc5059410b8d190a9a7a37e0d46cf23c6a1f49edaf4b9b1ae3fb088f57c96f2","datatype-datetime.html":"4779c2bc742e5a15a0296afa6eba9538fe6d68d0532bf4d9dc36032a37b52fd8","datatype-enum.html":"be378382da1cfc6125d35f5def2c967fbb0bce76684932341b2bd51cd261e1d0","datatype-geometric.html":"e1b86acdf7a239728eed6df6aae1a0cecad00841f083a1a74725d8b3223426df","datatype-json.html":"1e2d80f721b0f8adacfae58e63c4a673d204669d9ad175a7f40abf37c450d30b","datatype-money.html":"777fd1f20a4bb7d510faed0312c18d7377c44027b21af0a10b92962df68f17d5","datatype-net-types.html":"290d0160b6c2a05a88f8a8145267dc8eba268c137bacfc9afe67de63f7a6226a","datatype-numeric.html":"90b8a356e7c3fd23dc74a81432e5545de291217b1d32ac291cea1c710b2e3c0c","datatype-oid.html":"a1cc37e5ce5c2d09ce06539704c618a2d418f54eaaa35365e8c547d2aaa06311","datatype-pg-lsn.html":"5920eeb1e7608252e4f6122594c7aed67866e14bfd464146e7b5e450fb9344c6","datatype-pseudo.html":"5085c889036f76a9e4c26169203663977bef1a5287f91c74598d98f0d536f6c1","datatype-textsearch.html":"aefd0359a43b3b4360829f2ec218880a59150a36bd5af2d2e788b7e31e180afd","datatype-uuid.html":"c8e2b4e82b9db756a92fe140fd90956413090f49763a6f40538a2e0761a85c23","datatype-xml.html":"7497bc3d9f9022a1b5ed51215f9fe07206a39267fec1d356acfa6a60e6c21f10","datatype.html":"a01aadca02b2cf00288e1c2986772c52220d08d37564114e1be64a5aafc238e9","domains.html":"9887c45314ef371f16cb56eb2ea1d12dc59c06ac5c971f740c36ca4a35159ac4","functions-info.html":"a97d909f4b6e1dedc28eaffbe33e35bf05415819e5fc857fe58972904f1ca553","rangetypes.html":"568828acd0a3ec660d3876a44403d7b16a9739f24afa54345c370be6ebf0b089","rowtypes.html":"676899d284c5030df5ddf4fe6e196eb35a54f79474f8c0a322f69a7fb0ef151c","sql-createdomain.html":"b68115df15e5be970a5dc7c2d48e594a3c5b0c207745b4067bdfde8c822ad51d"},"ref":"https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2","revision":"2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0","source_files":{"doc/src/sgml/datatype.sgml":"17c31da06a25a15fb94782a26d2e85b8072288ade8801bb46b3e7df026ef9d83","src/include/catalog/pg_am.dat":"4f8aee64f83bea639a5fb0a75390626952751c03d8364193d19bfe9af2c9045c","src/include/catalog/pg_am.h":"1a18a77e727497c52437327eac3a7061c1e00978e030358d7048fb5c6c43eb75","src/include/catalog/pg_cast.dat":"9edeba5c4684bb71b5b4ac9fb840d95c1b0ce4416f80d6317c538a2d5b0e7244","src/include/catalog/pg_cast.h":"d7f2b7c737e166fe97750f8b0e8aeee1503e80061e7df1c4fbd9a3194e6a0b56","src/include/catalog/pg_opclass.dat":"aa04fcdbb54d2e884ab5309fa8a7cbd59c5ece2a9621b193a5596ffd88a0cbc9","src/include/catalog/pg_opclass.h":"fd1735cc127fa7c6827e578eb94cd4112beec5637ee49bd298077d30236c6db7","src/include/catalog/pg_operator.dat":"5d1cb4ae10ab5b6b002ff1a5cbdb4d7531838fbf4d195ae99b595914afa6e5bb","src/include/catalog/pg_operator.h":"5490f4c31fdb41b45dd29787687c2f51ecb5923936314a35212434c90c57a78a","src/include/catalog/pg_opfamily.dat":"e696bbceebe66401277f5f02b7f3f8a700227196208562c3cf08fe6f8feef046","src/include/catalog/pg_opfamily.h":"23751eaa0f8af9617f5797f846a8417fe4c1bc4165b53879a83fa98e3c0a44f2","src/include/catalog/pg_proc.dat":"dce75cd27d1940714190c546a6d3690ad6757e3d9ec17d9db7edad868c0b469e","src/include/catalog/pg_proc.h":"78937bf6e4836d5335f73085a046f3bc574039eb9b7f6172aa013b1c936378ab","src/include/catalog/pg_range.dat":"30a5baeaa39f631d702d034033190785c112c289719cbffc5f06ae4a41252ecc","src/include/catalog/pg_range.h":"1498c8a17de81ba44e4d25319fa8a1b9299185a68530bc3fa0c039d51c10014e","src/include/catalog/pg_type.dat":"f6e5f52a90aa6be994e73ea0d239c1bbe923aa5da0035452fbb7de0a59b04583","src/include/catalog/pg_type.h":"1cd673ed713a71606625df0ed457e3b19d00ca56674011eafefdf3653de42436"},"source_sha256":"2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"},"sections":[],"signature":"smgr","sources":[{"label":"PostgreSQL 11 English manual","path":"catalog-pg-type.html","sha256":"60543c66e09294bcdb864736356c36027f1dd20c935fbd2436f52635cb6d0732","url":"/docs/11/catalog-pg-type.html"},{"label":"Matching PostgreSQL source archive","sha256":"2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0","url":"https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2"}]},"ManualEvidence":{"manual_path":"catalog-pg-type.html","release":{"channel":"historical","label":"11.22","major":"11","manual_sha256":{"arrays.html":"ae1d229901017914c890c2a829236404c16380563ffe134809bc65912122e86a","catalog-pg-type.html":"60543c66e09294bcdb864736356c36027f1dd20c935fbd2436f52635cb6d0732","datatype-binary.html":"fbf53867dc1deb017063e71db284e07e959bcb6a24f78aa28cf8017f6d94db5f","datatype-bit.html":"3a1b043fec9e399faf7aa63ea1c8b3b6dde3422c33e33757e630be021cad567f","datatype-boolean.html":"9fdfa960d8bf705429cd4d1b1720ca762d3e2c969f92ca08236ec5698fdc9c40","datatype-character.html":"fbc5059410b8d190a9a7a37e0d46cf23c6a1f49edaf4b9b1ae3fb088f57c96f2","datatype-datetime.html":"4779c2bc742e5a15a0296afa6eba9538fe6d68d0532bf4d9dc36032a37b52fd8","datatype-enum.html":"be378382da1cfc6125d35f5def2c967fbb0bce76684932341b2bd51cd261e1d0","datatype-geometric.html":"e1b86acdf7a239728eed6df6aae1a0cecad00841f083a1a74725d8b3223426df","datatype-json.html":"1e2d80f721b0f8adacfae58e63c4a673d204669d9ad175a7f40abf37c450d30b","datatype-money.html":"777fd1f20a4bb7d510faed0312c18d7377c44027b21af0a10b92962df68f17d5","datatype-net-types.html":"290d0160b6c2a05a88f8a8145267dc8eba268c137bacfc9afe67de63f7a6226a","datatype-numeric.html":"90b8a356e7c3fd23dc74a81432e5545de291217b1d32ac291cea1c710b2e3c0c","datatype-oid.html":"a1cc37e5ce5c2d09ce06539704c618a2d418f54eaaa35365e8c547d2aaa06311","datatype-pg-lsn.html":"5920eeb1e7608252e4f6122594c7aed67866e14bfd464146e7b5e450fb9344c6","datatype-pseudo.html":"5085c889036f76a9e4c26169203663977bef1a5287f91c74598d98f0d536f6c1","datatype-textsearch.html":"aefd0359a43b3b4360829f2ec218880a59150a36bd5af2d2e788b7e31e180afd","datatype-uuid.html":"c8e2b4e82b9db756a92fe140fd90956413090f49763a6f40538a2e0761a85c23","datatype-xml.html":"7497bc3d9f9022a1b5ed51215f9fe07206a39267fec1d356acfa6a60e6c21f10","datatype.html":"a01aadca02b2cf00288e1c2986772c52220d08d37564114e1be64a5aafc238e9","domains.html":"9887c45314ef371f16cb56eb2ea1d12dc59c06ac5c971f740c36ca4a35159ac4","functions-info.html":"a97d909f4b6e1dedc28eaffbe33e35bf05415819e5fc857fe58972904f1ca553","rangetypes.html":"568828acd0a3ec660d3876a44403d7b16a9739f24afa54345c370be6ebf0b089","rowtypes.html":"676899d284c5030df5ddf4fe6e196eb35a54f79474f8c0a322f69a7fb0ef151c","sql-createdomain.html":"b68115df15e5be970a5dc7c2d48e594a3c5b0c207745b4067bdfde8c822ad51d"},"ref":"https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2","revision":"2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0","source_files":{"doc/src/sgml/datatype.sgml":"17c31da06a25a15fb94782a26d2e85b8072288ade8801bb46b3e7df026ef9d83","src/include/catalog/pg_am.dat":"4f8aee64f83bea639a5fb0a75390626952751c03d8364193d19bfe9af2c9045c","src/include/catalog/pg_am.h":"1a18a77e727497c52437327eac3a7061c1e00978e030358d7048fb5c6c43eb75","src/include/catalog/pg_cast.dat":"9edeba5c4684bb71b5b4ac9fb840d95c1b0ce4416f80d6317c538a2d5b0e7244","src/include/catalog/pg_cast.h":"d7f2b7c737e166fe97750f8b0e8aeee1503e80061e7df1c4fbd9a3194e6a0b56","src/include/catalog/pg_opclass.dat":"aa04fcdbb54d2e884ab5309fa8a7cbd59c5ece2a9621b193a5596ffd88a0cbc9","src/include/catalog/pg_opclass.h":"fd1735cc127fa7c6827e578eb94cd4112beec5637ee49bd298077d30236c6db7","src/include/catalog/pg_operator.dat":"5d1cb4ae10ab5b6b002ff1a5cbdb4d7531838fbf4d195ae99b595914afa6e5bb","src/include/catalog/pg_operator.h":"5490f4c31fdb41b45dd29787687c2f51ecb5923936314a35212434c90c57a78a","src/include/catalog/pg_opfamily.dat":"e696bbceebe66401277f5f02b7f3f8a700227196208562c3cf08fe6f8feef046","src/include/catalog/pg_opfamily.h":"23751eaa0f8af9617f5797f846a8417fe4c1bc4165b53879a83fa98e3c0a44f2","src/include/catalog/pg_proc.dat":"dce75cd27d1940714190c546a6d3690ad6757e3d9ec17d9db7edad868c0b469e","src/include/catalog/pg_proc.h":"78937bf6e4836d5335f73085a046f3bc574039eb9b7f6172aa013b1c936378ab","src/include/catalog/pg_range.dat":"30a5baeaa39f631d702d034033190785c112c289719cbffc5f06ae4a41252ecc","src/include/catalog/pg_range.h":"1498c8a17de81ba44e4d25319fa8a1b9299185a68530bc3fa0c039d51c10014e","src/include/catalog/pg_type.dat":"f6e5f52a90aa6be994e73ea0d239c1bbe923aa5da0035452fbb7de0a59b04583","src/include/catalog/pg_type.h":"1cd673ed713a71606625df0ed457e3b19d00ca56674011eafefdf3653de42436"},"source_sha256":"2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"},"sources":[{"label":"PostgreSQL 11 English manual","path":"catalog-pg-type.html","sha256":"60543c66e09294bcdb864736356c36027f1dd20c935fbd2436f52635cb6d0732","url":"/docs/11/catalog-pg-type.html"},{"label":"Matching PostgreSQL source archive","sha256":"2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0","url":"https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2"}]},"MeasuredEvidence":{}},"Text":{"Collection":"type","Key":"smgr","SourceDatabase":"center","Version":"11","Locale":"en","Title":"smgr","Summary":"storage manager","BodyHTML":"\u003cdiv id=\"CATALOG-PG-TYPE\"\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003ch2\u003e52.62. \u003ccode\u003epg_type\u003c/code\u003e\u003c/h2\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cp\u003eThe catalog \u003ccode\u003epg_type\u003c/code\u003e stores information about data types. Base types and enum types (scalar types) are created with \u003ca href=\"/docs/11/sql-createtype.html\" title=\"CREATE TYPE\" rel=\"nofollow\"\u003e\u003cspan\u003eCREATE TYPE\u003c/span\u003e\u003c/a\u003e, and domains with \u003ca href=\"/docs/11/sql-createdomain.html\" title=\"CREATE DOMAIN\" rel=\"nofollow\"\u003e\u003cspan\u003eCREATE DOMAIN\u003c/span\u003e\u003c/a\u003e. A composite type is automatically created for each table in the database, to represent the row structure of the table. It is also possible to create composite types with \u003ccode\u003eCREATE TYPE AS\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv id=\"id-1.10.4.64.4\"\u003e\n\u003cp\u003e\u003cstrong\u003eTable 52.62. \u003ccode\u003epg_type\u003c/code\u003e Columns\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv\u003e\n\u003ctable\u003e\n\n\n\n\n\n\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eName\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eReferences\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\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eRow identifier (hidden attribute; must be explicitly selected)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypname\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eData type name\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypnamespace\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\u003ca href=\"/docs/11/catalog-pg-namespace.html\" rel=\"nofollow\"\u003e\u003ccode\u003epg_namespace\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eThe OID of the namespace that contains this type\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypowner\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\u003ca href=\"/docs/11/catalog-pg-authid.html\" rel=\"nofollow\"\u003e\u003ccode\u003epg_authid\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eOwner of the type\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etyplen\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eint2\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eFor a fixed-size type, \u003ccode\u003etyplen\u003c/code\u003e is the number of bytes in the internal representation of the type. But for a variable-length type, \u003ccode\u003etyplen\u003c/code\u003e is negative. -1 indicates a \u003cspan\u003e“\u003cspan\u003evarlena\u003c/span\u003e”\u003c/span\u003e type (one that has a length word), -2 indicates a null-terminated C string.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypbyval\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003etypbyval\u003c/code\u003e determines whether internal routines pass a value of this type by value or by reference. \u003ccode\u003etypbyval\u003c/code\u003e had better be false if \u003ccode\u003etyplen\u003c/code\u003e is not 1, 2, or 4 (or 8 on machines where Datum is 8 bytes). Variable-length types are always passed by reference. Note that \u003ccode\u003etypbyval\u003c/code\u003e can be false even if the length would allow pass-by-value.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etyptype\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003echar\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003etyptype\u003c/code\u003e is \u003ccode\u003eb\u003c/code\u003e for a base type, \u003ccode\u003ec\u003c/code\u003e for a composite type (e.g., a table\u0026#39;s row type), \u003ccode\u003ed\u003c/code\u003e for a domain, \u003ccode\u003ee\u003c/code\u003e for an enum type, \u003ccode\u003ep\u003c/code\u003e for a pseudo-type, or \u003ccode\u003er\u003c/code\u003e for a range type. See also \u003ccode\u003etyprelid\u003c/code\u003e and \u003ccode\u003etypbasetype\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypcategory\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003echar\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003etypcategory\u003c/code\u003e is an arbitrary classification of data types that is used by the parser to determine which implicit casts should be \u003cspan\u003e“\u003cspan\u003epreferred\u003c/span\u003e”\u003c/span\u003e. See \u003ca href=\"/docs/11/catalog-pg-type.html#CATALOG-TYPCATEGORY-TABLE\" rel=\"nofollow\"\u003eTable 52.63\u003c/a\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypispreferred\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eTrue if the type is a preferred cast target within its \u003ccode\u003etypcategory\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypisdefined\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eTrue if the type is defined, false if this is a placeholder entry for a not-yet-defined type. When \u003ccode\u003etypisdefined\u003c/code\u003e is false, nothing except the type name, namespace, and OID can be relied on.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypdelim\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003echar\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eCharacter that separates two values of this type when parsing array input. Note that the delimiter is associated with the array element data type, not the array data type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etyprelid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\u003ca href=\"/docs/11/catalog-pg-class.html\" rel=\"nofollow\"\u003e\u003ccode\u003epg_class\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIf this is a composite type (see \u003ccode\u003etyptype\u003c/code\u003e), then this column points to the \u003ccode\u003epg_class\u003c/code\u003e entry that defines the corresponding table. (For a free-standing composite type, the \u003ccode\u003epg_class\u003c/code\u003e entry doesn\u0026#39;t really represent a table, but it is needed anyway for the type\u0026#39;s \u003ccode\u003epg_attribute\u003c/code\u003e entries to link to.) Zero for non-composite types.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypelem\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\u003ca href=\"/docs/11/catalog-pg-type.html\" rel=\"nofollow\"\u003e\u003ccode\u003epg_type\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIf \u003ccode\u003etypelem\u003c/code\u003e is not 0 then it identifies another row in \u003ccode\u003epg_type\u003c/code\u003e. The current type can then be subscripted like an array yielding values of type \u003ccode\u003etypelem\u003c/code\u003e. A \u003cspan\u003e“\u003cspan\u003etrue\u003c/span\u003e”\u003c/span\u003e array type is variable length (\u003ccode\u003etyplen\u003c/code\u003e = -1), but some fixed-length (\u003ccode\u003etyplen\u003c/code\u003e \u0026gt; 0) types also have nonzero \u003ccode\u003etypelem\u003c/code\u003e, for example \u003ccode\u003ename\u003c/code\u003e and \u003ccode\u003epoint\u003c/code\u003e. If a fixed-length type has a \u003ccode\u003etypelem\u003c/code\u003e then its internal representation must be some number of values of the \u003ccode\u003etypelem\u003c/code\u003e data type with no other data. Variable-length array types have a header defined by the array subroutines.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etyparray\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\u003ca href=\"/docs/11/catalog-pg-type.html\" rel=\"nofollow\"\u003e\u003ccode\u003epg_type\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIf \u003ccode\u003etyparray\u003c/code\u003e is not 0 then it identifies another row in \u003ccode\u003epg_type\u003c/code\u003e, which is the \u003cspan\u003e“\u003cspan\u003etrue\u003c/span\u003e”\u003c/span\u003e array type having this type as element\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypinput\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\u003ca href=\"/docs/11/catalog-pg-proc.html\" rel=\"nofollow\"\u003e\u003ccode\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eInput conversion function (text format)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypoutput\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\u003ca href=\"/docs/11/catalog-pg-proc.html\" rel=\"nofollow\"\u003e\u003ccode\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eOutput conversion function (text format)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypreceive\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\u003ca href=\"/docs/11/catalog-pg-proc.html\" rel=\"nofollow\"\u003e\u003ccode\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eInput conversion function (binary format), or 0 if none\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypsend\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\u003ca href=\"/docs/11/catalog-pg-proc.html\" rel=\"nofollow\"\u003e\u003ccode\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eOutput conversion function (binary format), or 0 if none\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypmodin\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\u003ca href=\"/docs/11/catalog-pg-proc.html\" rel=\"nofollow\"\u003e\u003ccode\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eType modifier input function, or 0 if type does not support modifiers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypmodout\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\u003ca href=\"/docs/11/catalog-pg-proc.html\" rel=\"nofollow\"\u003e\u003ccode\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eType modifier output function, or 0 to use the standard format\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypanalyze\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\u003ca href=\"/docs/11/catalog-pg-proc.html\" rel=\"nofollow\"\u003e\u003ccode\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eCustom \u003ccode\u003eANALYZE\u003c/code\u003e function, or 0 to use the standard function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypalign\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003echar\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003ccode\u003etypalign\u003c/code\u003e is the alignment required when storing a value of this type. It applies to storage on disk as well as most representations of the value inside \u003cspan\u003ePostgreSQL\u003c/span\u003e. When multiple values are stored consecutively, such as in the representation of a complete row on disk, padding is inserted before a datum of this type so that it begins on the specified boundary. The alignment reference is the beginning of the first datum in the sequence.\u003c/p\u003e\n\u003cp\u003ePossible values are:\u003c/p\u003e\n\u003cdiv\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003ec\u003c/code\u003e = \u003ccode\u003echar\u003c/code\u003e alignment, i.e., no alignment needed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003es\u003c/code\u003e = \u003ccode\u003eshort\u003c/code\u003e alignment (2 bytes on most machines).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003ei\u003c/code\u003e = \u003ccode\u003eint\u003c/code\u003e alignment (4 bytes on most machines).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003ed\u003c/code\u003e = \u003ccode\u003edouble\u003c/code\u003e alignment (8 bytes on many machines, but by no means all).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003ch3\u003eNote\u003c/h3\u003e\n\u003cp\u003eFor types used in system tables, it is critical that the size and alignment defined in \u003ccode\u003epg_type\u003c/code\u003e agree with the way that the compiler will lay out the column in a structure representing a table row.\u003c/p\u003e\n\u003c/div\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypstorage\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003echar\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003ccode\u003etypstorage\u003c/code\u003e tells for varlena types (those with \u003ccode\u003etyplen\u003c/code\u003e = -1) if the type is prepared for toasting and what the default strategy for attributes of this type should be. Possible values are\u003c/p\u003e\n\u003cdiv\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003ep\u003c/code\u003e: Value must always be stored plain.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003ee\u003c/code\u003e: Value can be stored in a \u003cspan\u003e“\u003cspan\u003esecondary\u003c/span\u003e”\u003c/span\u003e relation (if relation has one, see \u003ccode\u003epg_class.reltoastrelid\u003c/code\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003em\u003c/code\u003e: Value can be stored compressed inline.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003ex\u003c/code\u003e: Value can be stored compressed inline or stored in \u003cspan\u003e“\u003cspan\u003esecondary\u003c/span\u003e”\u003c/span\u003e storage.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n\u003cp\u003eNote that \u003ccode\u003em\u003c/code\u003e columns can also be moved out to secondary storage, but only as a last resort (\u003ccode\u003ee\u003c/code\u003e and \u003ccode\u003ex\u003c/code\u003e columns are moved first).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypnotnull\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003ccode\u003etypnotnull\u003c/code\u003e represents a not-null constraint on a type. Used for domains only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypbasetype\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\u003ca href=\"/docs/11/catalog-pg-type.html\" rel=\"nofollow\"\u003e\u003ccode\u003epg_type\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eIf this is a domain (see \u003ccode\u003etyptype\u003c/code\u003e), then \u003ccode\u003etypbasetype\u003c/code\u003e identifies the type that this one is based on. Zero if this type is not a domain.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etyptypmod\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eint4\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eDomains use \u003ccode\u003etyptypmod\u003c/code\u003e to record the \u003ccode\u003etypmod\u003c/code\u003e to be applied to their base type (-1 if base type does not use a \u003ccode\u003etypmod\u003c/code\u003e). -1 if this type is not a domain.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypndims\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eint4\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003ccode\u003etypndims\u003c/code\u003e is the number of array dimensions for a domain over an array (that is, \u003ccode\u003etypbasetype\u003c/code\u003e is an array type). Zero for types other than domains over array types.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypcollation\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\u003ca href=\"/docs/11/catalog-pg-collation.html\" rel=\"nofollow\"\u003e\u003ccode\u003epg_collation\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003ccode\u003etypcollation\u003c/code\u003e specifies the collation of the type. If the type does not support collations, this will be zero. A base type that supports collations will have \u003ccode\u003eDEFAULT_COLLATION_OID\u003c/code\u003e here. A domain over a collatable type can have some other collation OID, if one was specified for the domain.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypdefaultbin\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003epg_node_tree\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eIf \u003ccode\u003etypdefaultbin\u003c/code\u003e is not null, it is the \u003ccode\u003enodeToString()\u003c/code\u003e representation of a default expression for the type. This is only used for domains.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypdefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003etext\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003ccode\u003etypdefault\u003c/code\u003e is null if the type has no associated default value. If \u003ccode\u003etypdefaultbin\u003c/code\u003e is not null, \u003ccode\u003etypdefault\u003c/code\u003e must contain a human-readable version of the default expression represented by \u003ccode\u003etypdefaultbin\u003c/code\u003e. If \u003ccode\u003etypdefaultbin\u003c/code\u003e is null and \u003ccode\u003etypdefault\u003c/code\u003e is not, then \u003ccode\u003etypdefault\u003c/code\u003e is the external representation of the type\u0026#39;s default value, which can be fed to the type\u0026#39;s input converter to produce a constant.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etypacl\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eaclitem[]\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eAccess privileges; see \u003ca href=\"/docs/11/sql-grant.html\" title=\"GRANT\" rel=\"nofollow\"\u003e\u003cspan\u003eGRANT\u003c/span\u003e\u003c/a\u003e and \u003ca href=\"/docs/11/sql-revoke.html\" title=\"REVOKE\" rel=\"nofollow\"\u003e\u003cspan\u003eREVOKE\u003c/span\u003e\u003c/a\u003e for details\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\u003e\u003ca href=\"/docs/11/catalog-pg-type.html#CATALOG-TYPCATEGORY-TABLE\" rel=\"nofollow\"\u003eTable 52.63\u003c/a\u003e lists the system-defined values of \u003ccode\u003etypcategory\u003c/code\u003e. Any future additions to this list will also be upper-case ASCII letters. All other ASCII characters are reserved for user-defined categories.\u003c/p\u003e\n\u003cdiv id=\"CATALOG-TYPCATEGORY-TABLE\"\u003e\n\u003cp\u003e\u003cstrong\u003eTable 52.63. \u003ccode\u003etypcategory\u003c/code\u003e Codes\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv\u003e\n\u003ctable\u003e\n\n\n\n\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCode\u003c/th\u003e\n\u003cth\u003eCategory\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eA\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eArray types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eB\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eBoolean types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eC\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eComposite types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eD\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eDate/time types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eEnum types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eG\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eGeometric types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eI\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eNetwork address types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eN\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eNumeric types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eP\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ePseudo-types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eR\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eRange types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eS\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eString types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eT\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eTimespan types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eU\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eUser-defined types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eV\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eBit-string types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eX\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eunknown\u003c/code\u003e type\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\u003c/div\u003e","SourceRevision":"2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0","ContentHash":"03b5f1470bf9f2b5989ed88510158998310963c507549938506e6ba0712d2c85","Payload":{"description":["storage manager"],"manual_html":"\u003cdiv class=\"sect1\" id=\"CATALOG-PG-TYPE\"\u003e\n\u003cdiv class=\"titlepage\"\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003ch2 class=\"title\"\u003e52.62. \u003ccode class=\"structname\"\u003epg_type\u003c/code\u003e\u003c/h2\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cp\u003eThe catalog \u003ccode class=\"structname\"\u003epg_type\u003c/code\u003e stores information about data types. Base types and enum types (scalar types) are created with \u003ca class=\"xref\" href=\"/docs/11/sql-createtype.html\" title=\"CREATE TYPE\"\u003e\u003cspan class=\"refentrytitle\"\u003eCREATE TYPE\u003c/span\u003e\u003c/a\u003e, and domains with \u003ca class=\"xref\" href=\"/docs/11/sql-createdomain.html\" title=\"CREATE DOMAIN\"\u003e\u003cspan class=\"refentrytitle\"\u003eCREATE DOMAIN\u003c/span\u003e\u003c/a\u003e. A composite type is automatically created for each table in the database, to represent the row structure of the table. It is also possible to create composite types with \u003ccode class=\"command\"\u003eCREATE TYPE AS\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"table\" id=\"id-1.10.4.64.4\"\u003e\n\u003cp class=\"title\"\u003e\u003cstrong\u003eTable 52.62. \u003ccode class=\"structname\"\u003epg_type\u003c/code\u003e Columns\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"table-contents\"\u003e\n\u003ctable class=\"table\"\u003e\n\n\n\n\n\n\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eName\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eReferences\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=\"structfield\"\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eRow identifier (hidden attribute; must be explicitly selected)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypname\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003ename\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eData type name\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypnamespace\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-namespace.html\" title=\"52.32. pg_namespace\"\u003e\u003ccode class=\"structname\"\u003epg_namespace\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eThe OID of the namespace that contains this type\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypowner\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-authid.html\" title=\"52.8. pg_authid\"\u003e\u003ccode class=\"structname\"\u003epg_authid\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eOwner of the type\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etyplen\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eint2\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eFor a fixed-size type, \u003ccode class=\"structfield\"\u003etyplen\u003c/code\u003e is the number of bytes in the internal representation of the type. But for a variable-length type, \u003ccode class=\"structfield\"\u003etyplen\u003c/code\u003e is negative. -1 indicates a \u003cspan class=\"quote\"\u003e“\u003cspan class=\"quote\"\u003evarlena\u003c/span\u003e”\u003c/span\u003e type (one that has a length word), -2 indicates a null-terminated C string.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypbyval\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003ebool\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypbyval\u003c/code\u003e determines whether internal routines pass a value of this type by value or by reference. \u003ccode class=\"structfield\"\u003etypbyval\u003c/code\u003e had better be false if \u003ccode class=\"structfield\"\u003etyplen\u003c/code\u003e is not 1, 2, or 4 (or 8 on machines where Datum is 8 bytes). Variable-length types are always passed by reference. Note that \u003ccode class=\"structfield\"\u003etypbyval\u003c/code\u003e can be false even if the length would allow pass-by-value.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etyptype\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003echar\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etyptype\u003c/code\u003e is \u003ccode class=\"literal\"\u003eb\u003c/code\u003e for a base type, \u003ccode class=\"literal\"\u003ec\u003c/code\u003e for a composite type (e.g., a table's row type), \u003ccode class=\"literal\"\u003ed\u003c/code\u003e for a domain, \u003ccode class=\"literal\"\u003ee\u003c/code\u003e for an enum type, \u003ccode class=\"literal\"\u003ep\u003c/code\u003e for a pseudo-type, or \u003ccode class=\"literal\"\u003er\u003c/code\u003e for a range type. See also \u003ccode class=\"structfield\"\u003etyprelid\u003c/code\u003e and \u003ccode class=\"structfield\"\u003etypbasetype\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypcategory\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003echar\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypcategory\u003c/code\u003e is an arbitrary classification of data types that is used by the parser to determine which implicit casts should be \u003cspan class=\"quote\"\u003e“\u003cspan class=\"quote\"\u003epreferred\u003c/span\u003e”\u003c/span\u003e. See \u003ca class=\"xref\" href=\"/docs/11/catalog-pg-type.html#CATALOG-TYPCATEGORY-TABLE\" title=\"Table 52.63. typcategory Codes\"\u003eTable 52.63\u003c/a\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypispreferred\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003ebool\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eTrue if the type is a preferred cast target within its \u003ccode class=\"structfield\"\u003etypcategory\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypisdefined\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003ebool\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eTrue if the type is defined, false if this is a placeholder entry for a not-yet-defined type. When \u003ccode class=\"structfield\"\u003etypisdefined\u003c/code\u003e is false, nothing except the type name, namespace, and OID can be relied on.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypdelim\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003echar\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eCharacter that separates two values of this type when parsing array input. Note that the delimiter is associated with the array element data type, not the array data type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etyprelid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-class.html\" title=\"52.11. pg_class\"\u003e\u003ccode class=\"structname\"\u003epg_class\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIf this is a composite type (see \u003ccode class=\"structfield\"\u003etyptype\u003c/code\u003e), then this column points to the \u003ccode class=\"structname\"\u003epg_class\u003c/code\u003e entry that defines the corresponding table. (For a free-standing composite type, the \u003ccode class=\"structname\"\u003epg_class\u003c/code\u003e entry doesn't really represent a table, but it is needed anyway for the type's \u003ccode class=\"structname\"\u003epg_attribute\u003c/code\u003e entries to link to.) Zero for non-composite types.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypelem\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-type.html\" title=\"52.62. pg_type\"\u003e\u003ccode class=\"structname\"\u003epg_type\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIf \u003ccode class=\"structfield\"\u003etypelem\u003c/code\u003e is not 0 then it identifies another row in \u003ccode class=\"structname\"\u003epg_type\u003c/code\u003e. The current type can then be subscripted like an array yielding values of type \u003ccode class=\"structfield\"\u003etypelem\u003c/code\u003e. A \u003cspan class=\"quote\"\u003e“\u003cspan class=\"quote\"\u003etrue\u003c/span\u003e”\u003c/span\u003e array type is variable length (\u003ccode class=\"structfield\"\u003etyplen\u003c/code\u003e = -1), but some fixed-length (\u003ccode class=\"structfield\"\u003etyplen\u003c/code\u003e \u0026gt; 0) types also have nonzero \u003ccode class=\"structfield\"\u003etypelem\u003c/code\u003e, for example \u003ccode class=\"type\"\u003ename\u003c/code\u003e and \u003ccode class=\"type\"\u003epoint\u003c/code\u003e. If a fixed-length type has a \u003ccode class=\"structfield\"\u003etypelem\u003c/code\u003e then its internal representation must be some number of values of the \u003ccode class=\"structfield\"\u003etypelem\u003c/code\u003e data type with no other data. Variable-length array types have a header defined by the array subroutines.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etyparray\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-type.html\" title=\"52.62. pg_type\"\u003e\u003ccode class=\"structname\"\u003epg_type\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eIf \u003ccode class=\"structfield\"\u003etyparray\u003c/code\u003e is not 0 then it identifies another row in \u003ccode class=\"structname\"\u003epg_type\u003c/code\u003e, which is the \u003cspan class=\"quote\"\u003e“\u003cspan class=\"quote\"\u003etrue\u003c/span\u003e”\u003c/span\u003e array type having this type as element\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypinput\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-proc.html\" title=\"52.39. pg_proc\"\u003e\u003ccode class=\"structname\"\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eInput conversion function (text format)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypoutput\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-proc.html\" title=\"52.39. pg_proc\"\u003e\u003ccode class=\"structname\"\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eOutput conversion function (text format)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypreceive\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-proc.html\" title=\"52.39. pg_proc\"\u003e\u003ccode class=\"structname\"\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eInput conversion function (binary format), or 0 if none\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypsend\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-proc.html\" title=\"52.39. pg_proc\"\u003e\u003ccode class=\"structname\"\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eOutput conversion function (binary format), or 0 if none\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypmodin\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-proc.html\" title=\"52.39. pg_proc\"\u003e\u003ccode class=\"structname\"\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eType modifier input function, or 0 if type does not support modifiers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypmodout\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-proc.html\" title=\"52.39. pg_proc\"\u003e\u003ccode class=\"structname\"\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eType modifier output function, or 0 to use the standard format\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypanalyze\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eregproc\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-proc.html\" title=\"52.39. pg_proc\"\u003e\u003ccode class=\"structname\"\u003epg_proc\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eCustom \u003ccode class=\"command\"\u003eANALYZE\u003c/code\u003e function, or 0 to use the standard function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypalign\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003echar\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003ccode class=\"structfield\"\u003etypalign\u003c/code\u003e is the alignment required when storing a value of this type. It applies to storage on disk as well as most representations of the value inside \u003cspan class=\"productname\"\u003ePostgreSQL\u003c/span\u003e. When multiple values are stored consecutively, such as in the representation of a complete row on disk, padding is inserted before a datum of this type so that it begins on the specified boundary. The alignment reference is the beginning of the first datum in the sequence.\u003c/p\u003e\n\u003cp\u003ePossible values are:\u003c/p\u003e\n\u003cdiv class=\"itemizedlist\"\u003e\n\u003cul class=\"itemizedlist\"\u003e\n\u003cli class=\"listitem\"\u003e\n\u003cp\u003e\u003ccode class=\"literal\"\u003ec\u003c/code\u003e = \u003ccode class=\"type\"\u003echar\u003c/code\u003e alignment, i.e., no alignment needed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli class=\"listitem\"\u003e\n\u003cp\u003e\u003ccode class=\"literal\"\u003es\u003c/code\u003e = \u003ccode class=\"type\"\u003eshort\u003c/code\u003e alignment (2 bytes on most machines).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli class=\"listitem\"\u003e\n\u003cp\u003e\u003ccode class=\"literal\"\u003ei\u003c/code\u003e = \u003ccode class=\"type\"\u003eint\u003c/code\u003e alignment (4 bytes on most machines).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli class=\"listitem\"\u003e\n\u003cp\u003e\u003ccode class=\"literal\"\u003ed\u003c/code\u003e = \u003ccode class=\"type\"\u003edouble\u003c/code\u003e alignment (8 bytes on many machines, but by no means all).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n\u003cdiv class=\"note\"\u003e\n\u003ch3 class=\"title\"\u003eNote\u003c/h3\u003e\n\u003cp\u003eFor types used in system tables, it is critical that the size and alignment defined in \u003ccode class=\"structname\"\u003epg_type\u003c/code\u003e agree with the way that the compiler will lay out the column in a structure representing a table row.\u003c/p\u003e\n\u003c/div\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypstorage\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003echar\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003ccode class=\"structfield\"\u003etypstorage\u003c/code\u003e tells for varlena types (those with \u003ccode class=\"structfield\"\u003etyplen\u003c/code\u003e = -1) if the type is prepared for toasting and what the default strategy for attributes of this type should be. Possible values are\u003c/p\u003e\n\u003cdiv class=\"itemizedlist\"\u003e\n\u003cul class=\"itemizedlist\"\u003e\n\u003cli class=\"listitem\"\u003e\n\u003cp\u003e\u003ccode class=\"literal\"\u003ep\u003c/code\u003e: Value must always be stored plain.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli class=\"listitem\"\u003e\n\u003cp\u003e\u003ccode class=\"literal\"\u003ee\u003c/code\u003e: Value can be stored in a \u003cspan class=\"quote\"\u003e“\u003cspan class=\"quote\"\u003esecondary\u003c/span\u003e”\u003c/span\u003e relation (if relation has one, see \u003ccode class=\"literal\"\u003epg_class.reltoastrelid\u003c/code\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli class=\"listitem\"\u003e\n\u003cp\u003e\u003ccode class=\"literal\"\u003em\u003c/code\u003e: Value can be stored compressed inline.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli class=\"listitem\"\u003e\n\u003cp\u003e\u003ccode class=\"literal\"\u003ex\u003c/code\u003e: Value can be stored compressed inline or stored in \u003cspan class=\"quote\"\u003e“\u003cspan class=\"quote\"\u003esecondary\u003c/span\u003e”\u003c/span\u003e storage.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n\u003cp\u003eNote that \u003ccode class=\"literal\"\u003em\u003c/code\u003e columns can also be moved out to secondary storage, but only as a last resort (\u003ccode class=\"literal\"\u003ee\u003c/code\u003e and \u003ccode class=\"literal\"\u003ex\u003c/code\u003e columns are moved first).\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypnotnull\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003ebool\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003ccode class=\"structfield\"\u003etypnotnull\u003c/code\u003e represents a not-null constraint on a type. Used for domains only.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypbasetype\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-type.html\" title=\"52.62. pg_type\"\u003e\u003ccode class=\"structname\"\u003epg_type\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eIf this is a domain (see \u003ccode class=\"structfield\"\u003etyptype\u003c/code\u003e), then \u003ccode class=\"structfield\"\u003etypbasetype\u003c/code\u003e identifies the type that this one is based on. Zero if this type is not a domain.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etyptypmod\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eint4\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eDomains use \u003ccode class=\"structfield\"\u003etyptypmod\u003c/code\u003e to record the \u003ccode class=\"literal\"\u003etypmod\u003c/code\u003e to be applied to their base type (-1 if base type does not use a \u003ccode class=\"literal\"\u003etypmod\u003c/code\u003e). -1 if this type is not a domain.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypndims\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eint4\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003ccode class=\"structfield\"\u003etypndims\u003c/code\u003e is the number of array dimensions for a domain over an array (that is, \u003ccode class=\"structfield\"\u003etypbasetype\u003c/code\u003e is an array type). Zero for types other than domains over array types.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypcollation\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eoid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003e\u003ca class=\"link\" href=\"/docs/11/catalog-pg-collation.html\" title=\"52.12. pg_collation\"\u003e\u003ccode class=\"structname\"\u003epg_collation\u003c/code\u003e\u003c/a\u003e.oid\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003ccode class=\"structfield\"\u003etypcollation\u003c/code\u003e specifies the collation of the type. If the type does not support collations, this will be zero. A base type that supports collations will have \u003ccode class=\"symbol\"\u003eDEFAULT_COLLATION_OID\u003c/code\u003e here. A domain over a collatable type can have some other collation OID, if one was specified for the domain.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypdefaultbin\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003epg_node_tree\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003eIf \u003ccode class=\"structfield\"\u003etypdefaultbin\u003c/code\u003e is not null, it is the \u003ccode class=\"function\"\u003enodeToString()\u003c/code\u003e representation of a default expression for the type. This is only used for domains.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypdefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003etext\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003e\n\u003cp\u003e\u003ccode class=\"structfield\"\u003etypdefault\u003c/code\u003e is null if the type has no associated default value. If \u003ccode class=\"structfield\"\u003etypdefaultbin\u003c/code\u003e is not null, \u003ccode class=\"structfield\"\u003etypdefault\u003c/code\u003e must contain a human-readable version of the default expression represented by \u003ccode class=\"structfield\"\u003etypdefaultbin\u003c/code\u003e. If \u003ccode class=\"structfield\"\u003etypdefaultbin\u003c/code\u003e is null and \u003ccode class=\"structfield\"\u003etypdefault\u003c/code\u003e is not, then \u003ccode class=\"structfield\"\u003etypdefault\u003c/code\u003e is the external representation of the type's default value, which can be fed to the type's input converter to produce a constant.\u003c/p\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"structfield\"\u003etypacl\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eaclitem[]\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e \u003c/td\u003e\n\u003ctd\u003eAccess privileges; see \u003ca class=\"xref\" href=\"/docs/11/sql-grant.html\" title=\"GRANT\"\u003e\u003cspan class=\"refentrytitle\"\u003eGRANT\u003c/span\u003e\u003c/a\u003e and \u003ca class=\"xref\" href=\"/docs/11/sql-revoke.html\" title=\"REVOKE\"\u003e\u003cspan class=\"refentrytitle\"\u003eREVOKE\u003c/span\u003e\u003c/a\u003e for details\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\u003e\u003ca class=\"xref\" href=\"/docs/11/catalog-pg-type.html#CATALOG-TYPCATEGORY-TABLE\" title=\"Table 52.63. typcategory Codes\"\u003eTable 52.63\u003c/a\u003e lists the system-defined values of \u003ccode class=\"structfield\"\u003etypcategory\u003c/code\u003e. Any future additions to this list will also be upper-case ASCII letters. All other ASCII characters are reserved for user-defined categories.\u003c/p\u003e\n\u003cdiv class=\"table\" id=\"CATALOG-TYPCATEGORY-TABLE\"\u003e\n\u003cp class=\"title\"\u003e\u003cstrong\u003eTable 52.63. \u003ccode class=\"structfield\"\u003etypcategory\u003c/code\u003e Codes\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\u003eCode\u003c/th\u003e\n\u003cth\u003eCategory\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eA\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eArray types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eB\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eBoolean types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eC\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eComposite types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eD\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eDate/time types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eE\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eEnum types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eG\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eGeometric types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eI\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eNetwork address types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eN\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eNumeric types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eP\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ePseudo-types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eR\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eRange types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eS\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eString types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eT\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eTimespan types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eU\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eUser-defined types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eV\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eBit-string types\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"literal\"\u003eX\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"type\"\u003eunknown\u003c/code\u003e type\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\u003c/div\u003e","related":[{"label":"pg_type catalog","url":"/wiki/catalog/pg_type/?v=11"},{"label":"pg_cast catalog","url":"/wiki/catalog/pg_cast/?v=11"},{"label":"pg_operator catalog","url":"/wiki/catalog/pg_operator/?v=11"},{"label":"pg_opclass catalog","url":"/wiki/catalog/pg_opclass/?v=11"},{"label":"Arrays","url":"/wiki/type/arrays/?v=11"}],"sections":[]}},"RequestedLocale":"zh-Hans","Fallback":true,"Versions":["10","11"],"Locales":["en"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
