From 2b5ab918e7706639b960d9a053dfc97176df4546 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Sun, 25 Nov 2018 16:27:37 +0100 Subject: [PATCH 4/4] Increase test coverage in RI_Initial_Check() This covers the special error handling of FKCONSTR_MATCH_FULL. --- src/test/regress/expected/foreign_key.out | 12 ++++++++++++ src/test/regress/sql/foreign_key.sql | 14 ++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/test/regress/expected/foreign_key.out b/src/test/regress/expected/foreign_key.out index 6b2df98c7e..1241aab6e3 100644 --- a/src/test/regress/expected/foreign_key.out +++ b/src/test/regress/expected/foreign_key.out @@ -339,6 +339,18 @@ SELECT * FROM PKTABLE; 0 | Test4 (4 rows) +DROP TABLE FKTABLE; +DROP TABLE PKTABLE; +-- +-- Check initial check upon ALTER TABLE +-- +CREATE TABLE PKTABLE ( ptest1 int, ptest2 int, PRIMARY KEY(ptest1, ptest2) ); +CREATE TABLE FKTABLE ( ftest1 int, ftest2 int ); +INSERT INTO PKTABLE VALUES (1, 2); +INSERT INTO FKTABLE VALUES (1, NULL); +ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1, ftest2) REFERENCES PKTABLE MATCH FULL; +ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_ftest1_fkey" +DETAIL: MATCH FULL does not allow mixing of null and nonnull key values. DROP TABLE FKTABLE; DROP TABLE PKTABLE; -- MATCH SIMPLE diff --git a/src/test/regress/sql/foreign_key.sql b/src/test/regress/sql/foreign_key.sql index 9dd5e29c75..9ff2611377 100644 --- a/src/test/regress/sql/foreign_key.sql +++ b/src/test/regress/sql/foreign_key.sql @@ -219,6 +219,20 @@ CREATE TABLE FKTABLE ( ftest1 int REFERENCES PKTABLE MATCH FULL, ftest2 int ); DROP TABLE FKTABLE; DROP TABLE PKTABLE; +-- +-- Check initial check upon ALTER TABLE +-- +CREATE TABLE PKTABLE ( ptest1 int, ptest2 int, PRIMARY KEY(ptest1, ptest2) ); +CREATE TABLE FKTABLE ( ftest1 int, ftest2 int ); + +INSERT INTO PKTABLE VALUES (1, 2); +INSERT INTO FKTABLE VALUES (1, NULL); + +ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1, ftest2) REFERENCES PKTABLE MATCH FULL; + +DROP TABLE FKTABLE; +DROP TABLE PKTABLE; + -- MATCH SIMPLE -- 2.19.2