97 param = &(estate->es_param_exec_vals[
plan->wtParam]);
98 Assert(param->execPlan == NULL);
#define Assert(condition)
ExprState * ExecInitQual(List *qual, PlanState *parent)
TupleTableSlot * ExecScan(ScanState *node, ExecScanAccessMtd accessMtd, ExecScanRecheckMtd recheckMtd)
void ExecAssignScanProjectionInfo(ScanState *node)
void ExecScanReScan(ScanState *node)
void ExecInitScanTupleSlot(EState *estate, ScanState *scanstate, TupleDesc tupledesc, const TupleTableSlotOps *tts_ops)
void ExecInitResultTypeTL(PlanState *planstate)
const TupleTableSlotOps TTSOpsMinimalTuple
TupleDesc ExecGetResultType(PlanState *planstate)
void ExecAssignExprContext(EState *estate, PlanState *planstate)
void ExecAssignScanType(ScanState *scanstate, TupleDesc tupDesc)
#define EXEC_FLAG_BACKWARD
bool(* ExecScanRecheckMtd)(ScanState *node, TupleTableSlot *slot)
TupleTableSlot *(* ExecScanAccessMtd)(ScanState *node)
static TupleTableSlot * ExecWorkTableScan(PlanState *pstate)
WorkTableScanState * ExecInitWorkTableScan(WorkTableScan *node, EState *estate, int eflags)
static TupleTableSlot * WorkTableScanNext(WorkTableScanState *node)
void ExecReScanWorkTableScan(WorkTableScanState *node)
static bool WorkTableScanRecheck(WorkTableScanState *node, TupleTableSlot *slot)
#define castNode(_type_, nodeptr)
static Pointer DatumGetPointer(Datum X)
#define ScanDirectionIsForward(direction)
ScanDirection es_direction
TupleTableSlot * ps_ResultTupleSlot
ExecProcNodeMtd ExecProcNode
Tuplestorestate * working_table
TupleTableSlot * ss_ScanTupleSlot
RecursiveUnionState * rustate
bool tuplestore_gettupleslot(Tuplestorestate *state, bool forward, bool copy, TupleTableSlot *slot)
void tuplestore_rescan(Tuplestorestate *state)
static TupleTableSlot * ExecClearTuple(TupleTableSlot *slot)