init
This commit is contained in:
77
db_include/fe_utils/parallel_slot.h
Executable file
77
db_include/fe_utils/parallel_slot.h
Executable file
@@ -0,0 +1,77 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* parallel_slot.h
|
||||
* Parallel support for bin/scripts/
|
||||
*
|
||||
* Copyright (c) 2003-2021, PostgreSQL Global Development Group
|
||||
*
|
||||
* src/include/fe_utils/parallel_slot.h
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef PARALLEL_SLOT_H
|
||||
#define PARALLEL_SLOT_H
|
||||
|
||||
#include "fe_utils/connect_utils.h"
|
||||
#include "libpq-fe.h"
|
||||
|
||||
typedef bool (*ParallelSlotResultHandler) (PGresult *res, PGconn *conn,
|
||||
void *context);
|
||||
|
||||
typedef struct ParallelSlot
|
||||
{
|
||||
PGconn *connection; /* One connection */
|
||||
bool inUse; /* Is the slot being used? */
|
||||
|
||||
/*
|
||||
* Prior to issuing a command or query on 'connection', a handler callback
|
||||
* function may optionally be registered to be invoked to process the
|
||||
* results, and context information may optionally be registered for use
|
||||
* by the handler. If unset, these fields should be NULL.
|
||||
*/
|
||||
ParallelSlotResultHandler handler;
|
||||
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)
|
||||
{
|
||||
slot->handler = handler;
|
||||
slot->handler_context = context;
|
||||
}
|
||||
|
||||
static inline void
|
||||
ParallelSlotClearHandler(ParallelSlot *slot)
|
||||
{
|
||||
slot->handler = NULL;
|
||||
slot->handler_context = NULL;
|
||||
}
|
||||
|
||||
extern ParallelSlot *ParallelSlotsGetIdle(ParallelSlotArray *slots,
|
||||
const char *dbname);
|
||||
|
||||
extern ParallelSlotArray *ParallelSlotsSetup(int numslots, ConnParams *cparams,
|
||||
const char *progname, bool echo,
|
||||
const char *initcmd);
|
||||
|
||||
extern void ParallelSlotsAdoptConn(ParallelSlotArray *sa, PGconn *conn);
|
||||
|
||||
extern void ParallelSlotsTerminate(ParallelSlotArray *sa);
|
||||
|
||||
extern bool ParallelSlotsWaitCompletion(ParallelSlotArray *sa);
|
||||
|
||||
extern bool TableCommandResultHandler(PGresult *res, PGconn *conn,
|
||||
void *context);
|
||||
|
||||
#endif /* PARALLEL_SLOT_H */
|
||||
Reference in New Issue
Block a user