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 8.27 lists the existing pseudo-types.
Table 8.27. Pseudo-Types
Name Descriptionany
Indicates that a function accepts any input data type. anyelement
Indicates that a function accepts any data type (see Section 36.2.5). anyarray
Indicates that a function accepts any array data type (see Section 36.2.5). anynonarray
Indicates that a function accepts any non-array data type (see Section 36.2.5). anyenum
Indicates that a function accepts any enum data type (see Section 36.2.5 and Section 8.7). anyrange
Indicates that a function accepts any range data type (see Section 36.2.5 and Section 8.17). anymultirange
Indicates that a function accepts any multirange data type (see Section 36.2.5 and Section 8.17). anycompatible
Indicates that a function accepts any data type, with automatic promotion of multiple arguments to a common data type (see Section 36.2.5). anycompatiblearray
Indicates that a function accepts any array data type, with automatic promotion of multiple arguments to a common data type (see Section 36.2.5). anycompatiblenonarray
Indicates that a function accepts any non-array data type, with automatic promotion of multiple arguments to a common data type (see Section 36.2.5). anycompatiblerange
Indicates that a function accepts any range data type, with automatic promotion of multiple arguments to a common data type (see Section 36.2.5 and Section 8.17). anycompatiblemultirange
Indicates that a function accepts any multirange data type, with automatic promotion of multiple arguments to a common data type (see Section 36.2.5 and Section 8.17). 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
. fdw_handler
A foreign-data wrapper handler is declared to return fdw_handler
. table_am_handler
A table access method handler is declared to return table_am_handler
. index_am_handler
An index access method handler is declared to return index_am_handler
. tsm_handler
A tablesample method handler is declared to return tsm_handler
. record
Identifies a function taking or returning an unspecified row type. trigger
A trigger function is declared to return trigger.
event_trigger
An event trigger function is declared to return event_trigger.
pg_ddl_command
Identifies a representation of DDL commands that is available to event triggers. void
Indicates that a function returns no value. unknown
Identifies a not-yet-resolved type, e.g., of an undecorated string literal.
Functions coded in C (whether built-in or dynamically loaded) can be declared to accept or return any of these pseudo-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 most procedural languages forbid use of a pseudo-type as an argument type, and allow only void
and record
as a result type (plus trigger
or event_trigger
when the function is used as a trigger or event trigger). Some also support polymorphic functions using the polymorphic pseudo-types, which are shown above and discussed in detail in Section 36.2.5.
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.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4