diff --git a/src/backend/utils/adt/ri_triggers.c b/src/backend/utils/adt/ri_triggers.c index b476500..997e959 100644 --- a/src/backend/utils/adt/ri_triggers.c +++ b/src/backend/utils/adt/ri_triggers.c @@ -343,7 +343,7 @@ RI_FKey_check(TriggerData *trigdata) ereport(ERROR, (errcode(ERRCODE_FOREIGN_KEY_VIOLATION), errmsg("insert or update on table \"%s\" violates foreign key constraint \"%s\"", - RelationGetRelationName(fk_rel), + RelationGetNamespaceQualifiedRelationName(fk_rel), NameStr(riinfo->conname)), errdetail("MATCH FULL does not allow mixing of null and nonnull key values."), errtableconstraint(fk_rel, @@ -2490,7 +2490,7 @@ RI_Initial_Check(Trigger *trigger, Relation fk_rel, Relation pk_rel) ereport(ERROR, (errcode(ERRCODE_FOREIGN_KEY_VIOLATION), errmsg("insert or update on table \"%s\" violates foreign key constraint \"%s\"", - RelationGetRelationName(fk_rel), + RelationGetNamespaceQualifiedRelationName(fk_rel), NameStr(fake_riinfo.conname)), errdetail("MATCH FULL does not allow mixing of null and nonnull key values."), errtableconstraint(fk_rel, @@ -2767,7 +2767,7 @@ ri_FetchConstraintInfo(Trigger *trigger, Relation trig_rel, bool rel_is_pk) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), errmsg("no pg_constraint entry for trigger \"%s\" on table \"%s\"", - trigger->tgname, RelationGetRelationName(trig_rel)), + trigger->tgname, RelationGetNamespaceQualifiedRelationName(trig_rel)), errhint("Remove this referential integrity trigger and its mates, then do ALTER TABLE ADD CONSTRAINT."))); /* Find or create a hashtable entry for the constraint */ @@ -2779,14 +2779,14 @@ ri_FetchConstraintInfo(Trigger *trigger, Relation trig_rel, bool rel_is_pk) if (riinfo->fk_relid != trigger->tgconstrrelid || riinfo->pk_relid != RelationGetRelid(trig_rel)) elog(ERROR, "wrong pg_constraint entry for trigger \"%s\" on table \"%s\"", - trigger->tgname, RelationGetRelationName(trig_rel)); + trigger->tgname, RelationGetNamespaceQualifiedRelationName(trig_rel)); } else { if (riinfo->fk_relid != RelationGetRelid(trig_rel) || riinfo->pk_relid != trigger->tgconstrrelid) elog(ERROR, "wrong pg_constraint entry for trigger \"%s\" on table \"%s\"", - trigger->tgname, RelationGetRelationName(trig_rel)); + trigger->tgname, RelationGetNamespaceQualifiedRelationName(trig_rel)); } return riinfo; @@ -3225,9 +3225,9 @@ ri_ReportViolation(const RI_ConstraintInfo *riinfo, ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), errmsg("referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave unexpected result", - RelationGetRelationName(pk_rel), + RelationGetNamespaceQualifiedRelationName(pk_rel), NameStr(riinfo->conname), - RelationGetRelationName(fk_rel)), + RelationGetNamespaceQualifiedRelationName(fk_rel)), errhint("This is most likely due to a rule having rewritten the query."))); /* @@ -3315,28 +3315,28 @@ ri_ReportViolation(const RI_ConstraintInfo *riinfo, ereport(ERROR, (errcode(ERRCODE_FOREIGN_KEY_VIOLATION), errmsg("insert or update on table \"%s\" violates foreign key constraint \"%s\"", - RelationGetRelationName(fk_rel), + RelationGetNamespaceQualifiedRelationName(fk_rel), NameStr(riinfo->conname)), has_perm ? errdetail("Key (%s)=(%s) is not present in table \"%s\".", key_names.data, key_values.data, - RelationGetRelationName(pk_rel)) : + RelationGetNamespaceQualifiedRelationName(pk_rel)) : errdetail("Key is not present in table \"%s\".", - RelationGetRelationName(pk_rel)), + RelationGetNamespaceQualifiedRelationName(pk_rel)), errtableconstraint(fk_rel, NameStr(riinfo->conname)))); else ereport(ERROR, (errcode(ERRCODE_FOREIGN_KEY_VIOLATION), errmsg("update or delete on table \"%s\" violates foreign key constraint \"%s\" on table \"%s\"", - RelationGetRelationName(pk_rel), + RelationGetNamespaceQualifiedRelationName(pk_rel), NameStr(riinfo->conname), - RelationGetRelationName(fk_rel)), + RelationGetNamespaceQualifiedRelationName(fk_rel)), has_perm ? errdetail("Key (%s)=(%s) is still referenced from table \"%s\".", key_names.data, key_values.data, - RelationGetRelationName(fk_rel)) : + RelationGetNamespaceQualifiedRelationName(fk_rel)) : errdetail("Key is still referenced from table \"%s\".", - RelationGetRelationName(fk_rel)), + RelationGetNamespaceQualifiedRelationName(fk_rel)), errtableconstraint(fk_rel, NameStr(riinfo->conname)))); } diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index fc5b9d9..a7148dc 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -1809,6 +1809,22 @@ RelationDecrementReferenceCount(Relation rel) } /* + * RelationGetNamespaceQualifiedRelationName + * Returns fully qualified relname including schema. + */ +const char * +RelationGetNamespaceQualifiedRelationName(Relation rel) +{ + StringInfo name = makeStringInfo(); + + appendStringInfoString(name, get_namespace_name_or_temp(RelationGetNamespace(rel))); + appendStringInfoString(name, "."); + appendStringInfoString(name, RelationGetRelationName(rel)); + + return name->data; +} + +/* * RelationClose - close an open relation * * Actually, we just decrement the refcount. diff --git a/src/include/utils/rel.h b/src/include/utils/rel.h index ff5672d..d45dd8e 100644 --- a/src/include/utils/rel.h +++ b/src/include/utils/rel.h @@ -509,5 +509,6 @@ typedef struct ViewOptions /* routines in utils/cache/relcache.c */ extern void RelationIncrementReferenceCount(Relation rel); extern void RelationDecrementReferenceCount(Relation rel); +const char *RelationGetNamespaceQualifiedRelationName(Relation rel); #endif /* REL_H */ diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out index 7c88ddc..da66974 100644 --- a/src/test/regress/expected/alter_table.out +++ b/src/test/regress/expected/alter_table.out @@ -315,8 +315,8 @@ ALTER TABLE tmp3 add constraint tmpconstr foreign key(a) references tmp2(b) matc ERROR: column "b" referenced in foreign key constraint does not exist -- Try (and fail) to add constraint due to invalid data ALTER TABLE tmp3 add constraint tmpconstr foreign key (a) references tmp2 match full; -ERROR: insert or update on table "tmp3" violates foreign key constraint "tmpconstr" -DETAIL: Key (a)=(5) is not present in table "tmp2". +ERROR: insert or update on table "public.tmp3" violates foreign key constraint "tmpconstr" +DETAIL: Key (a)=(5) is not present in table "public.tmp2". -- Delete failing row DELETE FROM tmp3 where a=5; -- Try (and succeed) @@ -326,8 +326,8 @@ INSERT INTO tmp3 values (5,50); -- Try NOT VALID and then VALIDATE CONSTRAINT, but fails. Delete failure then re-validate ALTER TABLE tmp3 add constraint tmpconstr foreign key (a) references tmp2 match full NOT VALID; ALTER TABLE tmp3 validate constraint tmpconstr; -ERROR: insert or update on table "tmp3" violates foreign key constraint "tmpconstr" -DETAIL: Key (a)=(5) is not present in table "tmp2". +ERROR: insert or update on table "public.tmp3" violates foreign key constraint "tmpconstr" +DETAIL: Key (a)=(5) is not present in table "public.tmp2". -- Delete failing row DELETE FROM tmp3 where a=5; -- Try (and succeed) and repeat to show it works on already valid constraint @@ -483,8 +483,8 @@ ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1) references pktable; -- Check it actually works INSERT INTO FKTABLE VALUES(42); -- should succeed INSERT INTO FKTABLE VALUES(43); -- should fail -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_ftest1_fkey" -DETAIL: Key (ftest1)=(43) is not present in table "pktable". +ERROR: insert or update on table "pg_temp.fktable" violates foreign key constraint "fktable_ftest1_fkey" +DETAIL: Key (ftest1)=(43) is not present in table "pg_temp.pktable". DROP TABLE FKTABLE; -- This should fail, because we'd have to cast numeric to int which is -- not an implicit coercion (or use numeric=numeric, but that's not part @@ -504,8 +504,8 @@ ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1) references pktable; -- Check it actually works INSERT INTO FKTABLE VALUES(42); -- should succeed INSERT INTO FKTABLE VALUES(43); -- should fail -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_ftest1_fkey" -DETAIL: Key (ftest1)=(43) is not present in table "pktable". +ERROR: insert or update on table "pg_temp.fktable" violates foreign key constraint "fktable_ftest1_fkey" +DETAIL: Key (ftest1)=(43) is not present in table "pg_temp.pktable". DROP TABLE FKTABLE; DROP TABLE PKTABLE; CREATE TEMP TABLE PKTABLE (ptest1 int, ptest2 inet, diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index bc26846..aa9b2ef 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -243,8 +243,8 @@ SELECT a,b,c,substring(d for 30), length(d) from clstr_tst; -- Verify that foreign key link still works INSERT INTO clstr_tst (b, c) VALUES (1111, 'this should fail'); -ERROR: insert or update on table "clstr_tst" violates foreign key constraint "clstr_tst_con" -DETAIL: Key (b)=(1111) is not present in table "clstr_tst_s". +ERROR: insert or update on table "public.clstr_tst" violates foreign key constraint "clstr_tst_con" +DETAIL: Key (b)=(1111) is not present in table "public.clstr_tst_s". SELECT conname FROM pg_constraint WHERE conrelid = 'clstr_tst'::regclass ORDER BY 1; conname diff --git a/src/test/regress/expected/collate.out b/src/test/regress/expected/collate.out index f076a4d..dc1d605 100644 --- a/src/test/regress/expected/collate.out +++ b/src/test/regress/expected/collate.out @@ -591,13 +591,13 @@ INSERT INTO collate_test20 VALUES ('foo'), ('bar'); CREATE TABLE collate_test21 (f2 text COLLATE "POSIX" REFERENCES collate_test20); INSERT INTO collate_test21 VALUES ('foo'), ('bar'); INSERT INTO collate_test21 VALUES ('baz'); -- fail -ERROR: insert or update on table "collate_test21" violates foreign key constraint "collate_test21_f2_fkey" -DETAIL: Key (f2)=(baz) is not present in table "collate_test20". +ERROR: insert or update on table "collate_tests.collate_test21" violates foreign key constraint "collate_test21_f2_fkey" +DETAIL: Key (f2)=(baz) is not present in table "collate_tests.collate_test20". CREATE TABLE collate_test22 (f2 text COLLATE "POSIX"); INSERT INTO collate_test22 VALUES ('foo'), ('bar'), ('baz'); ALTER TABLE collate_test22 ADD FOREIGN KEY (f2) REFERENCES collate_test20; -- fail -ERROR: insert or update on table "collate_test22" violates foreign key constraint "collate_test22_f2_fkey" -DETAIL: Key (f2)=(baz) is not present in table "collate_test20". +ERROR: insert or update on table "collate_tests.collate_test22" violates foreign key constraint "collate_test22_f2_fkey" +DETAIL: Key (f2)=(baz) is not present in table "collate_tests.collate_test20". DELETE FROM collate_test22 WHERE f2 = 'baz'; ALTER TABLE collate_test22 ADD FOREIGN KEY (f2) REFERENCES collate_test20; RESET enable_seqscan; diff --git a/src/test/regress/expected/enum.out b/src/test/regress/expected/enum.out index 1a61a5b..69bb3c3 100644 --- a/src/test/regress/expected/enum.out +++ b/src/test/regress/expected/enum.out @@ -543,11 +543,11 @@ CREATE TABLE enumtest_child (parent rainbow REFERENCES enumtest_parent); INSERT INTO enumtest_parent VALUES ('red'); INSERT INTO enumtest_child VALUES ('red'); INSERT INTO enumtest_child VALUES ('blue'); -- fail -ERROR: insert or update on table "enumtest_child" violates foreign key constraint "enumtest_child_parent_fkey" -DETAIL: Key (parent)=(blue) is not present in table "enumtest_parent". +ERROR: insert or update on table "public.enumtest_child" violates foreign key constraint "enumtest_child_parent_fkey" +DETAIL: Key (parent)=(blue) is not present in table "public.enumtest_parent". DELETE FROM enumtest_parent; -- fail -ERROR: update or delete on table "enumtest_parent" violates foreign key constraint "enumtest_child_parent_fkey" on table "enumtest_child" -DETAIL: Key (id)=(red) is still referenced from table "enumtest_child". +ERROR: update or delete on table "public.enumtest_parent" violates foreign key constraint "enumtest_child_parent_fkey" on table "public.enumtest_child" +DETAIL: Key (id)=(red) is still referenced from table "public.enumtest_child". -- -- cross-type RI should fail -- diff --git a/src/test/regress/expected/foreign_key.out b/src/test/regress/expected/foreign_key.out index 8c47bab..bf4693b 100644 --- a/src/test/regress/expected/foreign_key.out +++ b/src/test/regress/expected/foreign_key.out @@ -20,8 +20,8 @@ INSERT INTO FKTABLE VALUES (3, 4); INSERT INTO FKTABLE VALUES (NULL, 1); -- Insert a failed row into FK TABLE INSERT INTO FKTABLE VALUES (100, 2); -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_ftest1_fkey" -DETAIL: Key (ftest1)=(100) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "fktable_ftest1_fkey" +DETAIL: Key (ftest1)=(100) is not present in table "public.pktable". -- Check FKTABLE SELECT * FROM FKTABLE; ftest1 | ftest2 @@ -82,16 +82,16 @@ INSERT INTO FKTABLE VALUES (3, 6, 12); INSERT INTO FKTABLE VALUES (NULL, NULL, 0); -- Insert failed rows into FK TABLE INSERT INTO FKTABLE VALUES (100, 2, 4); -ERROR: insert or update on table "fktable" violates foreign key constraint "constrname" -DETAIL: Key (ftest1, ftest2)=(100, 2) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "constrname" +DETAIL: Key (ftest1, ftest2)=(100, 2) is not present in table "public.pktable". INSERT INTO FKTABLE VALUES (2, 2, 4); -ERROR: insert or update on table "fktable" violates foreign key constraint "constrname" -DETAIL: Key (ftest1, ftest2)=(2, 2) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "constrname" +DETAIL: Key (ftest1, ftest2)=(2, 2) is not present in table "public.pktable". INSERT INTO FKTABLE VALUES (NULL, 2, 4); -ERROR: insert or update on table "fktable" violates foreign key constraint "constrname" +ERROR: insert or update on table "public.fktable" violates foreign key constraint "constrname" DETAIL: MATCH FULL does not allow mixing of null and nonnull key values. INSERT INTO FKTABLE VALUES (1, NULL, 4); -ERROR: insert or update on table "fktable" violates foreign key constraint "constrname" +ERROR: insert or update on table "public.fktable" violates foreign key constraint "constrname" DETAIL: MATCH FULL does not allow mixing of null and nonnull key values. -- Check FKTABLE SELECT * FROM FKTABLE; @@ -191,16 +191,16 @@ INSERT INTO FKTABLE VALUES (3, 6, 12); INSERT INTO FKTABLE VALUES (NULL, NULL, 0); -- Insert failed rows into FK TABLE INSERT INTO FKTABLE VALUES (100, 2, 4); -ERROR: insert or update on table "fktable" violates foreign key constraint "constrname2" -DETAIL: Key (ftest1, ftest2)=(100, 2) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "constrname2" +DETAIL: Key (ftest1, ftest2)=(100, 2) is not present in table "public.pktable". INSERT INTO FKTABLE VALUES (2, 2, 4); -ERROR: insert or update on table "fktable" violates foreign key constraint "constrname2" -DETAIL: Key (ftest1, ftest2)=(2, 2) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "constrname2" +DETAIL: Key (ftest1, ftest2)=(2, 2) is not present in table "public.pktable". INSERT INTO FKTABLE VALUES (NULL, 2, 4); -ERROR: insert or update on table "fktable" violates foreign key constraint "constrname2" +ERROR: insert or update on table "public.fktable" violates foreign key constraint "constrname2" DETAIL: MATCH FULL does not allow mixing of null and nonnull key values. INSERT INTO FKTABLE VALUES (1, NULL, 4); -ERROR: insert or update on table "fktable" violates foreign key constraint "constrname2" +ERROR: insert or update on table "public.fktable" violates foreign key constraint "constrname2" DETAIL: MATCH FULL does not allow mixing of null and nonnull key values. -- Check FKTABLE SELECT * FROM FKTABLE; @@ -278,8 +278,8 @@ INSERT INTO FKTABLE VALUES (3, 4); INSERT INTO FKTABLE VALUES (NULL, 1); -- Insert a failed row into FK TABLE INSERT INTO FKTABLE VALUES (100, 2); -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_ftest1_fkey" -DETAIL: Key (ftest1)=(100) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "fktable_ftest1_fkey" +DETAIL: Key (ftest1)=(100) is not present in table "public.pktable". -- Check FKTABLE SELECT * FROM FKTABLE; ftest1 | ftest2 @@ -303,8 +303,8 @@ SELECT * FROM PKTABLE; -- Delete a row from PK TABLE (should fail) DELETE FROM PKTABLE WHERE ptest1=1; -ERROR: update or delete on table "pktable" violates foreign key constraint "fktable_ftest1_fkey" on table "fktable" -DETAIL: Key (ptest1)=(1) is still referenced from table "fktable". +ERROR: update or delete on table "public.pktable" violates foreign key constraint "fktable_ftest1_fkey" on table "public.fktable" +DETAIL: Key (ptest1)=(1) is still referenced from table "public.fktable". -- Delete a row from PK TABLE (should succeed) DELETE FROM PKTABLE WHERE ptest1=5; -- Check PKTABLE for deletes @@ -319,8 +319,8 @@ SELECT * FROM PKTABLE; -- Update a row from PK TABLE (should fail) UPDATE PKTABLE SET ptest1=0 WHERE ptest1=2; -ERROR: update or delete on table "pktable" violates foreign key constraint "fktable_ftest1_fkey" on table "fktable" -DETAIL: Key (ptest1)=(2) is still referenced from table "fktable". +ERROR: update or delete on table "public.pktable" violates foreign key constraint "fktable_ftest1_fkey" on table "public.fktable" +DETAIL: Key (ptest1)=(2) is still referenced from table "public.fktable". -- Update a row from PK TABLE (should succeed) UPDATE PKTABLE SET ptest1=0 WHERE ptest1=4; -- Check PKTABLE for updates @@ -353,8 +353,8 @@ INSERT INTO FKTABLE VALUES (NULL, 2, 7, 4); INSERT INTO FKTABLE VALUES (NULL, 3, 4, 5); -- Insert a failed values INSERT INTO FKTABLE VALUES (1, 2, 7, 6); -ERROR: insert or update on table "fktable" violates foreign key constraint "constrname3" -DETAIL: Key (ftest1, ftest2, ftest3)=(1, 2, 7) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "constrname3" +DETAIL: Key (ftest1, ftest2, ftest3)=(1, 2, 7) is not present in table "public.pktable". -- Show FKTABLE SELECT * from FKTABLE; ftest1 | ftest2 | ftest3 | ftest4 @@ -368,14 +368,14 @@ SELECT * from FKTABLE; -- Try to update something that should fail UPDATE PKTABLE set ptest2=5 where ptest2=2; -ERROR: update or delete on table "pktable" violates foreign key constraint "constrname3" on table "fktable" -DETAIL: Key (ptest1, ptest2, ptest3)=(1, 2, 3) is still referenced from table "fktable". +ERROR: update or delete on table "public.pktable" violates foreign key constraint "constrname3" on table "public.fktable" +DETAIL: Key (ptest1, ptest2, ptest3)=(1, 2, 3) is still referenced from table "public.fktable". -- Try to update something that should succeed UPDATE PKTABLE set ptest1=1 WHERE ptest2=3; -- Try to delete something that should fail DELETE FROM PKTABLE where ptest1=1 and ptest2=2 and ptest3=3; -ERROR: update or delete on table "pktable" violates foreign key constraint "constrname3" on table "fktable" -DETAIL: Key (ptest1, ptest2, ptest3)=(1, 2, 3) is still referenced from table "fktable". +ERROR: update or delete on table "public.pktable" violates foreign key constraint "constrname3" on table "public.fktable" +DETAIL: Key (ptest1, ptest2, ptest3)=(1, 2, 3) is still referenced from table "public.fktable". -- Try to delete something that should work DELETE FROM PKTABLE where ptest1=2; -- Show PKTABLE and FKTABLE @@ -417,8 +417,8 @@ INSERT INTO FKTABLE VALUES (NULL, 2, 7, 4); INSERT INTO FKTABLE VALUES (NULL, 3, 4, 5); -- Insert a failed values INSERT INTO FKTABLE VALUES (1, 2, 7, 6); -ERROR: insert or update on table "fktable" violates foreign key constraint "constrname3" -DETAIL: Key (ftest1, ftest2, ftest3)=(1, 2, 7) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "constrname3" +DETAIL: Key (ftest1, ftest2, ftest3)=(1, 2, 7) is not present in table "public.pktable". -- Show FKTABLE SELECT * from FKTABLE; ftest1 | ftest2 | ftest3 | ftest4 @@ -514,8 +514,8 @@ INSERT INTO FKTABLE VALUES (NULL, 2, 7, 4); INSERT INTO FKTABLE VALUES (NULL, 3, 4, 5); -- Insert a failed values INSERT INTO FKTABLE VALUES (1, 2, 7, 6); -ERROR: insert or update on table "fktable" violates foreign key constraint "constrname3" -DETAIL: Key (ftest1, ftest2, ftest3)=(1, 2, 7) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "constrname3" +DETAIL: Key (ftest1, ftest2, ftest3)=(1, 2, 7) is not present in table "public.pktable". -- Show FKTABLE SELECT * from FKTABLE; ftest1 | ftest2 | ftest3 | ftest4 @@ -619,8 +619,8 @@ INSERT INTO FKTABLE VALUES (NULL, 2, 7, 4); INSERT INTO FKTABLE VALUES (NULL, 3, 4, 5); -- Insert a failed values INSERT INTO FKTABLE VALUES (1, 2, 7, 6); -ERROR: insert or update on table "fktable" violates foreign key constraint "constrname3" -DETAIL: Key (ftest1, ftest2, ftest3)=(1, 2, 7) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "constrname3" +DETAIL: Key (ftest1, ftest2, ftest3)=(1, 2, 7) is not present in table "public.pktable". -- Show FKTABLE SELECT * from FKTABLE; ftest1 | ftest2 | ftest3 | ftest4 @@ -636,8 +636,8 @@ SELECT * from FKTABLE; -- Try to update something that will fail UPDATE PKTABLE set ptest2=5 where ptest2=2; -ERROR: insert or update on table "fktable" violates foreign key constraint "constrname3" -DETAIL: Key (ftest1, ftest2, ftest3)=(0, -1, -2) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "constrname3" +DETAIL: Key (ftest1, ftest2, ftest3)=(0, -1, -2) is not present in table "public.pktable". -- Try to update something that will set default UPDATE PKTABLE set ptest1=0, ptest2=-1, ptest3=-2 where ptest2=2; UPDATE PKTABLE set ptest2=10 where ptest2=4; @@ -753,12 +753,12 @@ CREATE TABLE FKTABLE (ftest1 int8 REFERENCES pktable); -- Check it actually works INSERT INTO FKTABLE VALUES(42); -- should succeed INSERT INTO FKTABLE VALUES(43); -- should fail -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_ftest1_fkey" -DETAIL: Key (ftest1)=(43) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "fktable_ftest1_fkey" +DETAIL: Key (ftest1)=(43) is not present in table "public.pktable". UPDATE FKTABLE SET ftest1 = ftest1; -- should succeed UPDATE FKTABLE SET ftest1 = ftest1 + 1; -- should fail -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_ftest1_fkey" -DETAIL: Key (ftest1)=(43) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "fktable_ftest1_fkey" +DETAIL: Key (ftest1)=(43) is not present in table "public.pktable". DROP TABLE FKTABLE; -- This should fail, because we'd have to cast numeric to int which is -- not an implicit coercion (or use numeric=numeric, but that's not part @@ -775,12 +775,12 @@ CREATE TABLE FKTABLE (ftest1 int REFERENCES pktable); -- Check it actually works INSERT INTO FKTABLE VALUES(42); -- should succeed INSERT INTO FKTABLE VALUES(43); -- should fail -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_ftest1_fkey" -DETAIL: Key (ftest1)=(43) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "fktable_ftest1_fkey" +DETAIL: Key (ftest1)=(43) is not present in table "public.pktable". UPDATE FKTABLE SET ftest1 = ftest1; -- should succeed UPDATE FKTABLE SET ftest1 = ftest1 + 1; -- should fail -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_ftest1_fkey" -DETAIL: Key (ftest1)=(43) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "fktable_ftest1_fkey" +DETAIL: Key (ftest1)=(43) is not present in table "public.pktable". DROP TABLE FKTABLE; DROP TABLE PKTABLE; -- Two columns, two tables @@ -847,20 +847,20 @@ insert into pktable(base1) values (1); insert into pktable(base1) values (2); -- let's insert a non-existent fktable value insert into fktable(ftest1) values (3); -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_ftest1_fkey" -DETAIL: Key (ftest1)=(3) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "fktable_ftest1_fkey" +DETAIL: Key (ftest1)=(3) is not present in table "public.pktable". -- let's make a valid row for that insert into pktable(base1) values (3); insert into fktable(ftest1) values (3); -- let's try removing a row that should fail from pktable delete from pktable where base1>2; -ERROR: update or delete on table "pktable" violates foreign key constraint "fktable_ftest1_fkey" on table "fktable" -DETAIL: Key (base1)=(3) is still referenced from table "fktable". +ERROR: update or delete on table "public.pktable" violates foreign key constraint "fktable_ftest1_fkey" on table "public.fktable" +DETAIL: Key (base1)=(3) is still referenced from table "public.fktable". -- okay, let's try updating all of the base1 values to *4 -- which should fail. update pktable set base1=base1*4; -ERROR: update or delete on table "pktable" violates foreign key constraint "fktable_ftest1_fkey" on table "fktable" -DETAIL: Key (base1)=(3) is still referenced from table "fktable". +ERROR: update or delete on table "public.pktable" violates foreign key constraint "fktable_ftest1_fkey" on table "public.fktable" +DETAIL: Key (base1)=(3) is still referenced from table "public.fktable". -- okay, let's try an update that should work. update pktable set base1=base1*4 where base1<3; -- and a delete that should work @@ -875,20 +875,20 @@ insert into pktable(base1, ptest1) values (1, 1); insert into pktable(base1, ptest1) values (2, 2); -- let's insert a non-existent fktable value insert into fktable(ftest1, ftest2) values (3, 1); -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_ftest1_fkey" -DETAIL: Key (ftest1, ftest2)=(3, 1) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "fktable_ftest1_fkey" +DETAIL: Key (ftest1, ftest2)=(3, 1) is not present in table "public.pktable". -- let's make a valid row for that insert into pktable(base1,ptest1) values (3, 1); insert into fktable(ftest1, ftest2) values (3, 1); -- let's try removing a row that should fail from pktable delete from pktable where base1>2; -ERROR: update or delete on table "pktable" violates foreign key constraint "fktable_ftest1_fkey" on table "fktable" -DETAIL: Key (base1, ptest1)=(3, 1) is still referenced from table "fktable". +ERROR: update or delete on table "public.pktable" violates foreign key constraint "fktable_ftest1_fkey" on table "public.fktable" +DETAIL: Key (base1, ptest1)=(3, 1) is still referenced from table "public.fktable". -- okay, let's try updating all of the base1 values to *4 -- which should fail. update pktable set base1=base1*4; -ERROR: update or delete on table "pktable" violates foreign key constraint "fktable_ftest1_fkey" on table "fktable" -DETAIL: Key (base1, ptest1)=(3, 1) is still referenced from table "fktable". +ERROR: update or delete on table "public.pktable" violates foreign key constraint "fktable_ftest1_fkey" on table "public.fktable" +DETAIL: Key (base1, ptest1)=(3, 1) is still referenced from table "public.fktable". -- okay, let's try an update that should work. update pktable set base1=base1*4 where base1<3; -- and a delete that should work @@ -907,16 +907,16 @@ insert into pktable (base1, ptest1, base2, ptest2) values (2, 2, 2, 1); insert into pktable (base1, ptest1, base2, ptest2) values (1, 3, 2, 2); -- fails (3,2) isn't in base1, ptest1 insert into pktable (base1, ptest1, base2, ptest2) values (2, 3, 3, 2); -ERROR: insert or update on table "pktable" violates foreign key constraint "pktable_base2_fkey" -DETAIL: Key (base2, ptest2)=(3, 2) is not present in table "pktable". +ERROR: insert or update on table "public.pktable" violates foreign key constraint "pktable_base2_fkey" +DETAIL: Key (base2, ptest2)=(3, 2) is not present in table "public.pktable". -- fails (2,2) is being referenced delete from pktable where base1=2; -ERROR: update or delete on table "pktable" violates foreign key constraint "pktable_base2_fkey" on table "pktable" -DETAIL: Key (base1, ptest1)=(2, 2) is still referenced from table "pktable". +ERROR: update or delete on table "public.pktable" violates foreign key constraint "pktable_base2_fkey" on table "public.pktable" +DETAIL: Key (base1, ptest1)=(2, 2) is still referenced from table "public.pktable". -- fails (1,1) is being referenced (twice) update pktable set base1=3 where base1=1; -ERROR: update or delete on table "pktable" violates foreign key constraint "pktable_base2_fkey" on table "pktable" -DETAIL: Key (base1, ptest1)=(1, 1) is still referenced from table "pktable". +ERROR: update or delete on table "public.pktable" violates foreign key constraint "pktable_base2_fkey" on table "public.pktable" +DETAIL: Key (base1, ptest1)=(1, 1) is still referenced from table "public.pktable". -- this sequence of two deletes will work, since after the first there will be no (2,*) references delete from pktable where base2=2; delete from pktable where base1=2; @@ -980,8 +980,8 @@ CREATE TABLE fktable ( ); -- default to immediate: should fail INSERT INTO fktable VALUES (5, 10); -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_fk_fkey" -DETAIL: Key (fk)=(10) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "fktable_fk_fkey" +DETAIL: Key (fk)=(10) is not present in table "public.pktable". -- explicitly defer the constraint BEGIN; SET CONSTRAINTS ALL DEFERRED; @@ -1008,8 +1008,8 @@ BEGIN; SET CONSTRAINTS ALL IMMEDIATE; -- should fail INSERT INTO fktable VALUES (500, 1000); -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_fk_fkey" -DETAIL: Key (fk)=(1000) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "fktable_fk_fkey" +DETAIL: Key (fk)=(1000) is not present in table "public.pktable". COMMIT; DROP TABLE fktable, pktable; -- tricky behavior: according to SQL99, if a deferred constraint is set @@ -1030,8 +1030,8 @@ SET CONSTRAINTS ALL DEFERRED; INSERT INTO fktable VALUES (1000, 2000); -- should cause transaction abort, due to preceding error SET CONSTRAINTS ALL IMMEDIATE; -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_fk_fkey" -DETAIL: Key (fk)=(2000) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "fktable_fk_fkey" +DETAIL: Key (fk)=(2000) is not present in table "public.pktable". INSERT INTO pktable VALUES (2000, 3); -- too late ERROR: current transaction is aborted, commands ignored until end of transaction block COMMIT; @@ -1050,8 +1050,8 @@ BEGIN; INSERT INTO fktable VALUES (100, 200); -- error here on commit COMMIT; -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_fk_fkey" -DETAIL: Key (fk)=(200) is not present in table "pktable". +ERROR: insert or update on table "public.fktable" violates foreign key constraint "fktable_fk_fkey" +DETAIL: Key (fk)=(200) is not present in table "public.pktable". DROP TABLE pktable, fktable; -- test notice about expensive referential integrity checks, -- where the index cannot be used because of type incompatibilities. @@ -1140,8 +1140,8 @@ INSERT INTO fktable VALUES (0, 20); UPDATE fktable SET id = id + 1; -- should catch error from initial INSERT COMMIT; -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_fk_fkey" -DETAIL: Key (fk)=(20) is not present in table "pktable". +ERROR: insert or update on table "pg_temp.fktable" violates foreign key constraint "fktable_fk_fkey" +DETAIL: Key (fk)=(20) is not present in table "pg_temp.pktable". -- check same case when insert is in a different subtransaction than update BEGIN; -- doesn't match PK, but no error yet @@ -1152,8 +1152,8 @@ SAVEPOINT savept1; UPDATE fktable SET id = id + 1; -- should catch error from initial INSERT COMMIT; -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_fk_fkey" -DETAIL: Key (fk)=(20) is not present in table "pktable". +ERROR: insert or update on table "pg_temp.fktable" violates foreign key constraint "fktable_fk_fkey" +DETAIL: Key (fk)=(20) is not present in table "pg_temp.pktable". BEGIN; -- INSERT will be in a subxact SAVEPOINT savept1; @@ -1164,8 +1164,8 @@ RELEASE SAVEPOINT savept1; UPDATE fktable SET id = id + 1; -- should catch error from initial INSERT COMMIT; -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_fk_fkey" -DETAIL: Key (fk)=(20) is not present in table "pktable". +ERROR: insert or update on table "pg_temp.fktable" violates foreign key constraint "fktable_fk_fkey" +DETAIL: Key (fk)=(20) is not present in table "pg_temp.pktable". BEGIN; -- doesn't match PK, but no error yet INSERT INTO fktable VALUES (0, 20); @@ -1177,8 +1177,8 @@ UPDATE fktable SET id = id + 1; ROLLBACK TO savept1; -- should catch error from initial INSERT COMMIT; -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_fk_fkey" -DETAIL: Key (fk)=(20) is not present in table "pktable". +ERROR: insert or update on table "pg_temp.fktable" violates foreign key constraint "fktable_fk_fkey" +DETAIL: Key (fk)=(20) is not present in table "pg_temp.pktable". -- -- check ALTER CONSTRAINT -- @@ -1187,14 +1187,14 @@ ALTER TABLE fktable ALTER CONSTRAINT fktable_fk_fkey DEFERRABLE INITIALLY IMMEDI BEGIN; -- doesn't match FK, should throw error now UPDATE pktable SET id = 10 WHERE id = 5; -ERROR: update or delete on table "pktable" violates foreign key constraint "fktable_fk_fkey" on table "fktable" -DETAIL: Key (id)=(5) is still referenced from table "fktable". +ERROR: update or delete on table "pg_temp.pktable" violates foreign key constraint "fktable_fk_fkey" on table "pg_temp.fktable" +DETAIL: Key (id)=(5) is still referenced from table "pg_temp.fktable". COMMIT; BEGIN; -- doesn't match PK, should throw error now INSERT INTO fktable VALUES (0, 20); -ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_fk_fkey" -DETAIL: Key (fk)=(20) is not present in table "pktable". +ERROR: insert or update on table "pg_temp.fktable" violates foreign key constraint "fktable_fk_fkey" +DETAIL: Key (fk)=(20) is not present in table "pg_temp.pktable". COMMIT; -- try additional syntax ALTER TABLE fktable ALTER CONSTRAINT fktable_fk_fkey NOT DEFERRABLE; @@ -1322,8 +1322,8 @@ select * from defc; (1 row) delete from defp where f1 = 0; -- fail -ERROR: update or delete on table "defp" violates foreign key constraint "defc_f1_fkey" on table "defc" -DETAIL: Key (f1)=(0) is still referenced from table "defc". +ERROR: update or delete on table "pg_temp.defp" violates foreign key constraint "defc_f1_fkey" on table "pg_temp.defc" +DETAIL: Key (f1)=(0) is still referenced from table "pg_temp.defc". alter table defc alter column f1 set default 1; delete from defp where f1 = 0; select * from defc; @@ -1333,8 +1333,8 @@ select * from defc; (1 row) delete from defp where f1 = 1; -- fail -ERROR: update or delete on table "defp" violates foreign key constraint "defc_f1_fkey" on table "defc" -DETAIL: Key (f1)=(1) is still referenced from table "defc". +ERROR: update or delete on table "pg_temp.defp" violates foreign key constraint "defc_f1_fkey" on table "pg_temp.defc" +DETAIL: Key (f1)=(1) is still referenced from table "pg_temp.defc". -- -- Test the difference between NO ACTION and RESTRICT -- @@ -1346,8 +1346,8 @@ update pp set f1=f1+1; insert into cc values(13); 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". +ERROR: update or delete on table "pg_temp.pp" violates foreign key constraint "cc_f1_fkey" on table "pg_temp.cc" +DETAIL: Key (f1)=(13) is still referenced from table "pg_temp.cc". drop table pp, cc; create temp table pp (f1 int primary key); create temp table cc (f1 int references pp on update restrict); @@ -1356,6 +1356,6 @@ insert into pp values(11); update pp set f1=f1+1; 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". +ERROR: update or delete on table "pg_temp.pp" violates foreign key constraint "cc_f1_fkey" on table "pg_temp.cc" +DETAIL: Key (f1)=(13) is still referenced from table "pg_temp.cc". drop table pp, cc; diff --git a/src/test/regress/expected/plpgsql.out b/src/test/regress/expected/plpgsql.out index e30c579..24a36ef 100644 --- a/src/test/regress/expected/plpgsql.out +++ b/src/test/regress/expected/plpgsql.out @@ -2105,8 +2105,8 @@ create temp table slave(f1 int references master deferrable); insert into master values(1); insert into slave values(1); insert into slave values(2); -- fails -ERROR: insert or update on table "slave" violates foreign key constraint "slave_f1_fkey" -DETAIL: Key (f1)=(2) is not present in table "master". +ERROR: insert or update on table "pg_temp.slave" violates foreign key constraint "slave_f1_fkey" +DETAIL: Key (f1)=(2) is not present in table "pg_temp.master". create function trap_foreign_key(int) returns int as $$ begin begin -- start a subtransaction @@ -2152,8 +2152,8 @@ begin; savepoint x; set constraints all immediate; -- fails -ERROR: insert or update on table "slave" violates foreign key constraint "slave_f1_fkey" -DETAIL: Key (f1)=(2) is not present in table "master". +ERROR: insert or update on table "pg_temp.slave" violates foreign key constraint "slave_f1_fkey" +DETAIL: Key (f1)=(2) is not present in table "pg_temp.master". rollback to x; select trap_foreign_key_2(); -- detects FK violation NOTICE: caught foreign_key_violation @@ -2163,8 +2163,8 @@ NOTICE: caught foreign_key_violation (1 row) commit; -- still fails -ERROR: insert or update on table "slave" violates foreign key constraint "slave_f1_fkey" -DETAIL: Key (f1)=(2) is not present in table "master". +ERROR: insert or update on table "pg_temp.slave" violates foreign key constraint "slave_f1_fkey" +DETAIL: Key (f1)=(2) is not present in table "pg_temp.master". drop function trap_foreign_key(int); drop function trap_foreign_key_2(); -- diff --git a/src/test/regress/expected/rowsecurity.out b/src/test/regress/expected/rowsecurity.out index 4aaa88f..63c0031 100644 --- a/src/test/regress/expected/rowsecurity.out +++ b/src/test/regress/expected/rowsecurity.out @@ -306,8 +306,8 @@ SELECT * FROM document d FULL OUTER JOIN category c on d.cid = c.cid; (6 rows) DELETE FROM category WHERE cid = 33; -- fails with FK violation -ERROR: update or delete on table "category" violates foreign key constraint "document_cid_fkey" on table "document" -DETAIL: Key is still referenced from table "document". +ERROR: update or delete on table "rls_regress_schema.category" violates foreign key constraint "document_cid_fkey" on table "rls_regress_schema.document" +DETAIL: Key is still referenced from table "rls_regress_schema.document". -- can insert FK referencing invisible PK SET SESSION AUTHORIZATION rls_regress_user2; SELECT * FROM document d FULL OUTER JOIN category c on d.cid = c.cid; @@ -3242,8 +3242,8 @@ ALTER TABLE r2 ENABLE ROW LEVEL SECURITY; ALTER TABLE r2 FORCE ROW LEVEL SECURITY; -- Errors due to rows in r2 DELETE FROM r1; -ERROR: update or delete on table "r1" violates foreign key constraint "r2_a_fkey" on table "r2" -DETAIL: Key (a)=(10) is still referenced from table "r2". +ERROR: update or delete on table "rls_regress_schema.r1" violates foreign key constraint "r2_a_fkey" on table "rls_regress_schema.r2" +DETAIL: Key (a)=(10) is still referenced from table "rls_regress_schema.r2". -- Reset r2 to no-RLS DROP POLICY p1 ON r2; ALTER TABLE r2 NO FORCE ROW LEVEL SECURITY; diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out index 80374e4..6b5b23f 100644 --- a/src/test/regress/expected/rules.out +++ b/src/test/regress/expected/rules.out @@ -2375,22 +2375,22 @@ insert into rule_and_refint_t3 values (1, 11, 12, 'row2'); insert into rule_and_refint_t3 values (1, 12, 11, 'row3'); insert into rule_and_refint_t3 values (1, 12, 12, 'row4'); insert into rule_and_refint_t3 values (1, 11, 13, 'row5'); -ERROR: insert or update on table "rule_and_refint_t3" violates foreign key constraint "rule_and_refint_t3_id3a_fkey1" -DETAIL: Key (id3a, id3c)=(1, 13) is not present in table "rule_and_refint_t2". +ERROR: insert or update on table "public.rule_and_refint_t3" violates foreign key constraint "rule_and_refint_t3_id3a_fkey1" +DETAIL: Key (id3a, id3c)=(1, 13) is not present in table "public.rule_and_refint_t2". insert into rule_and_refint_t3 values (1, 13, 11, 'row6'); -ERROR: insert or update on table "rule_and_refint_t3" violates foreign key constraint "rule_and_refint_t3_id3a_fkey" -DETAIL: Key (id3a, id3b)=(1, 13) is not present in table "rule_and_refint_t1". +ERROR: insert or update on table "public.rule_and_refint_t3" violates foreign key constraint "rule_and_refint_t3_id3a_fkey" +DETAIL: Key (id3a, id3b)=(1, 13) is not present in table "public.rule_and_refint_t1". -- Ordinary table insert into rule_and_refint_t3 values (1, 13, 11, 'row6') on conflict do nothing; -ERROR: insert or update on table "rule_and_refint_t3" violates foreign key constraint "rule_and_refint_t3_id3a_fkey" -DETAIL: Key (id3a, id3b)=(1, 13) is not present in table "rule_and_refint_t1". +ERROR: insert or update on table "public.rule_and_refint_t3" violates foreign key constraint "rule_and_refint_t3_id3a_fkey" +DETAIL: Key (id3a, id3b)=(1, 13) is not present in table "public.rule_and_refint_t1". -- rule not fired, so fk violation insert into rule_and_refint_t3 values (1, 13, 11, 'row6') on conflict (id3a, id3b, id3c) do update set id3b = excluded.id3b; -ERROR: insert or update on table "rule_and_refint_t3" violates foreign key constraint "rule_and_refint_t3_id3a_fkey" -DETAIL: Key (id3a, id3b)=(1, 13) is not present in table "rule_and_refint_t1". +ERROR: insert or update on table "public.rule_and_refint_t3" violates foreign key constraint "rule_and_refint_t3_id3a_fkey" +DETAIL: Key (id3a, id3b)=(1, 13) is not present in table "public.rule_and_refint_t1". -- rule fired, so unsupported insert into shoelace values ('sl9', 0, 'pink', 35.0, 'inch', 0.0) on conflict (sl_name) do update @@ -2406,11 +2406,11 @@ create rule rule_and_refint_t3_ins as on insert to rule_and_refint_t3 and (rule_and_refint_t3.id3b = new.id3b)) and (rule_and_refint_t3.id3c = new.id3c)); insert into rule_and_refint_t3 values (1, 11, 13, 'row7'); -ERROR: insert or update on table "rule_and_refint_t3" violates foreign key constraint "rule_and_refint_t3_id3a_fkey1" -DETAIL: Key (id3a, id3c)=(1, 13) is not present in table "rule_and_refint_t2". +ERROR: insert or update on table "public.rule_and_refint_t3" violates foreign key constraint "rule_and_refint_t3_id3a_fkey1" +DETAIL: Key (id3a, id3c)=(1, 13) is not present in table "public.rule_and_refint_t2". insert into rule_and_refint_t3 values (1, 13, 11, 'row8'); -ERROR: insert or update on table "rule_and_refint_t3" violates foreign key constraint "rule_and_refint_t3_id3a_fkey" -DETAIL: Key (id3a, id3b)=(1, 13) is not present in table "rule_and_refint_t1". +ERROR: insert or update on table "public.rule_and_refint_t3" violates foreign key constraint "rule_and_refint_t3_id3a_fkey" +DETAIL: Key (id3a, id3b)=(1, 13) is not present in table "public.rule_and_refint_t1". -- -- disallow dropping a view's rule (bug #5072) --