]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Check for interrupts during non-fast-update GIN insertion
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Fri, 13 Mar 2026 13:12:32 +0000 (15:12 +0200)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Fri, 13 Mar 2026 13:12:32 +0000 (15:12 +0200)
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 <vsridh90@gmail.com>
Discussion: https://www.postgresql.org/message-id/CAFMdLD6mQvAuStiOGvBJxAEfo6wdjZhj3+JveTLxOX8MVn4zmA@mail.gmail.com

src/backend/access/gin/gininsert.c

index c7e38dbe19342f482d6bbbeecfe87b992bf73fc6..97cea5f7d4e04f42757e00369d195f9cac9da665 100644 (file)
@@ -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