pgsql: Do CHECK_FOR_INTERRUPTS inside, not before, scanGetItem.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Do CHECK_FOR_INTERRUPTS inside, not before, scanGetItem.
Date: 2025-08-26 16:09:12
Message-ID: E1uqwER-001mP7-2c@gemulon.postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Do CHECK_FOR_INTERRUPTS inside, not before, scanGetItem.

The CHECK_FOR_INTERRUPTS call in gingetbitmap turns out to be
inadequate to prevent a long uninterruptible loop, because
we now know a case where looping occurs within scanGetItem.
While the next patch will fix the bug that caused that, it
seems foolish to assume that no similar patterns are possible.
Let's do the CFI within scanGetItem's retry loop, instead.
This demonstrably allows canceling out of the loop exhibited
in bug #19031.

Bug: #19031
Reported-by: Tim Wood <washwithcare(at)gmail(dot)com>
Author: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Discussion: https://postgr.es/m/19031-0638148643d25548@postgresql.org
Backpatch-through: 13

Branch
------
REL_18_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/44c2e5b76c985e9f1d5c88bdaa5460ddf73fa37d

Modified Files
--------------
src/backend/access/gin/ginget.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Christoph Berg 2025-08-26 19:47:50 Re: pgsql: oauth: Add unit tests for multiplexer handling
Previous Message Alexander Korotkov 2025-08-26 10:24:03 pgsql: Refactor variable names in remove_self_joins_one_group()