Add ParallelSlotSetIdle().
authorNathan Bossart <nathan@postgresql.org>
Tue, 9 Dec 2025 19:34:22 +0000 (13:34 -0600)
committerNathan Bossart <nathan@postgresql.org>
Tue, 9 Dec 2025 19:34:22 +0000 (13:34 -0600)
This commit refactors the code for marking a ParallelSlot as idle
to a new static inline function.  This can be used to mark a slot
that was obtained via ParallelSlotGetIdle() but that we don't
intend to actually use for a query as idle again.

This is preparatory work for a follow-up commit that will add a
--dry-run option to vacuumdb.

Reviewed-by: Corey Huinker <corey.huinker@gmail.com>
Reviewed-by: Kirill Reshke <reshkekirill@gmail.com>
Reviewed-by: Chao Li <li.evan.chao@gmail.com
Discussion: https://postgr.es/m/CADkLM%3DckHkX7Of5SrK7g0LokPUwJ%3Dkk8JU1GXGF5pZ1eBVr0%3DQ%40mail.gmail.com

src/fe_utils/parallel_slot.c
src/include/fe_utils/parallel_slot.h

index 253a840865e879e2421621cdeaddfb18a693d7c9..1b9bc8b0da80955e1e0873c2c6023a11c645b27b 100644 (file)
@@ -269,8 +269,7 @@ wait_on_slots(ParallelSlotArray *sa)
            else
            {
                /* This connection has become idle */
-               sa->slots[i].inUse = false;
-               ParallelSlotClearHandler(&sa->slots[i]);
+               ParallelSlotSetIdle(&sa->slots[i]);
                break;
            }
        }
@@ -509,8 +508,7 @@ ParallelSlotsWaitCompletion(ParallelSlotArray *sa)
        if (!consumeQueryResult(&sa->slots[i]))
            return false;
        /* Mark connection as idle */
-       sa->slots[i].inUse = false;
-       ParallelSlotClearHandler(&sa->slots[i]);
+       ParallelSlotSetIdle(&sa->slots[i]);
    }
 
    return true;
index 7770a20de34562fc34cb3f0f446747d1964a3629..4a5fbfb3d8c985f0e3c5185ab392dc0803ce2951 100644 (file)
@@ -58,6 +58,13 @@ ParallelSlotClearHandler(ParallelSlot *slot)
    slot->handler_context = NULL;
 }
 
+static inline void
+ParallelSlotSetIdle(ParallelSlot *slot)
+{
+   slot->inUse = false;
+   ParallelSlotClearHandler(slot);
+}
+
 extern ParallelSlot *ParallelSlotsGetIdle(ParallelSlotArray *sa,
                                          const char *dbname);