mirror of
https://github.com/postgres/postgres.git
synced 2025-07-05 07:21:24 +03:00
Have CREATE TABLE LIKE add OID column if any LIKEd table has one
Also, process constraints for LIKEd tables at the end so an OID column can be referenced in a constraint. Report by Tom Lane
This commit is contained in:
@ -250,3 +250,6 @@ ERROR: relation "as_select1" already exists
|
||||
CREATE TABLE IF NOT EXISTS as_select1 AS SELECT * FROM pg_class WHERE relkind = 'r';
|
||||
NOTICE: relation "as_select1" already exists, skipping
|
||||
DROP TABLE as_select1;
|
||||
-- check that the oid column is added before the primary key is checked
|
||||
CREATE TABLE oid_pk (f1 INT, PRIMARY KEY(oid)) WITH OIDS;
|
||||
DROP TABLE oid_pk;
|
||||
|
@ -228,3 +228,30 @@ DROP TYPE ctlty1;
|
||||
DROP VIEW ctlv1;
|
||||
DROP TABLE IF EXISTS ctlt4, ctlt10, ctlt11, ctlt11a, ctlt12;
|
||||
NOTICE: table "ctlt10" does not exist, skipping
|
||||
/* LIKE WITH OIDS */
|
||||
CREATE TABLE has_oid (x INTEGER) WITH OIDS;
|
||||
CREATE TABLE no_oid (y INTEGER);
|
||||
CREATE TABLE like_test (z INTEGER, LIKE has_oid);
|
||||
SELECT oid FROM like_test;
|
||||
oid
|
||||
-----
|
||||
(0 rows)
|
||||
|
||||
CREATE TABLE like_test2 (z INTEGER, LIKE no_oid);
|
||||
SELECT oid FROM like_test2; -- fail
|
||||
ERROR: column "oid" does not exist
|
||||
LINE 1: SELECT oid FROM like_test2;
|
||||
^
|
||||
CREATE TABLE like_test3 (z INTEGER, LIKE has_oid, LIKE no_oid);
|
||||
SELECT oid FROM like_test3;
|
||||
oid
|
||||
-----
|
||||
(0 rows)
|
||||
|
||||
CREATE TABLE like_test4 (z INTEGER, PRIMARY KEY(oid), LIKE has_oid);
|
||||
SELECT oid FROM like_test4;
|
||||
oid
|
||||
-----
|
||||
(0 rows)
|
||||
|
||||
DROP TABLE has_oid, no_oid, like_test, like_test2, like_test3, like_test4;
|
||||
|
@ -265,3 +265,7 @@ CREATE TABLE as_select1 AS SELECT * FROM pg_class WHERE relkind = 'r';
|
||||
CREATE TABLE as_select1 AS SELECT * FROM pg_class WHERE relkind = 'r';
|
||||
CREATE TABLE IF NOT EXISTS as_select1 AS SELECT * FROM pg_class WHERE relkind = 'r';
|
||||
DROP TABLE as_select1;
|
||||
|
||||
-- check that the oid column is added before the primary key is checked
|
||||
CREATE TABLE oid_pk (f1 INT, PRIMARY KEY(oid)) WITH OIDS;
|
||||
DROP TABLE oid_pk;
|
||||
|
@ -119,3 +119,16 @@ DROP SEQUENCE ctlseq1;
|
||||
DROP TYPE ctlty1;
|
||||
DROP VIEW ctlv1;
|
||||
DROP TABLE IF EXISTS ctlt4, ctlt10, ctlt11, ctlt11a, ctlt12;
|
||||
|
||||
/* LIKE WITH OIDS */
|
||||
CREATE TABLE has_oid (x INTEGER) WITH OIDS;
|
||||
CREATE TABLE no_oid (y INTEGER);
|
||||
CREATE TABLE like_test (z INTEGER, LIKE has_oid);
|
||||
SELECT oid FROM like_test;
|
||||
CREATE TABLE like_test2 (z INTEGER, LIKE no_oid);
|
||||
SELECT oid FROM like_test2; -- fail
|
||||
CREATE TABLE like_test3 (z INTEGER, LIKE has_oid, LIKE no_oid);
|
||||
SELECT oid FROM like_test3;
|
||||
CREATE TABLE like_test4 (z INTEGER, PRIMARY KEY(oid), LIKE has_oid);
|
||||
SELECT oid FROM like_test4;
|
||||
DROP TABLE has_oid, no_oid, like_test, like_test2, like_test3, like_test4;
|
||||
|
Reference in New Issue
Block a user