PostgreSQL
51.10. pg_cast
The catalog pg_cast
stores 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 in pg_cast
. Another important exception is that “[.quote]#automatic I/O conversion casts”#, those performed using a data type’s own I/O functions to convert to or from text
or other string types, are not explicitly represented in pg_cast
.
Table 51.10. pg_cast
Columns
Name | Type | References | Description |
---|---|---|---|
|
|
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, false
otherwise.
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 “[.quote]#length coercion functions”# that coerce values of the type to be legal for a particular type modifier value.
When a 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.
Prev | Up | Next |
---|---|---|
51.9. |
51.11. |
Copyright © 1996-2023 The PostgreSQL Global Development Group