Skip to content

Commit 96d175e

Browse files
committed
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.
1 parent ebeb3de commit 96d175e

File tree

4 files changed

+66
-1
lines changed

4 files changed

+66
-1
lines changed

src/test/regress/expected/oidjoins.out

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1401,6 +1401,46 @@ WHERE conexclop != 0 AND
14011401
------+-----------
14021402
(0 rows)
14031403

1404+
SELECT ctid, indcollation
1405+
FROM (SELECT ctid, unnest(indcollation) AS indcollation FROM pg_catalog.pg_index) fk
1406+
WHERE indcollation != 0 AND
1407+
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.indcollation);
1408+
ctid | indcollation
1409+
------+--------------
1410+
(0 rows)
1411+
1412+
SELECT ctid, indclass
1413+
FROM (SELECT ctid, unnest(indclass) AS indclass FROM pg_catalog.pg_index) fk
1414+
WHERE indclass != 0 AND
1415+
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opclass pk WHERE pk.oid = fk.indclass);
1416+
ctid | indclass
1417+
------+----------
1418+
(0 rows)
1419+
1420+
SELECT ctid, partclass
1421+
FROM (SELECT ctid, unnest(partclass) AS partclass FROM pg_catalog.pg_partitioned_table) fk
1422+
WHERE partclass != 0 AND
1423+
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opclass pk WHERE pk.oid = fk.partclass);
1424+
ctid | partclass
1425+
------+-----------
1426+
(0 rows)
1427+
1428+
SELECT ctid, partcollation
1429+
FROM (SELECT ctid, unnest(partcollation) AS partcollation FROM pg_catalog.pg_partitioned_table) fk
1430+
WHERE partcollation != 0 AND
1431+
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.partcollation);
1432+
ctid | partcollation
1433+
------+---------------
1434+
(0 rows)
1435+
1436+
SELECT ctid, proargtypes
1437+
FROM (SELECT ctid, unnest(proargtypes) AS proargtypes FROM pg_catalog.pg_proc) fk
1438+
WHERE proargtypes != 0 AND
1439+
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.proargtypes);
1440+
ctid | proargtypes
1441+
------+-------------
1442+
(0 rows)
1443+
14041444
SELECT ctid, proallargtypes
14051445
FROM (SELECT ctid, unnest(proallargtypes) AS proallargtypes FROM pg_catalog.pg_proc) fk
14061446
WHERE proallargtypes != 0 AND

src/test/regress/sql/oidjoins.sql

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -701,6 +701,26 @@ SELECT ctid, conexclop
701701
FROM (SELECT ctid, unnest(conexclop) AS conexclop FROM pg_catalog.pg_constraint) fk
702702
WHERE conexclop != 0 AND
703703
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.conexclop);
704+
SELECT ctid, indcollation
705+
FROM (SELECT ctid, unnest(indcollation) AS indcollation FROM pg_catalog.pg_index) fk
706+
WHERE indcollation != 0 AND
707+
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.indcollation);
708+
SELECT ctid, indclass
709+
FROM (SELECT ctid, unnest(indclass) AS indclass FROM pg_catalog.pg_index) fk
710+
WHERE indclass != 0 AND
711+
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opclass pk WHERE pk.oid = fk.indclass);
712+
SELECT ctid, partclass
713+
FROM (SELECT ctid, unnest(partclass) AS partclass FROM pg_catalog.pg_partitioned_table) fk
714+
WHERE partclass != 0 AND
715+
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opclass pk WHERE pk.oid = fk.partclass);
716+
SELECT ctid, partcollation
717+
FROM (SELECT ctid, unnest(partcollation) AS partcollation FROM pg_catalog.pg_partitioned_table) fk
718+
WHERE partcollation != 0 AND
719+
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.partcollation);
720+
SELECT ctid, proargtypes
721+
FROM (SELECT ctid, unnest(proargtypes) AS proargtypes FROM pg_catalog.pg_proc) fk
722+
WHERE proargtypes != 0 AND
723+
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.proargtypes);
704724
SELECT ctid, proallargtypes
705725
FROM (SELECT ctid, unnest(proallargtypes) AS proallargtypes FROM pg_catalog.pg_proc) fk
706726
WHERE proallargtypes != 0 AND

src/tools/findoidjoins/README

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,11 @@ Join pg_catalog.pg_constraint.conpfeqop []=> pg_catalog.pg_operator.oid
235235
Join pg_catalog.pg_constraint.conppeqop []=> pg_catalog.pg_operator.oid
236236
Join pg_catalog.pg_constraint.conffeqop []=> pg_catalog.pg_operator.oid
237237
Join pg_catalog.pg_constraint.conexclop []=> pg_catalog.pg_operator.oid
238+
Join pg_catalog.pg_index.indcollation []=> pg_catalog.pg_collation.oid
239+
Join pg_catalog.pg_index.indclass []=> pg_catalog.pg_opclass.oid
240+
Join pg_catalog.pg_partitioned_table.partclass []=> pg_catalog.pg_opclass.oid
241+
Join pg_catalog.pg_partitioned_table.partcollation []=> pg_catalog.pg_collation.oid
242+
Join pg_catalog.pg_proc.proargtypes []=> pg_catalog.pg_type.oid
238243
Join pg_catalog.pg_proc.proallargtypes []=> pg_catalog.pg_type.oid
239244

240245
---------------------------------------------------------------------------

src/tools/findoidjoins/findoidjoins.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ main(int argc, char **argv)
5959
/* Get a list of system relations that have OIDs */
6060

6161
printfPQExpBuffer(&sql,
62-
"SET search_path = public;"
6362
"SELECT c.relname, (SELECT nspname FROM "
6463
"pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname "
6564
"FROM pg_catalog.pg_class c "
@@ -170,6 +169,7 @@ main(int argc, char **argv)
170169
" AND c.relkind = " CppAsString2(RELKIND_RELATION)
171170
" AND a.attrelid = c.oid"
172171
" AND a.atttypid IN ('pg_catalog.oid[]'::regtype, "
172+
" 'pg_catalog.oidvector'::regtype, "
173173
" 'pg_catalog.regclass[]'::regtype, "
174174
" 'pg_catalog.regoper[]'::regtype, "
175175
" 'pg_catalog.regoperator[]'::regtype, "

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy