Re: Eliminating SPI / SQL from some RI triggers - take 3

amit <amitlangote09@gmail.com>

From: Amit Langote <amitlangote09@gmail.com>
To: Chao Li <li.evan.chao@gmail.com>
Cc: Sandro Santilli <strk@kbt.io>, Tomas Vondra <tomas@vondra.me>, Junwang Zhao <zhjwpku@gmail.com>, Pavel Stehule <pavel.stehule@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>, jie wang <jugierwang@gmail.com>
Date: 2026-04-10T04:21:37Z
Lists: pgsql-hackers
On Fri, Apr 10, 2026 at 1:21 PM Chao Li <li.evan.chao@gmail.com> wrote:
> > On Apr 10, 2026, at 12:14, Amit Langote <amitlangote09@gmail.com> wrote:
> >
> > Hi Sandro,
> >
> > On Fri, Apr 10, 2026 at 1:02 AM Sandro Santilli <strk@kbt.io> wrote:
> >> On Thu, Apr 09, 2026 at 08:55:01PM +0900, Amit Langote wrote:
> >>> Hi Sandro,
> >>>
> >>> On Thu, Apr 9, 2026 at 8:07 PM Sandro Santilli <strk@kbt.io> wrote:
> >>>> On Mon, Mar 02, 2026 at 01:34:41PM +0100, Tomas Vondra wrote:
> >>>>>
> >>>>> TBH I haven't noticed the memory context issue myself, I only noticed
> >>>>> because the builds with index prefetch started crashing.
> >>>>
> >>>> We're getting a crash in PostGIS too, since that commit was merged into
> >>>> the master branch, see https://trac.osgeo.org/postgis/ticket/6066
> >>>>
> >>>> The crash is triggered a C function using SPI.
> >>>
> >>> Evan Montgomery-Recht posted a report of the same issue on this thread
> >>> a couple of days ago.
> >>
> >> I confirm the patch attached in Evan's email [1] fixes the crash for us.
> >>
> >> [1] https://www.postgresql.org/message-id/CAEg7pwcKf01FmDqFAf-Hzu_pYnMYScY_Otid-pe9uw3BJ6gq9g%40mail.gmail.com
> >>
> >>> I have posted a patch to fix the issue, which I will commit tomorrow
> >>> after a bit more testing.
> >>
> >> I also confirm your patch v4-0001-Fix-RI-fast-path-crash-under-nested-C-level-SPI.patch
> >> fixes the crash for us. Thank you !
> >
> > Thanks for confirming that.
> >
> >> Let me know when it is time to test again against master.
> >
> > I have just pushed 0001 which you'll find in master as 34a3078629.
> >
> > --
> > Thanks, Amit Langote
>
> Hi Amit, looks like you missed to fix the typo that Jie pointed out. In 34a307862930056e1976471d6d81a5e2efc148df,
> ```
> + bool firing_batch_callbacks; /* true when in
> + * FireAfterTriggersBatchCallbacks() */
> ```
> The typo is still there.

Yep, my bad.  Will push a fix shortly.

-- 
Thanks, Amit Langote



Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix some const qualifier use in ri_triggers.c

  2. doc: Improve consistency of parallel vacuum description.

  3. Move afterTriggerFiringDepth into AfterTriggersData

  4. Fix typo left by 34a30786293

  5. Fix RI fast-path crash under nested C-level SPI

  6. Add nkeys parameter to recheck_matched_pk_tuple()

  7. Fix deferred FK check batching introduced by commit b7b27eb41a5

  8. Optimize fast-path FK checks with batched index probes

  9. Make FastPathMeta self-contained by copying FmgrInfo structs

  10. Add fast path for foreign key constraint checks