Make UNKNOWN into an actual pseudo-type.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 25 Jan 2017 14:27:09 +0000 (09:27 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 25 Jan 2017 14:27:09 +0000 (09:27 -0500)
commitd8d32d9a56a3cecfb14e8f47ebd50b780edffe60
treef06a9fe35cc90008aabb19146fa29d344814a29a
parent1e7c4bb0049732ece651d993d03bb6772e5d281a
Make UNKNOWN into an actual pseudo-type.

Previously, type "unknown" was labeled as a base type in pg_type, which
perhaps had some sense to it because you were allowed to create tables with
unknown-type columns.  But now that we don't allow that, it makes more
sense to label it a pseudo-type.  This has the additional effects of
forbidding use of "unknown" as a domain base type, cast source or target
type, PL function argument or result type, or plpgsql local variable type;
all of which seem like good holes to plug.

Discussion: https://postgr.es/m/CAH2L28uwwbL9HUM-WR=hromW1Cvamkn7O-g8fPY2m=_7muJ0oA@mail.gmail.com
12 files changed:
doc/src/sgml/datatype.sgml
doc/src/sgml/ddl.sgml
doc/src/sgml/plhandler.sgml
doc/src/sgml/protocol.sgml
doc/src/sgml/queries.sgml
doc/src/sgml/ref/create_function.sgml
doc/src/sgml/ref/create_type.sgml
src/backend/catalog/heap.c
src/include/catalog/catversion.h
src/include/catalog/pg_type.h
src/test/regress/expected/type_sanity.out
src/test/regress/sql/type_sanity.sql