#include "nodes/execnodes.h"

Go to the source code of this file.
Functions | |
| SeqScanState * | ExecInitSeqScan (SeqScan *node, EState *estate, int eflags) |
| TupleTableSlot * | ExecSeqScan (SeqScanState *node) |
| void | ExecEndSeqScan (SeqScanState *node) |
| void | ExecSeqMarkPos (SeqScanState *node) |
| void | ExecSeqRestrPos (SeqScanState *node) |
| void | ExecReScanSeqScan (SeqScanState *node) |
| void ExecEndSeqScan | ( | SeqScanState * | node | ) |
Definition at line 221 of file nodeSeqscan.c.
References ExecClearTuple(), ExecCloseScanRelation(), ExecFreeExprContext(), heap_endscan(), ScanState::ps, PlanState::ps_ResultTupleSlot, ScanState::ss_currentRelation, ScanState::ss_currentScanDesc, and ScanState::ss_ScanTupleSlot.
Referenced by ExecEndNode().
{
Relation relation;
HeapScanDesc scanDesc;
/*
* get information from node
*/
relation = node->ss_currentRelation;
scanDesc = node->ss_currentScanDesc;
/*
* Free the exprcontext
*/
ExecFreeExprContext(&node->ps);
/*
* clean out the tuple table
*/
ExecClearTuple(node->ps.ps_ResultTupleSlot);
ExecClearTuple(node->ss_ScanTupleSlot);
/*
* close heap scan
*/
heap_endscan(scanDesc);
/*
* close the heap relation.
*/
ExecCloseScanRelation(relation);
}
| SeqScanState* ExecInitSeqScan | ( | SeqScan * | node, | |
| EState * | estate, | |||
| int | eflags | |||
| ) |
Definition at line 157 of file nodeSeqscan.c.
References Assert, ExecAssignExprContext(), ExecAssignResultTypeFromTL(), ExecAssignScanProjectionInfo(), ExecInitExpr(), ExecInitResultTupleSlot(), ExecInitScanTupleSlot(), InitScanRelation(), innerPlan, makeNode, NULL, outerPlan, Scan::plan, PlanState::plan, ScanState::ps, PlanState::ps_TupFromTlist, Plan::qual, PlanState::qual, PlanState::state, Plan::targetlist, and PlanState::targetlist.
Referenced by ExecInitNode().
{
SeqScanState *scanstate;
/*
* Once upon a time it was possible to have an outerPlan of a SeqScan, but
* not any more.
*/
Assert(outerPlan(node) == NULL);
Assert(innerPlan(node) == NULL);
/*
* create state structure
*/
scanstate = makeNode(SeqScanState);
scanstate->ps.plan = (Plan *) node;
scanstate->ps.state = estate;
/*
* Miscellaneous initialization
*
* create expression context for node
*/
ExecAssignExprContext(estate, &scanstate->ps);
/*
* initialize child expressions
*/
scanstate->ps.targetlist = (List *)
ExecInitExpr((Expr *) node->plan.targetlist,
(PlanState *) scanstate);
scanstate->ps.qual = (List *)
ExecInitExpr((Expr *) node->plan.qual,
(PlanState *) scanstate);
/*
* tuple table initialization
*/
ExecInitResultTupleSlot(estate, &scanstate->ps);
ExecInitScanTupleSlot(estate, scanstate);
/*
* initialize scan relation
*/
InitScanRelation(scanstate, estate, eflags);
scanstate->ps.ps_TupFromTlist = false;
/*
* Initialize result tuple type and projection info.
*/
ExecAssignResultTypeFromTL(&scanstate->ps);
ExecAssignScanProjectionInfo(scanstate);
return scanstate;
}
| void ExecReScanSeqScan | ( | SeqScanState * | node | ) |
Definition at line 266 of file nodeSeqscan.c.
References ExecScanReScan(), heap_rescan(), NULL, and ScanState::ss_currentScanDesc.
Referenced by ExecReScan().
{
HeapScanDesc scan;
scan = node->ss_currentScanDesc;
heap_rescan(scan, /* scan desc */
NULL); /* new scan keys */
ExecScanReScan((ScanState *) node);
}
| void ExecSeqMarkPos | ( | SeqScanState * | node | ) |
Definition at line 285 of file nodeSeqscan.c.
References heap_markpos(), and ScanState::ss_currentScanDesc.
Referenced by ExecMarkPos().
{
HeapScanDesc scan = node->ss_currentScanDesc;
heap_markpos(scan);
}
| void ExecSeqRestrPos | ( | SeqScanState * | node | ) |
Definition at line 299 of file nodeSeqscan.c.
References ExecClearTuple(), heap_restrpos(), ScanState::ss_currentScanDesc, and ScanState::ss_ScanTupleSlot.
Referenced by ExecRestrPos().
{
HeapScanDesc scan = node->ss_currentScanDesc;
/*
* Clear any reference to the previously returned tuple. This is needed
* because the slot is simply pointing at scan->rs_cbuf, which
* heap_restrpos will change; we'd have an internally inconsistent slot if
* we didn't do this.
*/
ExecClearTuple(node->ss_ScanTupleSlot);
heap_restrpos(scan);
}
| TupleTableSlot* ExecSeqScan | ( | SeqScanState * | node | ) |
Definition at line 111 of file nodeSeqscan.c.
References ExecScan(), SeqNext(), and SeqRecheck().
Referenced by ExecProcNode().
{
return ExecScan((ScanState *) node,
(ExecScanAccessMtd) SeqNext,
(ExecScanRecheckMtd) SeqRecheck);
}
1.7.1