mirror of
https://github.com/postgres/postgres.git
synced 2025-12-12 02:37:31 +03:00
Minor catalog cleanups for composite-type stuff. Adjust signatures shown
in pg_proc for record_in, record_out, etc to reflect that these routines now make use of the second OID parameter. Remove the ancient SET entry in pg_type, which is now highly unlikely to ever become used again. Adjust type_sanity regression test to match.
This commit is contained in:
@@ -56,7 +56,7 @@ WHERE (p1.typtype = 'c' AND p1.typrelid = 0) OR
|
||||
(0 rows)
|
||||
|
||||
-- Look for basic types that don't have an array type.
|
||||
-- NOTE: as of 7.3, this check finds SET, smgr, and unknown.
|
||||
-- NOTE: as of 7.5, this check finds smgr and unknown.
|
||||
SELECT p1.oid, p1.typname
|
||||
FROM pg_type as p1
|
||||
WHERE p1.typtype in ('b') AND p1.typname NOT LIKE '\\_%' AND NOT EXISTS
|
||||
@@ -65,10 +65,9 @@ WHERE p1.typtype in ('b') AND p1.typname NOT LIKE '\\_%' AND NOT EXISTS
|
||||
p2.typelem = p1.oid);
|
||||
oid | typname
|
||||
-----+---------
|
||||
32 | SET
|
||||
210 | smgr
|
||||
705 | unknown
|
||||
(3 rows)
|
||||
(2 rows)
|
||||
|
||||
-- Conversion routines must be provided except in 'c' entries.
|
||||
SELECT p1.oid, p1.typname
|
||||
@@ -84,6 +83,8 @@ SELECT p1.oid, p1.typname, p2.oid, p2.proname
|
||||
FROM pg_type AS p1, pg_proc AS p2
|
||||
WHERE p1.typinput = p2.oid AND p1.typtype in ('b', 'p') AND NOT
|
||||
((p2.pronargs = 1 AND p2.proargtypes[0] = 'cstring'::regtype) OR
|
||||
(p2.pronargs = 2 AND p2.proargtypes[0] = 'cstring'::regtype AND
|
||||
p2.proargtypes[1] = 'oid'::regtype) OR
|
||||
(p2.pronargs = 3 AND p2.proargtypes[0] = 'cstring'::regtype AND
|
||||
p2.proargtypes[1] = 'oid'::regtype AND
|
||||
p2.proargtypes[2] = 'int4'::regtype));
|
||||
@@ -91,7 +92,7 @@ WHERE p1.typinput = p2.oid AND p1.typtype in ('b', 'p') AND NOT
|
||||
-----+---------+-----+---------
|
||||
(0 rows)
|
||||
|
||||
-- As of 7.3, this check finds SET and refcursor, which are borrowing
|
||||
-- As of 7.5, this check finds refcursor, which is borrowing
|
||||
-- other types' I/O routines
|
||||
SELECT p1.oid, p1.typname, p2.oid, p2.proname
|
||||
FROM pg_type AS p1, pg_proc AS p2
|
||||
@@ -99,11 +100,10 @@ WHERE p1.typinput = p2.oid AND p1.typtype in ('b', 'p') AND NOT
|
||||
(p1.typelem != 0 AND p1.typlen < 0) AND NOT
|
||||
(p2.prorettype = p1.oid AND NOT p2.proretset)
|
||||
ORDER BY 1;
|
||||
oid | typname | oid | proname
|
||||
------+-----------+-----+-----------
|
||||
32 | SET | 109 | unknownin
|
||||
oid | typname | oid | proname
|
||||
------+-----------+-----+---------
|
||||
1790 | refcursor | 46 | textin
|
||||
(2 rows)
|
||||
(1 row)
|
||||
|
||||
-- Varlena array types will point to array_in
|
||||
SELECT p1.oid, p1.typname, p2.oid, p2.proname
|
||||
@@ -116,20 +116,21 @@ WHERE p1.typinput = p2.oid AND p1.typtype in ('b', 'p') AND
|
||||
(0 rows)
|
||||
|
||||
-- Check for bogus typoutput routines
|
||||
-- As of 7.3, this check finds SET and refcursor, which are borrowing
|
||||
-- As of 7.5, this check finds refcursor, which is borrowing
|
||||
-- other types' I/O routines
|
||||
SELECT p1.oid, p1.typname, p2.oid, p2.proname
|
||||
FROM pg_type AS p1, pg_proc AS p2
|
||||
WHERE p1.typoutput = p2.oid AND p1.typtype in ('b', 'p') AND NOT
|
||||
((p2.pronargs = 1 AND p2.proargtypes[0] = p1.oid) OR
|
||||
(p2.pronargs = 2 AND p2.proargtypes[0] = p1.oid AND
|
||||
p2.proargtypes[1] = 'oid'::regtype) OR
|
||||
(p2.oid = 'array_out'::regproc AND
|
||||
p1.typelem != 0 AND p1.typlen = -1))
|
||||
ORDER BY 1;
|
||||
oid | typname | oid | proname
|
||||
------+-----------+-----+------------
|
||||
32 | SET | 110 | unknownout
|
||||
oid | typname | oid | proname
|
||||
------+-----------+-----+---------
|
||||
1790 | refcursor | 47 | textout
|
||||
(2 rows)
|
||||
(1 row)
|
||||
|
||||
SELECT p1.oid, p1.typname, p2.oid, p2.proname
|
||||
FROM pg_type AS p1, pg_proc AS p2
|
||||
@@ -180,6 +181,8 @@ SELECT p1.oid, p1.typname, p2.oid, p2.proname
|
||||
FROM pg_type AS p1, pg_proc AS p2
|
||||
WHERE p1.typsend = p2.oid AND p1.typtype in ('b', 'p') AND NOT
|
||||
((p2.pronargs = 1 AND p2.proargtypes[0] = p1.oid) OR
|
||||
(p2.pronargs = 2 AND p2.proargtypes[0] = p1.oid AND
|
||||
p2.proargtypes[1] = 'oid'::regtype) OR
|
||||
(p2.oid = 'array_send'::regproc AND
|
||||
p1.typelem != 0 AND p1.typlen = -1))
|
||||
ORDER BY 1;
|
||||
|
||||
@@ -50,7 +50,7 @@ WHERE (p1.typtype = 'c' AND p1.typrelid = 0) OR
|
||||
(p1.typtype != 'c' AND p1.typrelid != 0);
|
||||
|
||||
-- Look for basic types that don't have an array type.
|
||||
-- NOTE: as of 7.3, this check finds SET, smgr, and unknown.
|
||||
-- NOTE: as of 7.5, this check finds smgr and unknown.
|
||||
|
||||
SELECT p1.oid, p1.typname
|
||||
FROM pg_type as p1
|
||||
@@ -72,11 +72,13 @@ SELECT p1.oid, p1.typname, p2.oid, p2.proname
|
||||
FROM pg_type AS p1, pg_proc AS p2
|
||||
WHERE p1.typinput = p2.oid AND p1.typtype in ('b', 'p') AND NOT
|
||||
((p2.pronargs = 1 AND p2.proargtypes[0] = 'cstring'::regtype) OR
|
||||
(p2.pronargs = 2 AND p2.proargtypes[0] = 'cstring'::regtype AND
|
||||
p2.proargtypes[1] = 'oid'::regtype) OR
|
||||
(p2.pronargs = 3 AND p2.proargtypes[0] = 'cstring'::regtype AND
|
||||
p2.proargtypes[1] = 'oid'::regtype AND
|
||||
p2.proargtypes[2] = 'int4'::regtype));
|
||||
|
||||
-- As of 7.3, this check finds SET and refcursor, which are borrowing
|
||||
-- As of 7.5, this check finds refcursor, which is borrowing
|
||||
-- other types' I/O routines
|
||||
SELECT p1.oid, p1.typname, p2.oid, p2.proname
|
||||
FROM pg_type AS p1, pg_proc AS p2
|
||||
@@ -94,12 +96,14 @@ WHERE p1.typinput = p2.oid AND p1.typtype in ('b', 'p') AND
|
||||
|
||||
-- Check for bogus typoutput routines
|
||||
|
||||
-- As of 7.3, this check finds SET and refcursor, which are borrowing
|
||||
-- As of 7.5, this check finds refcursor, which is borrowing
|
||||
-- other types' I/O routines
|
||||
SELECT p1.oid, p1.typname, p2.oid, p2.proname
|
||||
FROM pg_type AS p1, pg_proc AS p2
|
||||
WHERE p1.typoutput = p2.oid AND p1.typtype in ('b', 'p') AND NOT
|
||||
((p2.pronargs = 1 AND p2.proargtypes[0] = p1.oid) OR
|
||||
(p2.pronargs = 2 AND p2.proargtypes[0] = p1.oid AND
|
||||
p2.proargtypes[1] = 'oid'::regtype) OR
|
||||
(p2.oid = 'array_out'::regproc AND
|
||||
p1.typelem != 0 AND p1.typlen = -1))
|
||||
ORDER BY 1;
|
||||
@@ -142,6 +146,8 @@ SELECT p1.oid, p1.typname, p2.oid, p2.proname
|
||||
FROM pg_type AS p1, pg_proc AS p2
|
||||
WHERE p1.typsend = p2.oid AND p1.typtype in ('b', 'p') AND NOT
|
||||
((p2.pronargs = 1 AND p2.proargtypes[0] = p1.oid) OR
|
||||
(p2.pronargs = 2 AND p2.proargtypes[0] = p1.oid AND
|
||||
p2.proargtypes[1] = 'oid'::regtype) OR
|
||||
(p2.oid = 'array_send'::regproc AND
|
||||
p1.typelem != 0 AND p1.typlen = -1))
|
||||
ORDER BY 1;
|
||||
|
||||
Reference in New Issue
Block a user