159 switch (plannode->
cmd)
184 elog(
ERROR,
"unrecognized set op: %d", (
int) plannode->
cmd);
207 return resultTupleSlot;
330 return resultTupleSlot;
370 SetOpHashEntry entry;
380 if (flag == firstFlag)
399 in_first_rel =
false;
425 SetOpHashEntry entry;
void ExecEndSetOp(SetOpState *node)
TupleTableSlot * ExecStoreTuple(HeapTuple tuple, TupleTableSlot *slot, Buffer buffer, bool shouldFree)
TupleTableSlot * ExecProcNode(PlanState *node)
struct SetOpHashEntryData * SetOpHashEntry
void MemoryContextDelete(MemoryContext context)
TupleTableSlot * ExecStoreMinimalTuple(MinimalTuple mtup, TupleTableSlot *slot, bool shouldFree)
MemoryContext tableContext
MemoryContext tempContext
ProjectionInfo * ps_ProjInfo
struct SetOpStatePerGroupData * SetOpStatePerGroup
TupleHashEntryData shared
void ExecEndNode(PlanState *node)
static void set_output_count(SetOpState *setopstate, SetOpStatePerGroup pergroup)
SetOpStatePerGroupData pergroup
void ExecReScan(PlanState *node)
TupleTableSlot * ExecClearTuple(TupleTableSlot *slot)
bool execTuplesMatch(TupleTableSlot *slot1, TupleTableSlot *slot2, int numCols, AttrNumber *matchColIdx, FmgrInfo *eqfunctions, MemoryContext evalContext)
void MemoryContextReset(MemoryContext context)
void heap_freetuple(HeapTuple htup)
void ExecReScanSetOp(SetOpState *node)
#define ALLOCSET_DEFAULT_MINSIZE
void execTuplesHashPrepare(int numCols, Oid *eqOperators, FmgrInfo **eqFunctions, FmgrInfo **hashFunctions)
void ExecAssignResultTypeFromTL(PlanState *planstate)
struct PlanState * lefttree
#define ScanTupleHashTable(iter)
TupleTableSlot * ps_ResultTupleSlot
static void initialize_counts(SetOpStatePerGroup pergroup)
void ExecInitResultTupleSlot(EState *estate, PlanState *planstate)
static void build_hash_table(SetOpState *setopstate)
static void setop_fill_hash_table(SetOpState *setopstate)
#define EXEC_FLAG_BACKWARD
#define outerPlanState(node)
TupleHashTable BuildTupleHashTable(int numCols, AttrNumber *keyColIdx, FmgrInfo *eqfunctions, FmgrInfo *hashfunctions, long nbuckets, Size entrysize, MemoryContext tablecxt, MemoryContext tempcxt)
static TupleTableSlot * setop_retrieve_direct(SetOpState *setopstate)
static int fetch_tuple_flag(SetOpState *setopstate, TupleTableSlot *inputslot)
MemoryContext CurrentMemoryContext
SetOpState * ExecInitSetOp(SetOp *node, EState *estate, int eflags)
TupleHashEntry LookupTupleHashEntry(TupleHashTable hashtable, TupleTableSlot *slot, bool *isnew)
struct SetOpHashEntryData SetOpHashEntryData
TupleHashIterator hashiter
struct SetOpStatePerGroupData SetOpStatePerGroupData
HeapTuple ExecCopySlotTuple(TupleTableSlot *slot)
#define MemoryContextResetAndDeleteChildren(ctx)
MemoryContext AllocSetContextCreate(MemoryContext parent, const char *name, Size minContextSize, Size initBlockSize, Size maxBlockSize)
void * palloc0(Size size)
static TupleTableSlot * setop_retrieve_hash_table(SetOpState *setopstate)
#define ResetTupleHashIterator(htable, iter)
#define Assert(condition)
SetOpStatePerGroup pergroup
TupleTableSlot * ExecSetOp(SetOpState *node)
#define ALLOCSET_DEFAULT_INITSIZE
Datum slot_getattr(TupleTableSlot *slot, int attnum, bool *isnull)
#define ALLOCSET_DEFAULT_MAXSIZE
#define PG_USED_FOR_ASSERTS_ONLY
FmgrInfo * execTuplesMatchPrepare(int numCols, Oid *eqOperators)
PlanState * ExecInitNode(Plan *node, EState *estate, int eflags)
static void advance_counts(SetOpStatePerGroup pergroup, int flag)