Add ParallelSlotSetIdle().
authorNathan Bossart <[email protected]>
Tue, 9 Dec 2025 19:34:22 +0000 (13:34 -0600)
committerNathan Bossart <[email protected]>
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 <[email protected]>
Reviewed-by: Kirill Reshke <[email protected]>
Reviewed-by: Chao Li <[email protected]
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);