mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-23 19:39:53 +08:00
Fix findoidjoins to recognize oidvector columns.
Somehow we'd never noticed this oversight, even though it means that such basic columns as pg_proc.proargtypes were not being validated by the oidjoins test. Correct the query and update the test script with the newly-found dependencies.
This commit is contained in:
parent
ebeb3dea77
commit
96d175e3e2
@ -1401,6 +1401,46 @@ WHERE conexclop != 0 AND
|
||||
------+-----------
|
||||
(0 rows)
|
||||
|
||||
SELECT ctid, indcollation
|
||||
FROM (SELECT ctid, unnest(indcollation) AS indcollation FROM pg_catalog.pg_index) fk
|
||||
WHERE indcollation != 0 AND
|
||||
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.indcollation);
|
||||
ctid | indcollation
|
||||
------+--------------
|
||||
(0 rows)
|
||||
|
||||
SELECT ctid, indclass
|
||||
FROM (SELECT ctid, unnest(indclass) AS indclass FROM pg_catalog.pg_index) fk
|
||||
WHERE indclass != 0 AND
|
||||
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opclass pk WHERE pk.oid = fk.indclass);
|
||||
ctid | indclass
|
||||
------+----------
|
||||
(0 rows)
|
||||
|
||||
SELECT ctid, partclass
|
||||
FROM (SELECT ctid, unnest(partclass) AS partclass FROM pg_catalog.pg_partitioned_table) fk
|
||||
WHERE partclass != 0 AND
|
||||
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opclass pk WHERE pk.oid = fk.partclass);
|
||||
ctid | partclass
|
||||
------+-----------
|
||||
(0 rows)
|
||||
|
||||
SELECT ctid, partcollation
|
||||
FROM (SELECT ctid, unnest(partcollation) AS partcollation FROM pg_catalog.pg_partitioned_table) fk
|
||||
WHERE partcollation != 0 AND
|
||||
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.partcollation);
|
||||
ctid | partcollation
|
||||
------+---------------
|
||||
(0 rows)
|
||||
|
||||
SELECT ctid, proargtypes
|
||||
FROM (SELECT ctid, unnest(proargtypes) AS proargtypes FROM pg_catalog.pg_proc) fk
|
||||
WHERE proargtypes != 0 AND
|
||||
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.proargtypes);
|
||||
ctid | proargtypes
|
||||
------+-------------
|
||||
(0 rows)
|
||||
|
||||
SELECT ctid, proallargtypes
|
||||
FROM (SELECT ctid, unnest(proallargtypes) AS proallargtypes FROM pg_catalog.pg_proc) fk
|
||||
WHERE proallargtypes != 0 AND
|
||||
|
@ -701,6 +701,26 @@ SELECT ctid, conexclop
|
||||
FROM (SELECT ctid, unnest(conexclop) AS conexclop FROM pg_catalog.pg_constraint) fk
|
||||
WHERE conexclop != 0 AND
|
||||
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.conexclop);
|
||||
SELECT ctid, indcollation
|
||||
FROM (SELECT ctid, unnest(indcollation) AS indcollation FROM pg_catalog.pg_index) fk
|
||||
WHERE indcollation != 0 AND
|
||||
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.indcollation);
|
||||
SELECT ctid, indclass
|
||||
FROM (SELECT ctid, unnest(indclass) AS indclass FROM pg_catalog.pg_index) fk
|
||||
WHERE indclass != 0 AND
|
||||
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opclass pk WHERE pk.oid = fk.indclass);
|
||||
SELECT ctid, partclass
|
||||
FROM (SELECT ctid, unnest(partclass) AS partclass FROM pg_catalog.pg_partitioned_table) fk
|
||||
WHERE partclass != 0 AND
|
||||
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opclass pk WHERE pk.oid = fk.partclass);
|
||||
SELECT ctid, partcollation
|
||||
FROM (SELECT ctid, unnest(partcollation) AS partcollation FROM pg_catalog.pg_partitioned_table) fk
|
||||
WHERE partcollation != 0 AND
|
||||
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.partcollation);
|
||||
SELECT ctid, proargtypes
|
||||
FROM (SELECT ctid, unnest(proargtypes) AS proargtypes FROM pg_catalog.pg_proc) fk
|
||||
WHERE proargtypes != 0 AND
|
||||
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.proargtypes);
|
||||
SELECT ctid, proallargtypes
|
||||
FROM (SELECT ctid, unnest(proallargtypes) AS proallargtypes FROM pg_catalog.pg_proc) fk
|
||||
WHERE proallargtypes != 0 AND
|
||||
|
@ -235,6 +235,11 @@ Join pg_catalog.pg_constraint.conpfeqop []=> pg_catalog.pg_operator.oid
|
||||
Join pg_catalog.pg_constraint.conppeqop []=> pg_catalog.pg_operator.oid
|
||||
Join pg_catalog.pg_constraint.conffeqop []=> pg_catalog.pg_operator.oid
|
||||
Join pg_catalog.pg_constraint.conexclop []=> pg_catalog.pg_operator.oid
|
||||
Join pg_catalog.pg_index.indcollation []=> pg_catalog.pg_collation.oid
|
||||
Join pg_catalog.pg_index.indclass []=> pg_catalog.pg_opclass.oid
|
||||
Join pg_catalog.pg_partitioned_table.partclass []=> pg_catalog.pg_opclass.oid
|
||||
Join pg_catalog.pg_partitioned_table.partcollation []=> pg_catalog.pg_collation.oid
|
||||
Join pg_catalog.pg_proc.proargtypes []=> pg_catalog.pg_type.oid
|
||||
Join pg_catalog.pg_proc.proallargtypes []=> pg_catalog.pg_type.oid
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
|
@ -59,7 +59,6 @@ main(int argc, char **argv)
|
||||
/* Get a list of system relations that have OIDs */
|
||||
|
||||
printfPQExpBuffer(&sql,
|
||||
"SET search_path = public;"
|
||||
"SELECT c.relname, (SELECT nspname FROM "
|
||||
"pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname "
|
||||
"FROM pg_catalog.pg_class c "
|
||||
@ -170,6 +169,7 @@ main(int argc, char **argv)
|
||||
" AND c.relkind = " CppAsString2(RELKIND_RELATION)
|
||||
" AND a.attrelid = c.oid"
|
||||
" AND a.atttypid IN ('pg_catalog.oid[]'::regtype, "
|
||||
" 'pg_catalog.oidvector'::regtype, "
|
||||
" 'pg_catalog.regclass[]'::regtype, "
|
||||
" 'pg_catalog.regoper[]'::regtype, "
|
||||
" 'pg_catalog.regoperator[]'::regtype, "
|
||||
|
Loading…
Reference in New Issue
Block a user