postgres.git / summary / log / commit / refs
commit b49013f2e86ad2cf01953f79992574e7ec2cdf02
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: Fri Sep 13 20:16:47 2024 +0000
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
src/backend/access/hash/hashsort.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/backend/access/hash/hashsort.c b/src/backend/access/hash/hashsort.c
index 3ce42483ed1..f7e140cb930 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);
}
[parent: 0970889e352c]