summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2024-09-13 16:16:47 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2024-09-13 16:16:47 -0400
commitb27215dbb42b6376515e1ab1ff06e0ad9ab13450 (patch)
tree897e5e89ed8eca35961f35a67f94861fc13cf302 /src
parentef46a73f6941021ad40b342ea637f19fb5144cc8 (diff)
Allow _h_indexbuild() to be interrupted.
When we are building a hash index that is large enough to need pre-sorting (larger than either maintenance_work_mem or NBuffers), the initial sorting phase is interruptible, but the insertion phase wasn't. Add the missing CHECK_FOR_INTERRUPTS(). Per bug #18616 from Alexander Lakhin. Back-patch to all supported branches. Pavel Borisov Discussion: https://postgr.es/m/18616-acbb9e5caf41e964@postgresql.org
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/hash/hashsort.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/backend/access/hash/hashsort.c b/src/backend/access/hash/hashsort.c
index 2c7b5857b53..b04b26e4c0b 100644
--- a/src/backend/access/hash/hashsort.c
+++ b/src/backend/access/hash/hashsort.c
@@ -146,6 +146,9 @@ _h_indexbuild(HSpool *hspool, Relation heapRel)
_hash_doinsert(hspool->index, itup, heapRel);
+ /* allow insertion phase to be interrupted, and track progress */
+ CHECK_FOR_INTERRUPTS();
+
pgstat_progress_update_param(PROGRESS_CREATEIDX_TUPLES_DONE,
++tups_done);
}