From 8eb6be9c2d458af9abf58d6c55929c54036cd9db Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Wed, 6 Jun 2018 22:30:16 -0400 Subject: [PATCH 1/4] Add test case for ON DELETE NO ACTION/RESTRICT This was previously not covered at all; function RI_FKey_restrict_del() was not exercised in the tests. --- src/test/regress/expected/foreign_key.out | 10 ++++++++-- src/test/regress/sql/foreign_key.sql | 6 ++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/test/regress/expected/foreign_key.out b/src/test/regress/expected/foreign_key.out index 085c9aba11..5525dd75b9 100644 --- a/src/test/regress/expected/foreign_key.out +++ b/src/test/regress/expected/foreign_key.out @@ -1339,7 +1339,7 @@ DETAIL: Key (f1)=(1) is still referenced from table "defc". -- Test the difference between NO ACTION and RESTRICT -- create temp table pp (f1 int primary key); -create temp table cc (f1 int references pp on update no action); +create temp table cc (f1 int references pp on update no action on delete no action); insert into pp values(12); insert into pp values(11); update pp set f1=f1+1; @@ -1348,9 +1348,12 @@ update pp set f1=f1+1; update pp set f1=f1+1; -- fail ERROR: update or delete on table "pp" violates foreign key constraint "cc_f1_fkey" on table "cc" DETAIL: Key (f1)=(13) is still referenced from table "cc". +delete from pp where f1 = 13; -- fail +ERROR: update or delete on table "pp" violates foreign key constraint "cc_f1_fkey" on table "cc" +DETAIL: Key (f1)=(13) is still referenced from table "cc". drop table pp, cc; create temp table pp (f1 int primary key); -create temp table cc (f1 int references pp on update restrict); +create temp table cc (f1 int references pp on update restrict on delete restrict); insert into pp values(12); insert into pp values(11); update pp set f1=f1+1; @@ -1358,6 +1361,9 @@ insert into cc values(13); update pp set f1=f1+1; -- fail ERROR: update or delete on table "pp" violates foreign key constraint "cc_f1_fkey" on table "cc" DETAIL: Key (f1)=(13) is still referenced from table "cc". +delete from pp where f1 = 13; -- fail +ERROR: update or delete on table "pp" violates foreign key constraint "cc_f1_fkey" on table "cc" +DETAIL: Key (f1)=(13) is still referenced from table "cc". drop table pp, cc; -- -- Test interaction of foreign-key optimization with rules (bug #14219) diff --git a/src/test/regress/sql/foreign_key.sql b/src/test/regress/sql/foreign_key.sql index 068ab2aab7..615588c318 100644 --- a/src/test/regress/sql/foreign_key.sql +++ b/src/test/regress/sql/foreign_key.sql @@ -992,22 +992,24 @@ CREATE TEMP TABLE tasks ( -- Test the difference between NO ACTION and RESTRICT -- create temp table pp (f1 int primary key); -create temp table cc (f1 int references pp on update no action); +create temp table cc (f1 int references pp on update no action on delete no action); insert into pp values(12); insert into pp values(11); update pp set f1=f1+1; insert into cc values(13); update pp set f1=f1+1; update pp set f1=f1+1; -- fail +delete from pp where f1 = 13; -- fail drop table pp, cc; create temp table pp (f1 int primary key); -create temp table cc (f1 int references pp on update restrict); +create temp table cc (f1 int references pp on update restrict on delete restrict); insert into pp values(12); insert into pp values(11); update pp set f1=f1+1; insert into cc values(13); update pp set f1=f1+1; -- fail +delete from pp where f1 = 13; -- fail drop table pp, cc; -- base-commit: ee2b37ae044f34851baba69e9ba737077326414e -- 2.19.2