]> granicus.if.org Git - postgresql/commitdiff
Update oidjoins regression test for 9.4.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 16 Apr 2014 18:28:59 +0000 (14:28 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 16 Apr 2014 18:28:59 +0000 (14:28 -0400)
Now that we're pretty much feature-frozen, it's time to update the checks
on system catalog foreign-key references.

(It looks like we missed doing this altogether for 9.3.  Sigh.)

src/test/regress/expected/oidjoins.out
src/test/regress/sql/oidjoins.sql
src/tools/findoidjoins/.gitignore [new file with mode: 0644]
src/tools/findoidjoins/README

index 6c5cb5a8737ae2c8c45ba5a30a100eae86c7d1cb..bee76ce8f275cf33bdf7f78f7278d4e0a0f36ccf 100644 (file)
@@ -25,6 +25,30 @@ WHERE        aggfinalfn != 0 AND
 ------+------------
 (0 rows)
 
+SELECT ctid, aggmtransfn
+FROM   pg_catalog.pg_aggregate fk
+WHERE  aggmtransfn != 0 AND
+       NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggmtransfn);
+ ctid | aggmtransfn 
+------+-------------
+(0 rows)
+
+SELECT ctid, aggminvtransfn
+FROM   pg_catalog.pg_aggregate fk
+WHERE  aggminvtransfn != 0 AND
+       NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggminvtransfn);
+ ctid | aggminvtransfn 
+------+----------------
+(0 rows)
+
+SELECT ctid, aggmfinalfn
+FROM   pg_catalog.pg_aggregate fk
+WHERE  aggmfinalfn != 0 AND
+       NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggmfinalfn);
+ ctid | aggmfinalfn 
+------+-------------
+(0 rows)
+
 SELECT ctid, aggsortop
 FROM   pg_catalog.pg_aggregate fk
 WHERE  aggsortop != 0 AND
@@ -41,6 +65,14 @@ WHERE        aggtranstype != 0 AND
 ------+--------------
 (0 rows)
 
+SELECT ctid, aggmtranstype
+FROM   pg_catalog.pg_aggregate fk
+WHERE  aggmtranstype != 0 AND
+       NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.aggmtranstype);
+ ctid | aggmtranstype 
+------+---------------
+(0 rows)
+
 SELECT ctid, amkeytype
 FROM   pg_catalog.pg_am fk
 WHERE  amkeytype != 0 AND
@@ -145,6 +177,14 @@ WHERE      amvacuumcleanup != 0 AND
 ------+-----------------
 (0 rows)
 
+SELECT ctid, amcanreturn
+FROM   pg_catalog.pg_am fk
+WHERE  amcanreturn != 0 AND
+       NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.amcanreturn);
+ ctid | amcanreturn 
+------+-------------
+(0 rows)
+
 SELECT ctid, amcostestimate
 FROM   pg_catalog.pg_am fk
 WHERE  amcostestimate != 0 AND
@@ -881,6 +921,22 @@ WHERE      staop3 != 0 AND
 ------+--------
 (0 rows)
 
+SELECT ctid, staop4
+FROM   pg_catalog.pg_statistic fk
+WHERE  staop4 != 0 AND
+       NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.staop4);
+ ctid | staop4 
+------+--------
+(0 rows)
+
+SELECT ctid, staop5
+FROM   pg_catalog.pg_statistic fk
+WHERE  staop5 != 0 AND
+       NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.staop5);
+ ctid | staop5 
+------+--------
+(0 rows)
+
 SELECT ctid, spcowner
 FROM   pg_catalog.pg_tablespace fk
 WHERE  spcowner != 0 AND
index 9b91683ea5a560abb9ed90afa88c257d7c6ec215..651068b964cdcb6f7a9f89de8328268a26100d2f 100644 (file)
@@ -13,6 +13,18 @@ SELECT       ctid, aggfinalfn
 FROM   pg_catalog.pg_aggregate fk
 WHERE  aggfinalfn != 0 AND
        NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggfinalfn);
+SELECT ctid, aggmtransfn
+FROM   pg_catalog.pg_aggregate fk
+WHERE  aggmtransfn != 0 AND
+       NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggmtransfn);
+SELECT ctid, aggminvtransfn
+FROM   pg_catalog.pg_aggregate fk
+WHERE  aggminvtransfn != 0 AND
+       NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggminvtransfn);
+SELECT ctid, aggmfinalfn
+FROM   pg_catalog.pg_aggregate fk
+WHERE  aggmfinalfn != 0 AND
+       NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggmfinalfn);
 SELECT ctid, aggsortop
 FROM   pg_catalog.pg_aggregate fk
 WHERE  aggsortop != 0 AND
@@ -21,6 +33,10 @@ SELECT       ctid, aggtranstype
 FROM   pg_catalog.pg_aggregate fk
 WHERE  aggtranstype != 0 AND
        NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.aggtranstype);
+SELECT ctid, aggmtranstype
+FROM   pg_catalog.pg_aggregate fk
+WHERE  aggmtranstype != 0 AND
+       NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.aggmtranstype);
 SELECT ctid, amkeytype
 FROM   pg_catalog.pg_am fk
 WHERE  amkeytype != 0 AND
