pgsql: Remove batching from RI fast-path checks

From: Amit Langote <amitlan(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Remove batching from RI fast-path checks
Date: 2026-10-03 02:46:15
Message-ID: E1xCplP-0000000066B-2POy@gemulon.postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Remove batching from RI fast-path checks

This removes the buffering of FK rows for batched PK index probes,
along with the after-trigger callback infrastructure used only by
batching. The per-row fast path, which probes the PK index directly
instead of going through SPI, remains. This is a cherry-pick of
commit 25649d6e791c2, which made the same change in REL_19_STABLE,
adjusted for some drift between the branches.

I (amitlan) initially thought we could keep improving the batching
path on master by fixing its remaining bugs and other issues as
they were found. However, we are still finding cases where delaying
checks to accumulate a batch changes their results, such as when other
AFTER ROW triggers modify the referenced table. Individual cases can
be addressed, but new ones keep turning up, which makes it hard to be
confident that fixing the known ones will be enough. It seems better
to rip batching out and reconsider how to introduce it, or at least
its useful pieces, while preserving the semantics of per-row checks.

Discussion: https://postgr.es/m/CA+HiwqFx4cjFtC3akr1DW-cPYw+B-EkCSffZPrkpTef8PNS6qA@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/425daf545d9146e008220ae0b21415982220cd3f

Modified Files
--------------
src/backend/access/transam/xact.c | 2 -
src/backend/commands/trigger.c | 206 +----
src/backend/utils/adt/ri_triggers.c | 979 +--------------------
src/include/commands/trigger.h | 24 -
src/test/isolation/isolation_schedule | 2 +-
.../specs/ri_fastpath_reindex.spec | 12 +-
src/test/regress/expected/foreign_key.out | 347 +-------
src/test/regress/expected/triggers.out | 24 -
src/test/regress/sql/foreign_key.sql | 305 +------
src/test/regress/sql/triggers.sql | 23 -
src/tools/pgindent/typedefs.list | 4 -
11 files changed, 131 insertions(+), 1797 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Álvaro Herrera 2026-10-03 11:07:09 pgsql: Clear out values from dropped columns during REPACK (CONCURRENTL
Previous Message Peter Eisentraut 2026-10-02 11:16:06 pgsql: Write pg_attribute_counted_by() in front of the type