diff options
Diffstat (limited to 'src/include/fe_utils/parallel_slot.h')
-rw-r--r-- | src/include/fe_utils/parallel_slot.h | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/src/include/fe_utils/parallel_slot.h b/src/include/fe_utils/parallel_slot.h index 8902f8d4f48..b7e2b0a29b8 100644 --- a/src/include/fe_utils/parallel_slot.h +++ b/src/include/fe_utils/parallel_slot.h @@ -21,7 +21,7 @@ typedef bool (*ParallelSlotResultHandler) (PGresult *res, PGconn *conn, typedef struct ParallelSlot { PGconn *connection; /* One connection */ - bool isFree; /* Is it known to be idle? */ + bool inUse; /* Is the slot being used? */ /* * Prior to issuing a command or query on 'connection', a handler callback @@ -33,6 +33,16 @@ typedef struct ParallelSlot void *handler_context; } ParallelSlot; +typedef struct ParallelSlotArray +{ + int numslots; + ConnParams *cparams; + const char *progname; + bool echo; + const char *initcmd; + ParallelSlot slots[FLEXIBLE_ARRAY_MEMBER]; +} ParallelSlotArray; + static inline void ParallelSlotSetHandler(ParallelSlot *slot, ParallelSlotResultHandler handler, void *context) @@ -48,15 +58,18 @@ ParallelSlotClearHandler(ParallelSlot *slot) slot->handler_context = NULL; } -extern ParallelSlot *ParallelSlotsGetIdle(ParallelSlot *slots, int numslots); +extern ParallelSlot *ParallelSlotsGetIdle(ParallelSlotArray *slots, + const char *dbname); + +extern ParallelSlotArray *ParallelSlotsSetup(int numslots, ConnParams *cparams, + const char *progname, bool echo, + const char *initcmd); -extern ParallelSlot *ParallelSlotsSetup(const ConnParams *cparams, - const char *progname, bool echo, - PGconn *conn, int numslots); +extern void ParallelSlotsAdoptConn(ParallelSlotArray *sa, PGconn *conn); -extern void ParallelSlotsTerminate(ParallelSlot *slots, int numslots); +extern void ParallelSlotsTerminate(ParallelSlotArray *sa); -extern bool ParallelSlotsWaitCompletion(ParallelSlot *slots, int numslots); +extern bool ParallelSlotsWaitCompletion(ParallelSlotArray *sa); extern bool TableCommandResultHandler(PGresult *res, PGconn *conn, void *context); |