mirror of https://github.com/citusdata/citus.git
53 lines
1.4 KiB
C
53 lines
1.4 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* multi_executor.h
|
|
* Executor support for Citus.
|
|
*
|
|
* Copyright (c) 2012-2016, Citus Data, Inc.
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
|
|
#ifndef MULTI_EXECUTOR_H
|
|
#define MULTI_EXECUTOR_H
|
|
|
|
#include "executor/execdesc.h"
|
|
#include "nodes/parsenodes.h"
|
|
#include "nodes/execnodes.h"
|
|
|
|
#include "distributed/multi_physical_planner.h"
|
|
#include "distributed/multi_server_executor.h"
|
|
|
|
/* signal currently executed statement is a master select statement or router execution */
|
|
#define EXEC_FLAG_CITUS_MASTER_SELECT 0x100
|
|
#define EXEC_FLAG_CITUS_ROUTER_EXECUTOR 0x200
|
|
|
|
#if (PG_VERSION_NUM >= 90600)
|
|
#define tuplecount_t uint64
|
|
#else
|
|
#define tuplecount_t long
|
|
#endif
|
|
|
|
|
|
typedef struct CitusScanState
|
|
{
|
|
CustomScanState customScanState;
|
|
MultiPlan *multiPlan;
|
|
MultiExecutorType executorType;
|
|
|
|
/* state for router */
|
|
bool finishedUnderlyingScan;
|
|
Tuplestorestate *tuplestorestate;
|
|
} CitusScanState;
|
|
|
|
Node * CitusCreateScan(CustomScan *scan);
|
|
extern void CitusBeginScan(CustomScanState *node,
|
|
EState *estate,
|
|
int eflags);
|
|
extern TupleTableSlot * CitusExecScan(CustomScanState *node);
|
|
extern void CitusEndScan(CustomScanState *node);
|
|
extern void CitusReScan(CustomScanState *node);
|
|
extern void CitusExplainScan(CustomScanState *node, List *ancestors,
|
|
struct ExplainState *es);
|
|
|
|
#endif /* MULTI_EXECUTOR_H */
|