PG_TYPE
PG_TYPE stores information about data types.
| Name | Type | Description |
|---|---|---|
| oid | oid | Row identifier (hidden attribute, which must be specified). |
| typname | name | Data type name. |
| typnamespace | oid | OID of the namespace that contains the type. |
| typowner | oid | Owner of the type. |
| typlen | smallint | Number of bytes in the internal representation of the type for a fixed-size type. It is a negative number for a variable-length type.
|
| typbyval | Boolean |
If typlen of this type is not 1, 2, 4, or 8, you are advised to transfer a reference value for typbyval. You can also transfer a value for typbyval. Variable-length types are usually passed by reference or by value. |
| typtype | "char" |
For details, see typrelid and typbasetype. |
| typcategory | "char" | Fuzzy classification of data types, which can be used by parsers as the basis for data conversion. |
| typispreferred | Boolean |
|
| typisdefined | Boolean |
|
| typdelim | "char" | Character that separates two values of this type when parsing an array input. Note that the delimiter is associated with the array element data type, not the array data type. |
| typrelid | oid | If this is a composite type (see typtype), then this column points to 13.2.53 PG_CLASS that defines the corresponding table. For a free-standing composite type, 13.2.53 PG_CLASS does not represent a table, but it is required for the type's 13.2.48 PG_ATTRIBUTE to link to. It is 0 for non-composite type. |
| typelem | oid | If typelem is not 0, it identifies another row in PG_TYPE. The current type can be described as an array yielding values of type typelem. A "true" array type has a variable length (typlen = –1), but some fixed-length types (typlen > 0) also have non-zero typelem, for example name and point. If a fixed-length type has a typelem, its internal representation must be a number of values of the typelem data type with no other data. Variable-length array types have a header defined by the array subroutines. |
| typarray | oid | If the value is not 0, the corresponding type record is available in PG_TYPE. |
| typinput | regproc | Input conversion function (text format). |
| typoutput | regproc | Output conversion function (text format). |
| typreceive | regproc | Input conversion function (binary format); 0 for non-input conversion function. |
| typsend | regproc | Output conversion function (binary format); 0 for non-output conversion function. |
| typmodin | regproc | Input type modifier function; 0 if none. |
| typmodout | regproc | Output type modifier function; 0 if none. |
| typanalyze | regproc | Custom ANALYZE function; 0 if the standard function is used. |
| typalign | "char" | Alignment required when storing a value of this type. It applies to storage on disks as well as most representations of the value. When multiple values are stored consecutively, such as in the representation of a complete row on disk, padding is inserted before a data of this type so that it begins on the specified boundary. The alignment reference is the beginning of the first datum in the sequence. Possible values are:
NOTICE: For types used in system catalogs, the size and alignment defined in PG_TYPE must agree with the way that the compiler lays out the column in a structure representing a table row. |
| typstorage | "char" | typstorage tells for varlena types (those with typlen = –1) if the type is prepared for toasting and what the default strategy for attributes of this type should be. Possible values are:
NOTICE: m domains can also be moved out to secondary storage, but only as a last resort (e and x domains are moved first). |
| typnotnull | Boolean | Specifies whether the type has a NOTNULL constraint. Currently, it is used for domains only. |
| typbasetype | oid | If this is a domain (see typtype), then typbasetype identifies the type that this one is based on. The value is 0 if this type is not a derived type. |
| typtypmod | integer |
|
| typndims | integer | If a field is an array, typndims is the number of array dimensions. This is 0 for types other than domains over array types. |
| typcollation | oid | Sequence rule for specified types. For details about the value, see the PG_COLLATION system catalog. (0 if sequencing is not supported) |
| typdefaultbin | pg_node_tree | nodeToString() representation of a default expression for the type if the value is non-null. Currently, this column is only used for domains. |
| typdefault | text | The value is NULL if a type has no associated default value.
|
| typacl | aclitem[] | Access permission. |
| typelemmod | integer |
typmod usually refers to the maximum length of a type. |