Add ParallelSlotSetIdle().

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
pull/256/head
Nathan Bossart 1 week ago
parent cf1450e577
commit 750816971b
  1. 6
      src/fe_utils/parallel_slot.c
  2. 7
      src/include/fe_utils/parallel_slot.h

@ -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;

@ -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);

Loading…
Cancel
Save