public inbox for [email protected]
help / color / mirror / Atom feedFrom: Amit Langote <[email protected]>
To: Yugo Nagata <[email protected]>
Cc: surya poondla <[email protected]>
Cc: [email protected]
Cc: Kirill Reshke <[email protected]>
Subject: Re: Add comments about fire_triggers argument in ri_triggers.c
Date: Fri, 27 Mar 2026 14:36:21 +0900
Message-ID: <CA+HiwqF3RXW7BGv2PTs0Q73CJfUDseQSc=+hUsk==R64Uva87A@mail.gmail.com> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>
<CAOVWO5q8cfbHiZuL-wSxknnriPCBYpqRCnQKfH38WuLwFuxkSw@mail.gmail.com>
<[email protected]>
<CA+HiwqGFuhuSus8L7O36CYoeeZtGJ4PO0cR94qKDbtMKR4T2OA@mail.gmail.com>
<[email protected]>
On Fri, Mar 27, 2026 at 12:01 PM Yugo Nagata <[email protected]> wrote:
> On Fri, 27 Mar 2026 09:39:17 +0900
> Amit Langote <[email protected]> wrote:
>
> > On Fri, Mar 27, 2026 at 12:56 AM Yugo Nagata <[email protected]> wrote:
> > >
> > > Hi,
> > >
> > > Thank you all for the review and comments.
> > >
> > > > Yes Amit, I agree that SPI_execute_snapshot() comments do provide some
> > > > context on AFTER triggers, but I still feel the newly added comment
> > > > in ri_PerformCheck() gives additional context on why the fire_triggers is
> > > > set to false.
> > >
> > > Yes, that is what I intended. The existing comments on
> > > SPI_execute_snapshot() explain how the fire_triggers parameter works,
> > > but I would like to add a comment explaining why the AFTER trigger for
> > > RI needs to set it to false.
> > >
> > > If the explanation of the effect of fire_triggers seems redundant, I am
> > > fine with the following shorter version:
> > >
> > > + * Set fire_triggers to false to ensure that check triggers fire after all
> > > + * RI updates on the same row are complete.
> >
> > Thanks for the updated patch. Yes, adding the comment might be good,
> > but I'd suggest a small tweak:
> >
> > + * Set fire_triggers to false to ensure that AFTER triggers
> > are queued in
> > + * the outer query's after-trigger context and fire after all
> > RI updates on
> > + * the same row are complete, rather than immediately.
> >
> > Two changes:
> >
> > * "check triggers" -> "AFTER triggers", since fire_triggers=false
> > affects any AFTER triggers queued during the SPI execution, not just
> > RI check triggers.
> >
> > * mention of the outer query's after-trigger context to explain the
> > mechanism by which the deferral works.
> >
> > Does that additional context help?
>
> Thank you for the suggestion.
> That looks good to me. It is clearer than the previous version.
Ok, will push the attached.
--
Thanks, Amit Langote
Attachments:
[application/octet-stream] v3-0001-Add-comment-explaining-fire_triggers-false-in-ri_.patch (1.7K, 2-v3-0001-Add-comment-explaining-fire_triggers-false-in-ri_.patch)
download | inline diff:
From 08c90997b682d88d59d6481ea00542108b867a59 Mon Sep 17 00:00:00 2001
From: Amit Langote <[email protected]>
Date: Fri, 27 Mar 2026 14:33:35 +0900
Subject: [PATCH v3] Add comment explaining fire_triggers=false in
ri_PerformCheck()
The reason for passing fire_triggers=false to SPI_execute_snapshot()
in ri_PerformCheck() was not documented, making it unclear why it was
done that way. Add a comment explaining that it ensures AFTER
triggers are queued in the outer query's after-trigger context and
fire only after all RI updates on the same row are complete.
Author: Yugo Nagata <[email protected]>
Reviewed-by: Kirill Reshke <[email protected]>
Reviewed-by: Surya Poondla <[email protected]>
Discussion: https://postgr.es/m/[email protected]
---
src/backend/utils/adt/ri_triggers.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/backend/utils/adt/ri_triggers.c b/src/backend/utils/adt/ri_triggers.c
index d22b8ef7f3c..6230a2ea9ad 100644
--- a/src/backend/utils/adt/ri_triggers.c
+++ b/src/backend/utils/adt/ri_triggers.c
@@ -2582,7 +2582,13 @@ ri_PerformCheck(const RI_ConstraintInfo *riinfo,
save_sec_context | SECURITY_LOCAL_USERID_CHANGE |
SECURITY_NOFORCE_RLS);
- /* Finally we can run the query. */
+ /*
+ * Finally we can run the query.
+ *
+ * Set fire_triggers to false to ensure that AFTER triggers are queued in
+ * the outer query's after-trigger context and fire after all RI updates
+ * on the same row are complete, rather than immediately.
+ */
spi_result = SPI_execute_snapshot(qplan,
vals, nulls,
test_snapshot, crosscheck_snapshot,
--
2.47.3
view thread (8+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected], [email protected]
Subject: Re: Add comments about fire_triggers argument in ri_triggers.c
In-Reply-To: <CA+HiwqF3RXW7BGv2PTs0Q73CJfUDseQSc=+hUsk==R64Uva87A@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox