| The PostgreSQL 9.0 Reference Manual - Volume 1A - SQL Language Reference
by The PostgreSQL Global Development Group Paperback (6"x9"), 454 pages ISBN 9781906966041 RRP £14.95 ($19.95) Sales of this book support the PostgreSQL project! Get a printed copy>>> |
6.17 Pseudo-Types
The PostgreSQL type system contains a number of special-purpose entries that are collectively called pseudo-types. A pseudo-type cannot be used as a column data type, but it can be used to declare a function's argument or result type. Each of the available pseudo-types is useful in situations where a function's behavior does not correspond to simply taking or returning a value of a specific SQL data type. Table 6-24 lists the existing pseudo-types.
| Name | Description
|
any | Indicates that a function accepts any input data type.
|
anyarray | Indicates that a function accepts any array data type
(see Volume 2: Polymorphic Types).
|
anyelement | Indicates that a function accepts any data type
(see Volume 2: Polymorphic Types).
|
anyenum | Indicates that a function accepts any enum data type
(see Volume 2: Polymorphic Types and
section 6.7 Enumerated Types).
|
anynonarray | Indicates that a function accepts any non-array data type
(see Volume 2: Polymorphic Types).
|
cstring | Indicates that a function accepts or returns a null-terminated C string.
|
internal | Indicates that a function accepts or returns a server-internal
data type.
|
language_handler | A procedural language call handler is declared to return language_handler.
|
record | Identifies a function returning an unspecified row type.
|
trigger | A trigger function is declared to return trigger.
|
void | Indicates that a function returns no value.
|
opaque | An obsolete type name that formerly served all the above purposes. |
Functions coded in C (whether built-in or dynamically loaded) can be declared to accept or return any of these pseudo data types. It is up to the function author to ensure that the function will behave safely when a pseudo-type is used as an argument type.
Functions coded in procedural languages can use pseudo-types only as
allowed by their implementation languages. At present the procedural
languages all forbid use of a pseudo-type as argument type, and allow
only void and record as a result type (plus
trigger when the function is used as a trigger). Some also
support polymorphic functions using the types anyarray,
anyelement, anyenum, and anynonarray.
The internal pseudo-type is used to declare functions
that are meant only to be called internally by the database
system, and not by direct invocation in an SQL
query. If a function has at least one internal-type
argument then it cannot be called from SQL. To
preserve the type safety of this restriction it is important to
follow this coding rule: do not create any function that is
declared to return internal unless it has at least one
internal argument.
| ISBN 9781906966041 | The PostgreSQL 9.0 Reference Manual - Volume 1A - SQL Language Reference | See the print edition |