</indexterm>
<indexterm zone="datatype-pseudo">
<primary>unknown</primary>
</indexterm>
<para>
The <productname>PostgreSQL</productname> type system contains a
number of special-purpose entries that are collectively called
<firstterm>pseudo-types</firstterm>. 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
<acronym>SQL</acronym> data type. <xref
linkend="datatype-pseudotypes-table"/> lists the existing
pseudo-types.
</para>
<table id="datatype-pseudotypes-table">
<title>Pseudo-Types</title>
<tgroup cols="2">
<colspec colname="col1" colwidth="2*"/>
<colspec colname="col2" colwidth="3*"/>
<thead>
<row>
<entry>Name</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry><type>any</type></entry>
<entry>Indicates that a function accepts any input data type.</entry>
</row>
<row>
<entry><type>anyelement</type></entry>
<entry>Indicates that a function accepts any data type
(see <xref linkend="extend-types-polymorphic"/>).</entry>
</row>
<row>
<entry><type>anyarray</type></entry>
<entry>Indicates that a function accepts any array data type
(see <xref linkend="extend-types-polymorphic"/>).</entry>
</row>
<row>
<entry><type>anynonarray</type></entry>
<entry>Indicates that a function accepts any non-array data type
(see <xref linkend="extend-types-polymorphic"/>).</entry>
</row>
<row>
<entry><type>anyenum</type></entry>
<entry>Indicates that a function accepts any enum data type
(see <xref linkend="extend-types-polymorphic"/> and
<xref linkend="datatype-enum"/>).</entry>
</row>
<row>
<entry><type>anyrange</type></entry>
<entry>Indicates that a function accepts any range data type
(see <xref linkend="extend-types-polymorphic"/> and
<xref linkend="rangetypes"/>).</entry>
</row>
<row>
<entry><type>anymultirange</type></entry>
<entry>Indicates that a function accepts any multirange data type
(see <xref linkend="extend-types-polymorphic"/> and
<xref linkend="rangetypes"/>).</entry>
</row>
<row>
<entry><type>anycompatible</type></entry>
<entry>Indicates that a function accepts any data type,
with automatic promotion of multiple arguments to a common data type
(see <xref linkend="extend-types-polymorphic"/>).</entry>
</row>
<row>
<entry><type>anycompatiblearray</type></entry>
<entry>Indicates that a function accepts any array data type,
with automatic promotion of multiple arguments to a common data type
(see <xref linkend="extend-types-polymorphic"/>).</entry>
</row>
<row>
<entry><type>anycompatiblenonarray</type></entry>
<entry>Indicates that a function accepts any non-array data type,
with automatic promotion of multiple arguments to a common data type
(see <xref linkend="extend-types-polymorphic"/>).</entry>
</row>
<row>
<entry><type>anycompatiblerange</type></entry>
<entry>Indicates that a function accepts any range data type,
with automatic promotion of multiple arguments to a common data type
(see <xref linkend="extend-types-polymorphic"/> and
<xref linkend="rangetypes"/>).</entry>
</row>
<row>
<entry><type>anycompatiblemultirange</type></entry>
<entry>Indicates that a function accepts any multirange data type,
with automatic promotion of multiple arguments