diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2017-01-25 09:27:09 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2017-01-25 09:27:09 -0500 |
commit | d8d32d9a56a3cecfb14e8f47ebd50b780edffe60 (patch) | |
tree | f06a9fe35cc90008aabb19146fa29d344814a29a /src | |
parent | 1e7c4bb0049732ece651d993d03bb6772e5d281a (diff) | |
download | postgresql-d8d32d9a56a3cecfb14e8f47ebd50b780edffe60.tar.gz postgresql-d8d32d9a56a3cecfb14e8f47ebd50b780edffe60.zip |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/catalog/heap.c | 3 | ||||
-rw-r--r-- | src/include/catalog/catversion.h | 2 | ||||
-rw-r--r-- | src/include/catalog/pg_type.h | 2 | ||||
-rw-r--r-- | src/test/regress/expected/type_sanity.out | 5 | ||||
-rw-r--r-- | src/test/regress/sql/type_sanity.sql | 2 |
5 files changed, 6 insertions, 8 deletions
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index d7a3513d295..7ce91158325 100644 --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -490,8 +490,7 @@ CheckAttributeType(const char *attname, char att_typtype = get_typtype(atttypid); Oid att_typelem; - if (atttypid == UNKNOWNOID || - att_typtype == TYPTYPE_PSEUDO) + if (att_typtype == TYPTYPE_PSEUDO) { /* * Refuse any attempt to create a pseudo-type column, except for a diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index 79a9f108a66..417cfc36ec6 100644 --- a/src/include/catalog/catversion.h +++ b/src/include/catalog/catversion.h @@ -53,6 +53,6 @@ */ /* yyyymmddN */ -#define CATALOG_VERSION_NO 201701201 +#define CATALOG_VERSION_NO 201701251 #endif diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h index c2350f38677..6e4c65e6ad3 100644 --- a/src/include/catalog/pg_type.h +++ b/src/include/catalog/pg_type.h @@ -418,7 +418,7 @@ DESCR("relative, limited-range time interval (Unix delta time)"); DATA(insert OID = 704 ( tinterval PGNSP PGUID 12 f b T f t \054 0 0 1025 tintervalin tintervalout tintervalrecv tintervalsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); DESCR("(abstime,abstime), time interval"); #define TINTERVALOID 704 -DATA(insert OID = 705 ( unknown PGNSP PGUID -2 f b X f t \054 0 0 0 unknownin unknownout unknownrecv unknownsend - - - c p f 0 -1 0 0 _null_ _null_ _null_ )); +DATA(insert OID = 705 ( unknown PGNSP PGUID -2 f p X f t \054 0 0 0 unknownin unknownout unknownrecv unknownsend - - - c p f 0 -1 0 0 _null_ _null_ _null_ )); DESCR(""); #define UNKNOWNOID 705 diff --git a/src/test/regress/expected/type_sanity.out b/src/test/regress/expected/type_sanity.out index e5adfba631d..312d290e73f 100644 --- a/src/test/regress/expected/type_sanity.out +++ b/src/test/regress/expected/type_sanity.out @@ -59,7 +59,7 @@ WHERE (p1.typtype = 'c' AND p1.typrelid = 0) OR -- Look for types that should have an array type according to their typtype, -- but don't. We exclude composites here because we have not bothered to -- make array types corresponding to the system catalogs' rowtypes. --- NOTE: as of 9.1, this check finds pg_node_tree, smgr, and unknown. +-- NOTE: as of v10, this check finds pg_node_tree and smgr. SELECT p1.oid, p1.typname FROM pg_type as p1 WHERE p1.typtype not in ('c','d','p') AND p1.typname NOT LIKE E'\\_%' @@ -71,8 +71,7 @@ WHERE p1.typtype not in ('c','d','p') AND p1.typname NOT LIKE E'\\_%' -----+-------------- 194 | pg_node_tree 210 | smgr - 705 | unknown -(3 rows) +(2 rows) -- Make sure typarray points to a varlena array type of our own base SELECT p1.oid, p1.typname as basetype, p2.typname as arraytype, diff --git a/src/test/regress/sql/type_sanity.sql b/src/test/regress/sql/type_sanity.sql index f7c5c9d5d43..0282f84d2e5 100644 --- a/src/test/regress/sql/type_sanity.sql +++ b/src/test/regress/sql/type_sanity.sql @@ -53,7 +53,7 @@ WHERE (p1.typtype = 'c' AND p1.typrelid = 0) OR -- Look for types that should have an array type according to their typtype, -- but don't. We exclude composites here because we have not bothered to -- make array types corresponding to the system catalogs' rowtypes. --- NOTE: as of 9.1, this check finds pg_node_tree, smgr, and unknown. +-- NOTE: as of v10, this check finds pg_node_tree and smgr. SELECT p1.oid, p1.typname FROM pg_type as p1 |