data type conversion paths, both built-in and user-defined.
It should be noted that
pg_cast does not represent every type
conversion that the system knows how to perform; only those that
cannot be deduced from some generic rule. For example, casting
between a domain and its base type is not explicitly represented
pg_cast. Another important
exception is that “automatic I/O conversion casts”, those
performed using a data type's own I/O functions to convert to or
text or other string types, are
not explicitly represented in
||Row identifier (hidden attribute; must be explicitly selected)|
||OID of the source data type|
||OID of the target data type|
||The OID of the function to use to perform this cast. Zero is stored if the cast method doesn't require a function.|
||Indicates what contexts the cast can be invoked in.
||Indicates how the cast is performed.
The cast functions listed in
pg_cast must always take the cast source type
as their first argument type, and return the cast destination
type as their result type. A cast function can have up to three
arguments. The second argument, if present, must be type
integer; it receives the type modifier
associated with the destination type, or -1 if there is none. The
third argument, if present, must be type
boolean; it receives
true if the cast is an explicit cast,
It is legitimate to create a
pg_cast entry in which the source and target
types are the same, if the associated function takes more than
one argument. Such entries represent “length coercion
functions” that coerce values of the type to be
legal for a particular type modifier value.
pg_cast entry has
different source and target types and a function that takes more
than one argument, it represents converting from one type to
another and applying a length coercion in a single step. When no
such entry is available, coercion to a type that uses a type
modifier involves two steps, one to convert between data types
and a second to apply the modifier.
If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.