1
0
mirror of https://github.com/postgres/postgres.git synced 2025-12-12 02:37:31 +03:00

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
This commit is contained in:
Nathan Bossart
2025-12-09 13:34:22 -06:00
parent cf1450e577
commit 750816971b
2 changed files with 9 additions and 4 deletions

View File

@@ -269,8 +269,7 @@ wait_on_slots(ParallelSlotArray *sa)
else else
{ {
/* This connection has become idle */ /* This connection has become idle */
sa->slots[i].inUse = false; ParallelSlotSetIdle(&sa->slots[i]);
ParallelSlotClearHandler(&sa->slots[i]);
break; break;
} }
} }
@@ -509,8 +508,7 @@ ParallelSlotsWaitCompletion(ParallelSlotArray *sa)
if (!consumeQueryResult(&sa->slots[i])) if (!consumeQueryResult(&sa->slots[i]))
return false; return false;
/* Mark connection as idle */ /* Mark connection as idle */
sa->slots[i].inUse = false; ParallelSlotSetIdle(&sa->slots[i]);
ParallelSlotClearHandler(&sa->slots[i]);
} }
return true; return true;

View File

@@ -58,6 +58,13 @@ ParallelSlotClearHandler(ParallelSlot *slot)
slot->handler_context = NULL; slot->handler_context = NULL;
} }
static inline void
ParallelSlotSetIdle(ParallelSlot *slot)
{
slot->inUse = false;
ParallelSlotClearHandler(slot);
}
extern ParallelSlot *ParallelSlotsGetIdle(ParallelSlotArray *sa, extern ParallelSlot *ParallelSlotsGetIdle(ParallelSlotArray *sa,
const char *dbname); const char *dbname);