Increase test coverage in RI_FKey_pk_upd_check_required()
This checks the case where the primary key has at least one null column. Reviewed-by: Alvaro Herrera <alvherre@2ndquadrant.com> Reviewed-by: Mi Tar <mmitar@gmail.com> Discussion: https://www.postgresql.org/message-id/flat/7ae17c95-0c99-d420-032a-c271f510112b@2ndquadrant.com/
This commit is contained in:
parent
74bd06648b
commit
cdaf4a4727
@ -397,6 +397,30 @@ SELECT * from FKTABLE;
|
||||
| 3 | 4 | 5
|
||||
(5 rows)
|
||||
|
||||
DROP TABLE FKTABLE;
|
||||
DROP TABLE PKTABLE;
|
||||
-- restrict with null values
|
||||
CREATE TABLE PKTABLE ( ptest1 int, ptest2 int, ptest3 int, ptest4 text, UNIQUE(ptest1, ptest2, ptest3) );
|
||||
CREATE TABLE FKTABLE ( ftest1 int, ftest2 int, ftest3 int, ftest4 int, CONSTRAINT constrname3
|
||||
FOREIGN KEY(ftest1, ftest2, ftest3) REFERENCES PKTABLE (ptest1, ptest2, ptest3));
|
||||
INSERT INTO PKTABLE VALUES (1, 2, 3, 'test1');
|
||||
INSERT INTO PKTABLE VALUES (1, 3, NULL, 'test2');
|
||||
INSERT INTO PKTABLE VALUES (2, NULL, 4, 'test3');
|
||||
INSERT INTO FKTABLE VALUES (1, 2, 3, 1);
|
||||
DELETE FROM PKTABLE WHERE ptest1 = 2;
|
||||
SELECT * FROM PKTABLE;
|
||||
ptest1 | ptest2 | ptest3 | ptest4
|
||||
--------+--------+--------+--------
|
||||
1 | 2 | 3 | test1
|
||||
1 | 3 | | test2
|
||||
(2 rows)
|
||||
|
||||
SELECT * FROM FKTABLE;
|
||||
ftest1 | ftest2 | ftest3 | ftest4
|
||||
--------+--------+--------+--------
|
||||
1 | 2 | 3 | 1
|
||||
(1 row)
|
||||
|
||||
DROP TABLE FKTABLE;
|
||||
DROP TABLE PKTABLE;
|
||||
-- cascade update/delete
|
||||
|
@ -260,6 +260,25 @@ SELECT * from FKTABLE;
|
||||
DROP TABLE FKTABLE;
|
||||
DROP TABLE PKTABLE;
|
||||
|
||||
-- restrict with null values
|
||||
CREATE TABLE PKTABLE ( ptest1 int, ptest2 int, ptest3 int, ptest4 text, UNIQUE(ptest1, ptest2, ptest3) );
|
||||
CREATE TABLE FKTABLE ( ftest1 int, ftest2 int, ftest3 int, ftest4 int, CONSTRAINT constrname3
|
||||
FOREIGN KEY(ftest1, ftest2, ftest3) REFERENCES PKTABLE (ptest1, ptest2, ptest3));
|
||||
|
||||
INSERT INTO PKTABLE VALUES (1, 2, 3, 'test1');
|
||||
INSERT INTO PKTABLE VALUES (1, 3, NULL, 'test2');
|
||||
INSERT INTO PKTABLE VALUES (2, NULL, 4, 'test3');
|
||||
|
||||
INSERT INTO FKTABLE VALUES (1, 2, 3, 1);
|
||||
|
||||
DELETE FROM PKTABLE WHERE ptest1 = 2;
|
||||
|
||||
SELECT * FROM PKTABLE;
|
||||
SELECT * FROM FKTABLE;
|
||||
|
||||
DROP TABLE FKTABLE;
|
||||
DROP TABLE PKTABLE;
|
||||
|
||||
-- cascade update/delete
|
||||
CREATE TABLE PKTABLE ( ptest1 int, ptest2 int, ptest3 int, ptest4 text, PRIMARY KEY(ptest1, ptest2, ptest3) );
|
||||
CREATE TABLE FKTABLE ( ftest1 int, ftest2 int, ftest3 int, ftest4 int, CONSTRAINT constrname3
|
||||
|
Loading…
x
Reference in New Issue
Block a user