From: Peter Eisentraut Date: Wed, 16 Jan 2019 15:52:07 +0000 (+0100) Subject: Add test case for ON DELETE NO ACTION/RESTRICT X-Git-Tag: REL_12_BETA1~938 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=74bd06648b720bb48f50bd32848f2f3cf2deb1f6;p=thirdparty%2Fpostgresql.git 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. Reviewed-by: Alvaro Herrera Reviewed-by: Mi Tar Discussion: https://www.postgresql.org/message-id/flat/7ae17c95-0c99-d420-032a-c271f510112b@2ndquadrant.com/ --- diff --git a/src/test/regress/expected/foreign_key.out b/src/test/regress/expected/foreign_key.out index 085c9aba115..5525dd75b9f 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 068ab2aab7c..615588c3181 100644 --- a/src/test/regress/sql/foreign_key.sql +++ b/src/test/regress/sql/foreign_key.sql @@ -992,22 +992,24 @@ delete from defp where f1 = 1; -- fail -- 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; --