anyarray positions must be an array whose elements are
the same type appearing in the anyelement positions.
Similarly, if there are positions declared anyrange
- and others declared anyelement, the actual range type in
- the anyrange positions must be a range whose subtype is
- the same type appearing in the anyelement positions.
- anynonarray> is treated exactly the same as anyelement>,
+ and others declared anyelement or anyarray,
+ the actual range type in the anyrange positions must be a
+ range whose subtype is the same type appearing in
+ the anyelement positions and the same as the element type
+ of the anyarray positions.
+ anynonarray is treated exactly the same as anyelement,
but adds the additional constraint that the actual type must not be
an array type.
anyenum> is treated exactly the same as anyelement>,
will only accept arrays of enum types.
+ In most cases, the parser can infer the actual data type for a
+ polymorphic result type from arguments that are of a different
+ polymorphic type; for example anyarray can be deduced
+ from anyelement or vice versa. The exception is that a
+ polymorphic result of type anyrange requires an argument
+ of type anyrange; it cannot be deduced
+ from anyarray or anyelement arguments. This
+ is because there could be multiple range types with the same subtype.
+
+
Note that anynonarray> and anyenum> do not represent
separate type variables; they are the same type as