140 econtext->ecxt_per_tuple_memory,
154 switch (plannode->
cmd)
179 elog(
ERROR,
"unrecognized set op: %d", (
int) plannode->
cmd);
205 return resultTupleSlot;
326 return resultTupleSlot;
377 if (
flag == firstFlag)
401 in_first_rel =
false;
#define PG_USED_FOR_ASSERTS_ONLY
#define Assert(condition)
void ExecReScan(PlanState *node)
void execTuplesHashPrepare(int numCols, const Oid *eqOperators, Oid **eqFuncOids, FmgrInfo **hashFunctions)
TupleHashEntry LookupTupleHashEntry(TupleHashTable hashtable, TupleTableSlot *slot, bool *isnew, uint32 *hash)
TupleHashTable BuildTupleHashTableExt(PlanState *parent, TupleDesc inputDesc, int numCols, AttrNumber *keyColIdx, const Oid *eqfuncoids, FmgrInfo *hashfunctions, Oid *collations, long nbuckets, Size additionalsize, MemoryContext metacxt, MemoryContext tablecxt, MemoryContext tempcxt, bool use_variable_hash_iv)
void ResetTupleHashTable(TupleHashTable hashtable)
ExprState * execTuplesMatchPrepare(TupleDesc desc, int numCols, const AttrNumber *keyColIdx, const Oid *eqOperators, const Oid *collations, PlanState *parent)
void ExecEndNode(PlanState *node)
PlanState * ExecInitNode(Plan *node, EState *estate, int eflags)
TupleTableSlot * ExecStoreMinimalTuple(MinimalTuple mtup, TupleTableSlot *slot, bool shouldFree)
TupleTableSlot * ExecStoreHeapTuple(HeapTuple tuple, TupleTableSlot *slot, bool shouldFree)
void ExecInitResultTupleSlotTL(PlanState *planstate, const TupleTableSlotOps *tts_ops)
const TupleTableSlotOps TTSOpsHeapTuple
const TupleTableSlotOps TTSOpsMinimalTuple
TupleDesc ExecGetResultType(PlanState *planstate)
void ExecAssignExprContext(EState *estate, PlanState *planstate)
#define outerPlanState(node)
#define ScanTupleHashTable(htable, iter)
#define ResetTupleHashIterator(htable, iter)
struct SetOpStatePerGroupData * SetOpStatePerGroup
#define EXEC_FLAG_BACKWARD
#define ResetExprContext(econtext)
static bool ExecQualAndReset(ExprState *state, ExprContext *econtext)
static TupleTableSlot * ExecProcNode(PlanState *node)
void heap_freetuple(HeapTuple htup)
if(TABLE==NULL||TABLE_index==NULL)
void MemoryContextReset(MemoryContext context)
void * palloc0(Size size)
MemoryContext CurrentMemoryContext
void * MemoryContextAlloc(MemoryContext context, Size size)
void MemoryContextDelete(MemoryContext context)
#define AllocSetContextCreate
#define ALLOCSET_DEFAULT_SIZES
#define CHECK_FOR_INTERRUPTS()
static void setop_fill_hash_table(SetOpState *setopstate)
static void initialize_counts(SetOpStatePerGroup pergroup)
static void build_hash_table(SetOpState *setopstate)
void ExecEndSetOp(SetOpState *node)
SetOpState * ExecInitSetOp(SetOp *node, EState *estate, int eflags)
static void set_output_count(SetOpState *setopstate, SetOpStatePerGroup pergroup)
static int fetch_tuple_flag(SetOpState *setopstate, TupleTableSlot *inputslot)
static TupleTableSlot * setop_retrieve_hash_table(SetOpState *setopstate)
static TupleTableSlot * setop_retrieve_direct(SetOpState *setopstate)
static void advance_counts(SetOpStatePerGroup pergroup, int flag)
struct SetOpStatePerGroupData SetOpStatePerGroupData
static TupleTableSlot * ExecSetOp(PlanState *pstate)
void ExecReScanSetOp(SetOpState *node)
#define castNode(_type_, nodeptr)
static int32 DatumGetInt32(Datum X)
MemoryContext es_query_cxt
TupleTableSlot * ecxt_innertuple
TupleTableSlot * ecxt_outertuple
ExprContext * ps_ExprContext
TupleTableSlot * ps_ResultTupleSlot
ProjectionInfo * ps_ProjInfo
ExecProcNodeMtd ExecProcNode
SetOpStatePerGroup pergroup
TupleHashIterator hashiter
MemoryContext tableContext
static TupleTableSlot * ExecClearTuple(TupleTableSlot *slot)
static HeapTuple ExecCopySlotHeapTuple(TupleTableSlot *slot)
static Datum slot_getattr(TupleTableSlot *slot, int attnum, bool *isnull)