From 4165d5b6d7d2e399edbc6d027039358794aa8f04 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 14 Nov 2011 20:28:38 -0500 Subject: [PATCH] Update oidjoins regression test to match git HEAD. This is mostly to add some sanity checking for the pg_range catalog. --- src/test/regress/expected/oidjoins.out | 64 ++++++++++++++++++++++++++ src/test/regress/sql/oidjoins.sql | 32 +++++++++++++ src/tools/findoidjoins/README | 14 ++++-- 3 files changed, 107 insertions(+), 3 deletions(-) diff --git a/src/test/regress/expected/oidjoins.out b/src/test/regress/expected/oidjoins.out index a7426dde73..06ed85677a 100644 --- a/src/test/regress/expected/oidjoins.out +++ b/src/test/regress/expected/oidjoins.out @@ -769,6 +769,14 @@ WHERE provariadic != 0 AND ------+------------- (0 rows) +SELECT ctid, protransform +FROM pg_catalog.pg_proc fk +WHERE protransform != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.protransform); + ctid | protransform +------+-------------- +(0 rows) + SELECT ctid, prorettype FROM pg_catalog.pg_proc fk WHERE prorettype != 0 AND @@ -777,6 +785,54 @@ WHERE prorettype != 0 AND ------+------------ (0 rows) +SELECT ctid, rngtypid +FROM pg_catalog.pg_range fk +WHERE rngtypid != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.rngtypid); + ctid | rngtypid +------+---------- +(0 rows) + +SELECT ctid, rngsubtype +FROM pg_catalog.pg_range fk +WHERE rngsubtype != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.rngsubtype); + ctid | rngsubtype +------+------------ +(0 rows) + +SELECT ctid, rngcollation +FROM pg_catalog.pg_range fk +WHERE rngcollation != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.rngcollation); + ctid | rngcollation +------+-------------- +(0 rows) + +SELECT ctid, rngsubopc +FROM pg_catalog.pg_range fk +WHERE rngsubopc != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opclass pk WHERE pk.oid = fk.rngsubopc); + ctid | rngsubopc +------+----------- +(0 rows) + +SELECT ctid, rngcanonical +FROM pg_catalog.pg_range fk +WHERE rngcanonical != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.rngcanonical); + ctid | rngcanonical +------+-------------- +(0 rows) + +SELECT ctid, rngsubdiff +FROM pg_catalog.pg_range fk +WHERE rngsubdiff != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.rngsubdiff); + ctid | rngsubdiff +------+------------ +(0 rows) + SELECT ctid, ev_class FROM pg_catalog.pg_rewrite fk WHERE ev_class != 0 AND @@ -1153,6 +1209,14 @@ WHERE conffeqop != 0 AND ------+----------- (0 rows) +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); + ctid | conexclop +------+----------- +(0 rows) + SELECT ctid, proallargtypes FROM (SELECT ctid, unnest(proallargtypes) AS proallargtypes FROM pg_catalog.pg_proc) fk WHERE proallargtypes != 0 AND diff --git a/src/test/regress/sql/oidjoins.sql b/src/test/regress/sql/oidjoins.sql index 20ca7edd3b..6422da26ad 100644 --- a/src/test/regress/sql/oidjoins.sql +++ b/src/test/regress/sql/oidjoins.sql @@ -385,10 +385,38 @@ SELECT ctid, provariadic FROM pg_catalog.pg_proc fk WHERE provariadic != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.provariadic); +SELECT ctid, protransform +FROM pg_catalog.pg_proc fk +WHERE protransform != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.protransform); SELECT ctid, prorettype FROM pg_catalog.pg_proc fk WHERE prorettype != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.prorettype); +SELECT ctid, rngtypid +FROM pg_catalog.pg_range fk +WHERE rngtypid != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.rngtypid); +SELECT ctid, rngsubtype +FROM pg_catalog.pg_range fk +WHERE rngsubtype != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.rngsubtype); +SELECT ctid, rngcollation +FROM pg_catalog.pg_range fk +WHERE rngcollation != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.rngcollation); +SELECT ctid, rngsubopc +FROM pg_catalog.pg_range fk +WHERE rngsubopc != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opclass pk WHERE pk.oid = fk.rngsubopc); +SELECT ctid, rngcanonical +FROM pg_catalog.pg_range fk +WHERE rngcanonical != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.rngcanonical); +SELECT ctid, rngsubdiff +FROM pg_catalog.pg_range fk +WHERE rngsubdiff != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.rngsubdiff); SELECT ctid, ev_class FROM pg_catalog.pg_rewrite fk WHERE ev_class != 0 AND @@ -577,6 +605,10 @@ SELECT ctid, conffeqop FROM (SELECT ctid, unnest(conffeqop) AS conffeqop FROM pg_catalog.pg_constraint) fk WHERE conffeqop != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.conffeqop); +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, proallargtypes FROM (SELECT ctid, unnest(proallargtypes) AS proallargtypes FROM pg_catalog.pg_proc) fk WHERE proallargtypes != 0 AND diff --git a/src/tools/findoidjoins/README b/src/tools/findoidjoins/README index c4a96e3c4b..b5c4d1b805 100644 --- a/src/tools/findoidjoins/README +++ b/src/tools/findoidjoins/README @@ -5,7 +5,7 @@ findoidjoins This program scans a database and prints oid fields (also reg* fields) and the tables they join to. It is normally used to check the system -catalog join relationships (shown below for 9.1devel). +catalog join relationships (shown below for 9.2devel as of 2011-11-14). Historically this has been run against an empty database such as template1, but there's a problem with that approach: some of the catalogs are empty @@ -16,7 +16,7 @@ catalogs in interesting ways. Note that unexpected matches may indicate bogus entries in system tables; don't accept a peculiar match without question. In particular, a field shown as joining to more than one target table is probably messed up. -In 9.1devel, the *only* fields that should join to more than one target +In 9.2devel, the *only* fields that should join to more than one target table are pg_description.objoid, pg_depend.objid, pg_depend.refobjid, pg_shdescription.objoid, pg_shdepend.objid, and pg_shdepend.refobjid. (Running make_oidjoins_check is an easy way to spot fields joining to more @@ -33,7 +33,7 @@ regression test. The oidjoins test should be updated after any revision in the patterns of cross-links between system tables. (Typically we update it at the end of each development cycle.) -NOTE: as of 9.1devel, make_oidjoins_check produces two bogus join checks: +NOTE: as of 9.2devel, make_oidjoins_check produces two bogus join checks: Join pg_catalog.pg_class.relfilenode => pg_catalog.pg_class.oid Join pg_catalog.pg_database.datlastsysoid => pg_catalog.pg_database.oid These are artifacts and should not be added to the oidjoins regress test. @@ -138,7 +138,14 @@ Join pg_catalog.pg_proc.pronamespace => pg_catalog.pg_namespace.oid Join pg_catalog.pg_proc.proowner => pg_catalog.pg_authid.oid Join pg_catalog.pg_proc.prolang => pg_catalog.pg_language.oid Join pg_catalog.pg_proc.provariadic => pg_catalog.pg_type.oid +Join pg_catalog.pg_proc.protransform => pg_catalog.pg_proc.oid Join pg_catalog.pg_proc.prorettype => pg_catalog.pg_type.oid +Join pg_catalog.pg_range.rngtypid => pg_catalog.pg_type.oid +Join pg_catalog.pg_range.rngsubtype => pg_catalog.pg_type.oid +Join pg_catalog.pg_range.rngcollation => pg_catalog.pg_collation.oid +Join pg_catalog.pg_range.rngsubopc => pg_catalog.pg_opclass.oid +Join pg_catalog.pg_range.rngcanonical => pg_catalog.pg_proc.oid +Join pg_catalog.pg_range.rngsubdiff => pg_catalog.pg_proc.oid Join pg_catalog.pg_rewrite.ev_class => pg_catalog.pg_class.oid Join pg_catalog.pg_shdepend.refclassid => pg_catalog.pg_class.oid Join pg_catalog.pg_shdescription.classoid => pg_catalog.pg_class.oid @@ -186,6 +193,7 @@ Join pg_catalog.pg_type.typcollation => pg_catalog.pg_collation.oid 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_proc.proallargtypes []=> pg_catalog.pg_type.oid ---------------------------------------------------------------------------