diff --git a/src/test/regress/expected/oidjoins.out b/src/test/regress/expected/oidjoins.out index 1302cc271ba..92f9143d06f 100644 --- a/src/test/regress/expected/oidjoins.out +++ b/src/test/regress/expected/oidjoins.out @@ -961,6 +961,46 @@ WHERE staop5 != 0 AND ------+-------- (0 rows) +SELECT ctid, stacoll1 +FROM pg_catalog.pg_statistic fk +WHERE stacoll1 != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.stacoll1); + ctid | stacoll1 +------+---------- +(0 rows) + +SELECT ctid, stacoll2 +FROM pg_catalog.pg_statistic fk +WHERE stacoll2 != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.stacoll2); + ctid | stacoll2 +------+---------- +(0 rows) + +SELECT ctid, stacoll3 +FROM pg_catalog.pg_statistic fk +WHERE stacoll3 != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.stacoll3); + ctid | stacoll3 +------+---------- +(0 rows) + +SELECT ctid, stacoll4 +FROM pg_catalog.pg_statistic fk +WHERE stacoll4 != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.stacoll4); + ctid | stacoll4 +------+---------- +(0 rows) + +SELECT ctid, stacoll5 +FROM pg_catalog.pg_statistic fk +WHERE stacoll5 != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.stacoll5); + ctid | stacoll5 +------+---------- +(0 rows) + SELECT ctid, stxrelid FROM pg_catalog.pg_statistic_ext fk WHERE stxrelid != 0 AND @@ -1041,6 +1081,14 @@ WHERE tgrelid != 0 AND ------+--------- (0 rows) +SELECT ctid, tgparentid +FROM pg_catalog.pg_trigger fk +WHERE tgparentid != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_trigger pk WHERE pk.oid = fk.tgparentid); + ctid | tgparentid +------+------------ +(0 rows) + SELECT ctid, tgfoid FROM pg_catalog.pg_trigger fk WHERE tgfoid != 0 AND diff --git a/src/test/regress/input/largeobject.source b/src/test/regress/input/largeobject.source index 7e45b1172ad..f40338ddf88 100644 --- a/src/test/regress/input/largeobject.source +++ b/src/test/regress/input/largeobject.source @@ -253,9 +253,9 @@ SELECT lo_get(:newloid); -- Create one more object that we leave behind for testing pg_dump/pg_upgrade; -- this one intentionally has an OID in the system range -SELECT lo_create(3001); +SELECT lo_create(2121); -COMMENT ON LARGE OBJECT 3001 IS 'testing comments'; +COMMENT ON LARGE OBJECT 2121 IS 'testing comments'; -- Clean up DROP TABLE lotest_stash_values; diff --git a/src/test/regress/output/largeobject.source b/src/test/regress/output/largeobject.source index 761d7ff3015..ea712a5e2fd 100644 --- a/src/test/regress/output/largeobject.source +++ b/src/test/regress/output/largeobject.source @@ -469,13 +469,13 @@ SELECT lo_get(:newloid); -- Create one more object that we leave behind for testing pg_dump/pg_upgrade; -- this one intentionally has an OID in the system range -SELECT lo_create(3001); +SELECT lo_create(2121); lo_create ----------- - 3001 + 2121 (1 row) -COMMENT ON LARGE OBJECT 3001 IS 'testing comments'; +COMMENT ON LARGE OBJECT 2121 IS 'testing comments'; -- Clean up DROP TABLE lotest_stash_values; DROP ROLE regress_lo_user; diff --git a/src/test/regress/output/largeobject_1.source b/src/test/regress/output/largeobject_1.source index 7de3e7ea6f6..f01596cea7b 100644 --- a/src/test/regress/output/largeobject_1.source +++ b/src/test/regress/output/largeobject_1.source @@ -469,13 +469,13 @@ SELECT lo_get(:newloid); -- Create one more object that we leave behind for testing pg_dump/pg_upgrade; -- this one intentionally has an OID in the system range -SELECT lo_create(3001); +SELECT lo_create(2121); lo_create ----------- - 3001 + 2121 (1 row) -COMMENT ON LARGE OBJECT 3001 IS 'testing comments'; +COMMENT ON LARGE OBJECT 2121 IS 'testing comments'; -- Clean up DROP TABLE lotest_stash_values; DROP ROLE regress_lo_user; diff --git a/src/test/regress/sql/oidjoins.sql b/src/test/regress/sql/oidjoins.sql index b774cbca5b6..8a833a23fda 100644 --- a/src/test/regress/sql/oidjoins.sql +++ b/src/test/regress/sql/oidjoins.sql @@ -481,6 +481,26 @@ 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, stacoll1 +FROM pg_catalog.pg_statistic fk +WHERE stacoll1 != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.stacoll1); +SELECT ctid, stacoll2 +FROM pg_catalog.pg_statistic fk +WHERE stacoll2 != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.stacoll2); +SELECT ctid, stacoll3 +FROM pg_catalog.pg_statistic fk +WHERE stacoll3 != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.stacoll3); +SELECT ctid, stacoll4 +FROM pg_catalog.pg_statistic fk +WHERE stacoll4 != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.stacoll4); +SELECT ctid, stacoll5 +FROM pg_catalog.pg_statistic fk +WHERE stacoll5 != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.stacoll5); SELECT ctid, stxrelid FROM pg_catalog.pg_statistic_ext fk WHERE stxrelid != 0 AND @@ -521,6 +541,10 @@ SELECT ctid, tgrelid FROM pg_catalog.pg_trigger fk WHERE tgrelid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.tgrelid); +SELECT ctid, tgparentid +FROM pg_catalog.pg_trigger fk +WHERE tgparentid != 0 AND + NOT EXISTS(SELECT 1 FROM pg_catalog.pg_trigger pk WHERE pk.oid = fk.tgparentid); SELECT ctid, tgfoid FROM pg_catalog.pg_trigger fk WHERE tgfoid != 0 AND diff --git a/src/tools/RELEASE_CHANGES b/src/tools/RELEASE_CHANGES index a7bff76b768..6ba9121e303 100644 --- a/src/tools/RELEASE_CHANGES +++ b/src/tools/RELEASE_CHANGES @@ -80,6 +80,8 @@ but there may be reasons to do them at other times as well. * Update Unicode data: Edit UNICODE_VERSION and CLDR_VERSION in src/Makefile.global.in, run make update-unicode, and commit. +* Update the oidjoins regression test (see src/tools/findoidjoins/). + Starting a New Development Cycle ================================ diff --git a/src/tools/findoidjoins/README b/src/tools/findoidjoins/README index e5fc3104d3b..a177c10375b 100644 --- a/src/tools/findoidjoins/README +++ b/src/tools/findoidjoins/README @@ -180,15 +180,22 @@ 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_statistic.stacoll1 => pg_catalog.pg_collation.oid +Join pg_catalog.pg_statistic.stacoll2 => pg_catalog.pg_collation.oid +Join pg_catalog.pg_statistic.stacoll3 => pg_catalog.pg_collation.oid +Join pg_catalog.pg_statistic.stacoll4 => pg_catalog.pg_collation.oid +Join pg_catalog.pg_statistic.stacoll5 => pg_catalog.pg_collation.oid Join pg_catalog.pg_statistic_ext.stxrelid => pg_catalog.pg_class.oid Join pg_catalog.pg_statistic_ext.stxnamespace => pg_catalog.pg_namespace.oid Join pg_catalog.pg_statistic_ext.stxowner => pg_catalog.pg_authid.oid +Join pg_catalog.pg_statistic_ext_data.stxoid => pg_catalog.pg_statistic_ext.oid Join pg_catalog.pg_tablespace.spcowner => pg_catalog.pg_authid.oid Join pg_catalog.pg_transform.trftype => pg_catalog.pg_type.oid Join pg_catalog.pg_transform.trflang => pg_catalog.pg_language.oid Join pg_catalog.pg_transform.trffromsql => pg_catalog.pg_proc.oid Join pg_catalog.pg_transform.trftosql => pg_catalog.pg_proc.oid Join pg_catalog.pg_trigger.tgrelid => pg_catalog.pg_class.oid +Join pg_catalog.pg_trigger.tgparentid => pg_catalog.pg_trigger.oid Join pg_catalog.pg_trigger.tgfoid => pg_catalog.pg_proc.oid Join pg_catalog.pg_trigger.tgconstrrelid => pg_catalog.pg_class.oid Join pg_catalog.pg_trigger.tgconstrindid => pg_catalog.pg_class.oid diff --git a/src/tools/findoidjoins/findoidjoins.c b/src/tools/findoidjoins/findoidjoins.c index 562a98a5b73..ade11a53a2c 100644 --- a/src/tools/findoidjoins/findoidjoins.c +++ b/src/tools/findoidjoins/findoidjoins.c @@ -7,6 +7,7 @@ */ #include "postgres_fe.h" +#include "access/transam.h" #include "catalog/pg_class_d.h" #include "fe_utils/connect.h" @@ -55,18 +56,20 @@ main(int argc, char **argv) } PQclear(res); - /* Get a list of relations that have OIDs */ + /* Get a list of system relations that have OIDs */ - printfPQExpBuffer(&sql, "%s", + 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 " "WHERE c.relkind = " CppAsString2(RELKIND_RELATION) + " AND c.oid < '%u'" " AND EXISTS(SELECT * FROM pg_attribute a" " WHERE a.attrelid = c.oid AND a.attname = 'oid' " " AND a.atttypid = 'oid'::regtype)" - "ORDER BY nspname, c.relname" + "ORDER BY nspname, c.relname", + FirstNormalObjectId ); res = PQexec(conn, sql.data); @@ -77,15 +80,17 @@ main(int argc, char **argv) } pkrel_res = res; - /* Get a list of columns of OID type (or any OID-alias type) */ + /* Get a list of system columns of OID type (or any OID-alias type) */ - printfPQExpBuffer(&sql, "%s", + printfPQExpBuffer(&sql, "SELECT c.relname, " "(SELECT nspname FROM pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname, " "a.attname " "FROM pg_catalog.pg_class c, pg_catalog.pg_attribute a " "WHERE a.attnum > 0" + " AND a.attname != 'oid'" " AND c.relkind = " CppAsString2(RELKIND_RELATION) + " AND c.oid < '%u'" " AND a.attrelid = c.oid" " AND a.atttypid IN ('pg_catalog.oid'::regtype, " " 'pg_catalog.regclass'::regtype, " @@ -96,7 +101,8 @@ main(int argc, char **argv) " 'pg_catalog.regtype'::regtype, " " 'pg_catalog.regconfig'::regtype, " " 'pg_catalog.regdictionary'::regtype) " - "ORDER BY nspname, c.relname, a.attnum" + "ORDER BY nspname, c.relname, a.attnum", + FirstNormalObjectId ); res = PQexec(conn, sql.data);