Hi Joel, As always, great catch! Kindly find the updated patch (v15) below
Changelog: - v15 (compatible with current master 2021-01-27, commit e42b3c3bd6a9c6233ac4c8a2e9b040367ba2f97c) * remove "EACH ELEMENT OF" from violation messages * accommodate tests accordingly Keep up the good work testing this patch. /Mark On Wed, Jan 27, 2021 at 5:11 AM Joel Jacobson <j...@compiler.org> wrote: > On Tue, Jan 26, 2021, at 12:59, Mark Rofail wrote: > > Please don't hesitate to give your feedback. > > The error message for insert or update violations looks fine: > > UPDATE catalog_clone.pg_extension SET extconfig = ARRAY[12345] WHERE oid = > 10; > ERROR: insert or update on table "pg_extension" violates foreign key > constraint "pg_extension_extconfig_fkey" > DETAIL: Key (EACH ELEMENT OF extconfig)=(12345) is not present in table > "pg_class". > > But when trying to delete a still referenced row, > the column mentioned in the "EACH ELEMENT OF" sentence > is not the array column, but the column in the referenced table: > > DELETE FROM catalog_clone.pg_class WHERE oid = 10; > ERROR: update or delete on table "pg_class" violates foreign key > constraint "pg_extension_extconfig_fkey" on table "pg_extension" > DETAIL: Key (EACH ELEMENT OF oid)=(10) is still referenced from table > "pg_extension". > > I think either the "EACH ELEMENT OF" part of the latter error message > should be dropped, > or the column name for the array column should be used. > > /Joel >