| 
       oidoid 
       Row identifier
       | 
| 
       typnamename 
       Data type name
       | 
| 
       typnamespaceoid(referencespg_namespace.oid) 
       The OID of the namespace that contains this type
       | 
| 
       typowneroid(referencespg_authid.oid) 
       Owner of the type
       | 
| 
       typlenint2 
       For a fixed-size type, typlenis the number
       of bytes in the internal representation of the type.  But for a
       variable-length type,typlenis negative.
       -1 indicates a “varlena” type (one that has a length word),
       -2 indicates a null-terminated C string. | 
| 
       typbyvalbool 
       typbyvaldetermines whether internal
       routines pass a value of this type by value or by reference.typbyvalhad better be false iftyplenis not 1, 2, or 4 (or 8 on machines
       where Datum is 8 bytes).
       Variable-length types are always passed by reference. Note thattypbyvalcan be false even if the
       length would allow pass-by-value. | 
| 
       typtypechar 
       typtypeisbfor a base type,cfor a composite type (e.g., a table's row type),dfor a domain,efor an enum type,pfor a pseudo-type, orrfor a range type.
       See alsotyprelidandtypbasetype. | 
| 
       typcategorychar 
       typcategoryis an arbitrary classification
       of data types that is used by the parser to determine which implicit
       casts should be “preferred”.
       See Table 51.63. | 
| 
       typispreferredbool 
       True if the type is a preferred cast target within its
       typcategory | 
| 
       typisdefinedbool 
       True if the type is defined, false if this is a placeholder
       entry for a not-yet-defined type.  When
       typisdefinedis false, nothing
       except the type name, namespace, and OID can be relied on. | 
| 
       typdelimchar 
       Character 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.
       | 
| 
       typrelidoid(referencespg_class.oid) 
       If this is a composite type (see
       typtype), then this column points to
       thepg_classentry that defines the
       corresponding table.  (For a free-standing composite type, thepg_classentry doesn't really represent
       a table, but it is needed anyway for the type'spg_attributeentries to link to.)
       Zero for non-composite types. | 
| 
       typelemoid(referencespg_type.oid) 
       If typelemis not 0 then it
       identifies another row inpg_type.
       The current type can then be subscripted like an array yielding
       values of typetypelem.  A
       “true” array type is variable length
       (typlen= -1),
       but some fixed-length (typlen> 0) types
       also have nonzerotypelem, for examplenameandpoint.
       If a fixed-length type has atypelemthen
       its internal representation must be some number of values of thetypelemdata type with no other data.
       Variable-length array types have a header defined by the array
       subroutines. | 
| 
       typarrayoid(referencespg_type.oid) 
       If typarrayis not 0 then it
       identifies another row inpg_type, which
       is the “true” array type having this type as element | 
| 
       typinputregproc(referencespg_proc.oid) 
       Input conversion function (text format)
       | 
| 
       typoutputregproc(referencespg_proc.oid) 
       Output conversion function (text format)
       | 
| 
       typreceiveregproc(referencespg_proc.oid) 
       Input conversion function (binary format), or 0 if none
       | 
| 
       typsendregproc(referencespg_proc.oid) 
       Output conversion function (binary format), or 0 if none
       | 
| 
       typmodinregproc(referencespg_proc.oid) 
       Type modifier input function, or 0 if type does not support modifiers
       | 
| 
       typmodoutregproc(referencespg_proc.oid) 
       Type modifier output function, or 0 to use the standard format
       | 
| 
       typanalyzeregproc(referencespg_proc.oid) 
       Custom ANALYZEfunction, or 0 to use the standard function | 
| 
       typalignchar 
       typalignis 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
       PostgreSQL.
       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.
       Possible values are: c=charalignment, i.e., no alignment needed.
s=shortalignment (2 bytes on most machines).
i=intalignment (4 bytes on most machines).
d=doublealignment (8 bytes on many machines, but by no means all).
       | 
| 
       typstoragechar 
       typstoragetells for varlena
       types (those withtyplen= -1) if
       the type is prepared for toasting and what the default strategy
       for attributes of this type should be.
       Possible values are: 
          p(plain): Values must always be stored plain
          (non-varlena types always use this value).
          e(external): Values can be stored in a
          secondary “TOAST” relation (if relation has one, seepg_class.reltoastrelid).
          m(main): Values can be compressed and stored
          inline.
          x(extended): Values can be compressed and/or
          moved to a secondary relation.
       xis the usual choice for toast-able types.
       Note thatmvalues can also be moved out to
       secondary storage, but only as a last resort (eandxvalues are moved first). | 
| 
       typnotnullbool 
       typnotnullrepresents a not-null
       constraint on a type.  Used for domains only. | 
| 
       typbasetypeoid(referencespg_type.oid) 
       If this is a domain (see typtype), thentypbasetypeidentifies the type that this
       one is based on.  Zero if this type is not a domain. | 
| 
       typtypmodint4 
       Domains use typtypmodto record thetypmodto be applied to their base type (-1 if base type does not use atypmod).  -1 if this type is not a domain. | 
| 
       typndimsint4 
       typndimsis the number of array dimensions
       for a domain over an array (that is,typbasetypeis
       an array type).
       Zero for types other than domains over array types. | 
| 
       typcollationoid(referencespg_collation.oid) 
       typcollationspecifies the collation
       of the type.  If the type does not support collations, this will
       be zero.  A base type that supports collations will have a nonzero
       value here, typicallyDEFAULT_COLLATION_OID.
       A domain over a collatable type can have a collation OID different
       from its base type's, if one was specified for the domain. | 
| 
       typdefaultbinpg_node_tree 
       If typdefaultbinis not null, it is thenodeToString()representation of a default expression for the type.  This is
       only used for domains. | 
| 
       typdefaulttext 
       typdefaultis null if the type has no associated
       default value. Iftypdefaultbinis not null,typdefaultmust contain a human-readable version of the
       default expression represented bytypdefaultbin.  Iftypdefaultbinis null andtypdefaultis
       not, thentypdefaultis the external representation of
       the type's default value, which can be fed to the type's input
       converter to produce a constant. | 
| 
       typaclaclitem[] 
       Access privileges; see Section 5.7 for details
       |