pgsql: Do CHECK_FOR_INTERRUPTS inside, not before, scanGetItem. - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Do CHECK_FOR_INTERRUPTS inside, not before, scanGetItem.
Date
Msg-id E1uqwER-001mPN-2y@gemulon.postgresql.org
Whole thread Raw
List 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@gmail.com>
Author: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/19031-0638148643d25548@postgresql.org
Backpatch-through: 13

Branch
------
REL_14_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/a7da746c11777780f01475c6123bc1efeaefe508

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


pgsql-committers by date:

Previous
From: Alexander Korotkov
Date:
Subject: pgsql: Refactor variable names in remove_self_joins_one_group()
Next
From: Nathan Bossart
Date:
Subject: pgsql: Document privileges required for vacuumdb --missing-stats-only.