@@ -73,6 +89,10 @@ SELECT       ctid, amvacuumcleanup
 FROM   pg_catalog.pg_am fk
 WHERE  amvacuumcleanup != 0 AND
        NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.amvacuumcleanup);
+SELECT ctid, amcanreturn
+FROM   pg_catalog.pg_am fk
+WHERE  amcanreturn != 0 AND
+       NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.amcanreturn);
 SELECT ctid, amcostestimate
 FROM   pg_catalog.pg_am fk
 WHERE  amcostestimate != 0 AND
@@ -441,6 +461,14 @@ SELECT     ctid, staop3
 FROM   pg_catalog.pg_statistic fk
 WHERE  staop3 != 0 AND
        NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.staop3);
+SELECT ctid, staop4
+FROM   pg_catalog.pg_statistic fk
+WHERE  staop4 != 0 AND
+       NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.staop4);
+SELECT ctid, staop5
+FROM   pg_catalog.pg_statistic fk
+WHERE  staop5 != 0 AND
+       NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.staop5);
 SELECT ctid, spcowner
 FROM   pg_catalog.pg_tablespace fk
 WHERE  spcowner != 0 AND
diff --git a/src/tools/findoidjoins/.gitignore b/src/tools/findoidjoins/.gitignore
new file mode 100644 (file)
index 0000000..21ec074
--- /dev/null
@@ -0,0 +1 @@
+/findoidjoins
index e3e8a2adde78e715ef33b6b5830e272a0dd2bbc1..c46f9fc0f8277d8bd702acc3b2cb95bc0b52cb34 100644 (file)
@@ -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.2devel as of 2011-11-14).
+catalog join relationships (shown below for 9.4devel as of 2014-04-16).
 
 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.2devel, the *only* fields that should join to more than one target
+In 9.4devel, 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,20 +33,24 @@ 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.2devel, make_oidjoins_check produces two bogus join checks:
+NOTE: as of 9.4devel, 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.
+These are artifacts and should not be added to the oidjoins regression test.
 You might also get output for pg_shdepend.refobjid and pg_shdescription.objoid,
-neither of which should be added to the regress test.
+neither of which should be added to the regression test.
 
 ---------------------------------------------------------------------------
 
 Join pg_catalog.pg_aggregate.aggfnoid => pg_catalog.pg_proc.oid
 Join pg_catalog.pg_aggregate.aggtransfn => pg_catalog.pg_proc.oid
 Join pg_catalog.pg_aggregate.aggfinalfn => pg_catalog.pg_proc.oid
+Join pg_catalog.pg_aggregate.aggmtransfn => pg_catalog.pg_proc.oid
+Join pg_catalog.pg_aggregate.aggminvtransfn => pg_catalog.pg_proc.oid
+Join pg_catalog.pg_aggregate.aggmfinalfn => pg_catalog.pg_proc.oid
 Join pg_catalog.pg_aggregate.aggsortop => pg_catalog.pg_operator.oid
 Join pg_catalog.pg_aggregate.aggtranstype => pg_catalog.pg_type.oid
+Join pg_catalog.pg_aggregate.aggmtranstype => pg_catalog.pg_type.oid
 Join pg_catalog.pg_am.amkeytype => pg_catalog.pg_type.oid
 Join pg_catalog.pg_am.aminsert => pg_catalog.pg_proc.oid
 Join pg_catalog.pg_am.ambeginscan => pg_catalog.pg_proc.oid
@@ -60,6 +64,7 @@ Join pg_catalog.pg_am.ambuild => pg_catalog.pg_proc.oid
 Join pg_catalog.pg_am.ambuildempty => pg_catalog.pg_proc.oid
 Join pg_catalog.pg_am.ambulkdelete => pg_catalog.pg_proc.oid
 Join pg_catalog.pg_am.amvacuumcleanup => pg_catalog.pg_proc.oid
+Join pg_catalog.pg_am.amcanreturn => pg_catalog.pg_proc.oid
 Join pg_catalog.pg_am.amcostestimate => pg_catalog.pg_proc.oid
 Join pg_catalog.pg_am.amoptions => pg_catalog.pg_proc.oid
 Join pg_catalog.pg_amop.amopfamily => pg_catalog.pg_opfamily.oid
@@ -152,6 +157,8 @@ Join pg_catalog.pg_statistic.starelid => pg_catalog.pg_class.oid
 Join pg_catalog.pg_statistic.staop1 => pg_catalog.pg_operator.oid
 Join pg_catalog.pg_statistic.staop2 => pg_catalog.pg_operator.oid
 Join pg_catalog.pg_statistic.staop3 => pg_catalog.pg_operator.oid
+Join pg_catalog.pg_statistic.staop4 => pg_catalog.pg_operator.oid
+Join pg_catalog.pg_statistic.staop5 => pg_catalog.pg_operator.oid
 Join pg_catalog.pg_tablespace.spcowner => pg_catalog.pg_authid.oid
 Join pg_catalog.pg_trigger.tgrelid => pg_catalog.pg_class.oid
 Join pg_catalog.pg_trigger.tgfoid => pg_catalog.pg_proc.oid