62 if (tuplestorestate == NULL && node->
eflags != 0)
85 eof_tuplestore = (tuplestorestate == NULL) ||
88 if (!forward && eof_tuplestore)
101 eof_tuplestore =
false;
113 eof_tuplestore =
true;
#define PG_USED_FOR_ASSERTS_ONLY
#define Assert(condition)
void ExecReScan(PlanState *node)
void ExecEndNode(PlanState *node)
PlanState * ExecInitNode(Plan *node, EState *estate, int eflags)
void ExecInitResultTupleSlotTL(PlanState *planstate, const TupleTableSlotOps *tts_ops)
const TupleTableSlotOps TTSOpsMinimalTuple
void ExecCreateScanSlotFromOuterPlan(EState *estate, ScanState *scanstate, const TupleTableSlotOps *tts_ops)
#define outerPlanState(node)
#define EXEC_FLAG_BACKWARD
static TupleTableSlot * ExecProcNode(PlanState *node)
#define CHECK_FOR_INTERRUPTS()
static TupleTableSlot * ExecMaterial(PlanState *pstate)
void ExecReScanMaterial(MaterialState *node)
void ExecMaterialMarkPos(MaterialState *node)
MaterialState * ExecInitMaterial(Material *node, EState *estate, int eflags)
void ExecEndMaterial(MaterialState *node)
void ExecMaterialRestrPos(MaterialState *node)
#define castNode(_type_, nodeptr)
#define ScanDirectionIsForward(direction)
ScanDirection es_direction
Tuplestorestate * tuplestorestate
TupleTableSlot * ps_ResultTupleSlot
ProjectionInfo * ps_ProjInfo
ExecProcNodeMtd ExecProcNode
bool tuplestore_gettupleslot(Tuplestorestate *state, bool forward, bool copy, TupleTableSlot *slot)
void tuplestore_puttupleslot(Tuplestorestate *state, TupleTableSlot *slot)
void tuplestore_rescan(Tuplestorestate *state)
int tuplestore_alloc_read_pointer(Tuplestorestate *state, int eflags)
Tuplestorestate * tuplestore_begin_heap(bool randomAccess, bool interXact, int maxKBytes)
void tuplestore_trim(Tuplestorestate *state)
void tuplestore_copy_read_pointer(Tuplestorestate *state, int srcptr, int destptr)
bool tuplestore_advance(Tuplestorestate *state, bool forward)
void tuplestore_end(Tuplestorestate *state)
bool tuplestore_ateof(Tuplestorestate *state)
void tuplestore_set_eflags(Tuplestorestate *state, int eflags)
static TupleTableSlot * ExecClearTuple(TupleTableSlot *slot)
static TupleTableSlot * ExecCopySlot(TupleTableSlot *dstslot, TupleTableSlot *srcslot)