From 2e1dcf8c5424309305182af4700314cf59bab6b0 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Fri, 13 Mar 2026 15:12:32 +0200 Subject: [PATCH] Check for interrupts during non-fast-update GIN insertion ginExtractEntries() can produce a lot of entries for a single item. During index build, we check for interrupts between entries, and the fast-update codepath does it as part of vacuum_delay_point(), but the non-fast update insertion codepath was uninterruptible. Add CHECK_FOR_INTERRUPTS() between entries in the non-fast update codepath too. Author: Vinod Sridharan Discussion: https://www.postgresql.org/message-id/CAFMdLD6mQvAuStiOGvBJxAEfo6wdjZhj3+JveTLxOX8MVn4zmA@mail.gmail.com --- src/backend/access/gin/gininsert.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/backend/access/gin/gininsert.c b/src/backend/access/gin/gininsert.c index c7e38dbe193..97cea5f7d4e 100644 --- a/src/backend/access/gin/gininsert.c +++ b/src/backend/access/gin/gininsert.c @@ -850,8 +850,12 @@ ginHeapTupleInsert(GinState *ginstate, OffsetNumber attnum, &nentries, &categories); for (i = 0; i < nentries; i++) + { + /* there could be many entries, so be willing to abort here */ + CHECK_FOR_INTERRUPTS(); ginEntryInsert(ginstate, attnum, entries[i], categories[i], item, 1, NULL); + } } bool