| 
       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,rfor a range type, ormfor a multirange 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 53.65. | 
| 
       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. | 
| 
       typsubscriptregproc(referencespg_proc.oid) 
       Subscripting handler function's OID, or zero if this type doesn't
       support subscripting.  Types that are “true” array
       types have typsubscript=array_subscript_handler, but other types may
       have other handler functions to implement specialized subscripting
       behavior. | 
| 
       typelemoid(referencespg_type.oid) 
       If typelemis not zero then it
       identifies another row inpg_type,
       defining the type yielded by subscripting.  This should be zero
       iftypsubscriptis zero.  However, it can
       be zero whentypsubscriptisn't zero, if the
       handler doesn't needtypelemto
       determine the subscripting result type.
       Note that atypelemdependency is
       considered to imply physical containment of the element type in
       this type; so DDL changes on the element type might be restricted
       by the presence of this type. | 
| 
       typarrayoid(referencespg_type.oid) 
       If typarrayis not zero 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 zero if none
       | 
| 
       typsendregproc(referencespg_proc.oid) 
       Output conversion function (binary format), or zero if none
       | 
| 
       typmodinregproc(referencespg_proc.oid) 
       Type modifier input function, or zero if type does not support modifiers
       | 
| 
       typmodoutregproc(referencespg_proc.oid) 
       Type modifier output function, or zero to use the standard format
       | 
| 
       typanalyzeregproc(referencespg_proc.oid) 
       Custom ANALYZE function,
       or zero 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
       |