pgsql: Fix GetForeignKey*Triggers for self-referential FKs - Mailing list pgsql-committers

From Alvaro Herrera
Subject pgsql: Fix GetForeignKey*Triggers for self-referential FKs
Date
Msg-id E1oWbAf-0028Mx-JO@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Fix GetForeignKey*Triggers for self-referential FKs

Because of inadequate filtering, the check triggers were confusing the
search for action triggers in GetForeignKeyActionTriggers and vice-versa
in GetForeignKeyCheckTriggers; this confusion results in seemingly
random assertion failures, and can have real impact in non-asserting
builds depending on catalog order.  Change these functions so that they
correctly ignore triggers that are not relevant to each side.

To reduce the odds of further problems, do not break out of the
searching loop in assertion builds.  This break is likely to hide bugs;
without it, we would have detected this bug immediately.

This problem was introduced by f4566345cf40, so backpatch to 15 where
that commit first appeared.

Author: Amit Langote <amitlangote09@gmail.com>
Discussion: https://postgr.es/m/20220908172029.sejft2ppckbo6oh5@awork3.anarazel.de
Discussion: https://postgr.es/m/4104619.1662663056@sss.pgh.pa.us

Branch
------
REL_15_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/68b0da67794e62df53d07956482770cbfbc5e786

Modified Files
--------------
src/backend/commands/tablecmds.c | 12 ++++++++++++
1 file changed, 12 insertions(+)


pgsql-committers by date:

Previous
From: John Naylor
Date:
Subject: Re: pgsql: Choose FK name correctly during partition attachment
Next
From: Alvaro Herrera
Date:
Subject: pgsql: Doc fixes for MERGE statement