mirror of
https://github.com/postgres/postgres.git
synced 2025-04-29 13:56:47 +03:00
Update oidjoins regression test for v13.
We seem to have forgotten to do this in the v12 cycle, so add it as a task in the RELEASE_CHANGES list, in hopes we won't forget again. While here, fix findoidjoins.c so that it actually works in the new dispensation where OID is a regular column, and change it to only consider system relations (this avoids being fooled by the OID column in the brintest test table). Also tweak the largeobject test so that the somewhat-recently-added manual creation of a LO with an OID in the system range doesn't fool findoidjoins.c. For the moment I just made that use an unused OID, but we might have to find a more robust solution someday.
This commit is contained in:
parent
89a7d21dfc
commit
6c298881c2
@ -961,6 +961,46 @@ WHERE staop5 != 0 AND
|
|||||||
------+--------
|
------+--------
|
||||||
(0 rows)
|
(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
|
SELECT ctid, stxrelid
|
||||||
FROM pg_catalog.pg_statistic_ext fk
|
FROM pg_catalog.pg_statistic_ext fk
|
||||||
WHERE stxrelid != 0 AND
|
WHERE stxrelid != 0 AND
|
||||||
@ -1041,6 +1081,14 @@ WHERE tgrelid != 0 AND
|
|||||||
------+---------
|
------+---------
|
||||||
(0 rows)
|
(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
|
SELECT ctid, tgfoid
|
||||||
FROM pg_catalog.pg_trigger fk
|
FROM pg_catalog.pg_trigger fk
|
||||||
WHERE tgfoid != 0 AND
|
WHERE tgfoid != 0 AND
|
||||||
|
@ -253,9 +253,9 @@ SELECT lo_get(:newloid);
|
|||||||
|
|
||||||
-- Create one more object that we leave behind for testing pg_dump/pg_upgrade;
|
-- Create one more object that we leave behind for testing pg_dump/pg_upgrade;
|
||||||
-- this one intentionally has an OID in the system range
|
-- 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
|
-- Clean up
|
||||||
DROP TABLE lotest_stash_values;
|
DROP TABLE lotest_stash_values;
|
||||||
|
@ -469,13 +469,13 @@ SELECT lo_get(:newloid);
|
|||||||
|
|
||||||
-- Create one more object that we leave behind for testing pg_dump/pg_upgrade;
|
-- Create one more object that we leave behind for testing pg_dump/pg_upgrade;
|
||||||
-- this one intentionally has an OID in the system range
|
-- this one intentionally has an OID in the system range
|
||||||
SELECT lo_create(3001);
|
SELECT lo_create(2121);
|
||||||
lo_create
|
lo_create
|
||||||
-----------
|
-----------
|
||||||
3001
|
2121
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
COMMENT ON LARGE OBJECT 3001 IS 'testing comments';
|
COMMENT ON LARGE OBJECT 2121 IS 'testing comments';
|
||||||
-- Clean up
|
-- Clean up
|
||||||
DROP TABLE lotest_stash_values;
|
DROP TABLE lotest_stash_values;
|
||||||
DROP ROLE regress_lo_user;
|
DROP ROLE regress_lo_user;
|
||||||
|
@ -469,13 +469,13 @@ SELECT lo_get(:newloid);
|
|||||||
|
|
||||||
-- Create one more object that we leave behind for testing pg_dump/pg_upgrade;
|
-- Create one more object that we leave behind for testing pg_dump/pg_upgrade;
|
||||||
-- this one intentionally has an OID in the system range
|
-- this one intentionally has an OID in the system range
|
||||||
SELECT lo_create(3001);
|
SELECT lo_create(2121);
|
||||||
lo_create
|
lo_create
|
||||||
-----------
|
-----------
|
||||||
3001
|
2121
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
COMMENT ON LARGE OBJECT 3001 IS 'testing comments';
|
COMMENT ON LARGE OBJECT 2121 IS 'testing comments';
|
||||||
-- Clean up
|
-- Clean up
|
||||||
DROP TABLE lotest_stash_values;
|
DROP TABLE lotest_stash_values;
|
||||||
DROP ROLE regress_lo_user;
|
DROP ROLE regress_lo_user;
|
||||||
|
@ -481,6 +481,26 @@ SELECT ctid, staop5
|
|||||||
FROM pg_catalog.pg_statistic fk
|
FROM pg_catalog.pg_statistic fk
|
||||||
WHERE staop5 != 0 AND
|
WHERE staop5 != 0 AND
|
||||||
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.staop5);
|
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
|
SELECT ctid, stxrelid
|
||||||
FROM pg_catalog.pg_statistic_ext fk
|
FROM pg_catalog.pg_statistic_ext fk
|
||||||
WHERE stxrelid != 0 AND
|
WHERE stxrelid != 0 AND
|
||||||
@ -521,6 +541,10 @@ SELECT ctid, tgrelid
|
|||||||
FROM pg_catalog.pg_trigger fk
|
FROM pg_catalog.pg_trigger fk
|
||||||
WHERE tgrelid != 0 AND
|
WHERE tgrelid != 0 AND
|
||||||
NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.tgrelid);
|
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
|
SELECT ctid, tgfoid
|
||||||
FROM pg_catalog.pg_trigger fk
|
FROM pg_catalog.pg_trigger fk
|
||||||
WHERE tgfoid != 0 AND
|
WHERE tgfoid != 0 AND
|
||||||
|
@ -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
|
* Update Unicode data: Edit UNICODE_VERSION and CLDR_VERSION in
|
||||||
src/Makefile.global.in, run make update-unicode, and commit.
|
src/Makefile.global.in, run make update-unicode, and commit.
|
||||||
|
|
||||||
|
* Update the oidjoins regression test (see src/tools/findoidjoins/).
|
||||||
|
|
||||||
|
|
||||||
Starting a New Development Cycle
|
Starting a New Development Cycle
|
||||||
================================
|
================================
|
||||||
|
@ -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.staop3 => pg_catalog.pg_operator.oid
|
||||||
Join pg_catalog.pg_statistic.staop4 => 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.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.stxrelid => pg_catalog.pg_class.oid
|
||||||
Join pg_catalog.pg_statistic_ext.stxnamespace => pg_catalog.pg_namespace.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.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_tablespace.spcowner => pg_catalog.pg_authid.oid
|
||||||
Join pg_catalog.pg_transform.trftype => pg_catalog.pg_type.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.trflang => pg_catalog.pg_language.oid
|
||||||
Join pg_catalog.pg_transform.trffromsql => pg_catalog.pg_proc.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_transform.trftosql => pg_catalog.pg_proc.oid
|
||||||
Join pg_catalog.pg_trigger.tgrelid => pg_catalog.pg_class.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.tgfoid => pg_catalog.pg_proc.oid
|
||||||
Join pg_catalog.pg_trigger.tgconstrrelid => pg_catalog.pg_class.oid
|
Join pg_catalog.pg_trigger.tgconstrrelid => pg_catalog.pg_class.oid
|
||||||
Join pg_catalog.pg_trigger.tgconstrindid => pg_catalog.pg_class.oid
|
Join pg_catalog.pg_trigger.tgconstrindid => pg_catalog.pg_class.oid
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
#include "postgres_fe.h"
|
#include "postgres_fe.h"
|
||||||
|
|
||||||
|
#include "access/transam.h"
|
||||||
#include "catalog/pg_class_d.h"
|
#include "catalog/pg_class_d.h"
|
||||||
|
|
||||||
#include "fe_utils/connect.h"
|
#include "fe_utils/connect.h"
|
||||||
@ -55,18 +56,20 @@ main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
PQclear(res);
|
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;"
|
"SET search_path = public;"
|
||||||
"SELECT c.relname, (SELECT nspname FROM "
|
"SELECT c.relname, (SELECT nspname FROM "
|
||||||
"pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname "
|
"pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname "
|
||||||
"FROM pg_catalog.pg_class c "
|
"FROM pg_catalog.pg_class c "
|
||||||
"WHERE c.relkind = " CppAsString2(RELKIND_RELATION)
|
"WHERE c.relkind = " CppAsString2(RELKIND_RELATION)
|
||||||
|
" AND c.oid < '%u'"
|
||||||
" AND EXISTS(SELECT * FROM pg_attribute a"
|
" AND EXISTS(SELECT * FROM pg_attribute a"
|
||||||
" WHERE a.attrelid = c.oid AND a.attname = 'oid' "
|
" WHERE a.attrelid = c.oid AND a.attname = 'oid' "
|
||||||
" AND a.atttypid = 'oid'::regtype)"
|
" AND a.atttypid = 'oid'::regtype)"
|
||||||
"ORDER BY nspname, c.relname"
|
"ORDER BY nspname, c.relname",
|
||||||
|
FirstNormalObjectId
|
||||||
);
|
);
|
||||||
|
|
||||||
res = PQexec(conn, sql.data);
|
res = PQexec(conn, sql.data);
|
||||||
@ -77,15 +80,17 @@ main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
pkrel_res = res;
|
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 c.relname, "
|
||||||
"(SELECT nspname FROM pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname, "
|
"(SELECT nspname FROM pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname, "
|
||||||
"a.attname "
|
"a.attname "
|
||||||
"FROM pg_catalog.pg_class c, pg_catalog.pg_attribute a "
|
"FROM pg_catalog.pg_class c, pg_catalog.pg_attribute a "
|
||||||
"WHERE a.attnum > 0"
|
"WHERE a.attnum > 0"
|
||||||
|
" AND a.attname != 'oid'"
|
||||||
" AND c.relkind = " CppAsString2(RELKIND_RELATION)
|
" AND c.relkind = " CppAsString2(RELKIND_RELATION)
|
||||||
|
" AND c.oid < '%u'"
|
||||||
" AND a.attrelid = c.oid"
|
" AND a.attrelid = c.oid"
|
||||||
" AND a.atttypid IN ('pg_catalog.oid'::regtype, "
|
" AND a.atttypid IN ('pg_catalog.oid'::regtype, "
|
||||||
" 'pg_catalog.regclass'::regtype, "
|
" 'pg_catalog.regclass'::regtype, "
|
||||||
@ -96,7 +101,8 @@ main(int argc, char **argv)
|
|||||||
" 'pg_catalog.regtype'::regtype, "
|
" 'pg_catalog.regtype'::regtype, "
|
||||||
" 'pg_catalog.regconfig'::regtype, "
|
" 'pg_catalog.regconfig'::regtype, "
|
||||||
" 'pg_catalog.regdictionary'::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);
|
res = PQexec(conn, sql.data);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user