PostgreSQL Source Code git master
Loading...
Searching...
No Matches
nodeWorktablescan.h File Reference
#include "nodes/execnodes.h"
Include dependency graph for nodeWorktablescan.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

WorkTableScanStateExecInitWorkTableScan (WorkTableScan *node, EState *estate, int eflags)
 
void ExecReScanWorkTableScan (WorkTableScanState *node)
 

Function Documentation

◆ ExecInitWorkTableScan()

WorkTableScanState * ExecInitWorkTableScan ( WorkTableScan node,
EState estate,
int  eflags 
)
extern

Definition at line 131 of file nodeWorktablescan.c.

132{
134
135 /* check for unsupported flags */
137
138 /*
139 * WorkTableScan should not have any children.
140 */
141 Assert(outerPlan(node) == NULL);
142 Assert(innerPlan(node) == NULL);
143
144 /*
145 * create new WorkTableScanState for node
146 */
148 scanstate->ss.ps.plan = (Plan *) node;
149 scanstate->ss.ps.state = estate;
150 scanstate->ss.ps.ExecProcNode = ExecWorkTableScan;
151 scanstate->rustate = NULL; /* we'll set this later */
152
153 /*
154 * Miscellaneous initialization
155 *
156 * create expression context for node
157 */
158 ExecAssignExprContext(estate, &scanstate->ss.ps);
159
160 /*
161 * tuple table initialization
162 */
164
165 /* signal that return type is not yet known */
166 scanstate->ss.ps.resultopsset = true;
167 scanstate->ss.ps.resultopsfixed = false;
168
170
171 /*
172 * initialize child expressions
173 */
174 scanstate->ss.ps.qual =
175 ExecInitQual(node->scan.plan.qual, (PlanState *) scanstate);
176
177 /*
178 * Do not yet initialize projection info, see ExecWorkTableScan() for
179 * details.
180 */
181
182 return scanstate;
183}
#define Assert(condition)
Definition c.h:945
ExprState * ExecInitQual(List *qual, PlanState *parent)
Definition execExpr.c:250
void ExecInitScanTupleSlot(EState *estate, ScanState *scanstate, TupleDesc tupledesc, const TupleTableSlotOps *tts_ops, uint16 flags)
void ExecInitResultTypeTL(PlanState *planstate)
const TupleTableSlotOps TTSOpsMinimalTuple
Definition execTuples.c:86
void ExecAssignExprContext(EState *estate, PlanState *planstate)
Definition execUtils.c:490
#define EXEC_FLAG_BACKWARD
Definition executor.h:70
#define EXEC_FLAG_MARK
Definition executor.h:71
static TupleTableSlot * ExecWorkTableScan(PlanState *pstate)
#define makeNode(_type_)
Definition nodes.h:161
#define innerPlan(node)
Definition plannodes.h:264
#define outerPlan(node)
Definition plannodes.h:265
static int fb(int x)

References Assert, EXEC_FLAG_BACKWARD, EXEC_FLAG_MARK, ExecAssignExprContext(), ExecInitQual(), ExecInitResultTypeTL(), ExecInitScanTupleSlot(), ExecWorkTableScan(), fb(), innerPlan, makeNode, outerPlan, WorkTableScan::scan, and TTSOpsMinimalTuple.

Referenced by ExecInitNode().

◆ ExecReScanWorkTableScan()

void ExecReScanWorkTableScan ( WorkTableScanState node)
extern

Definition at line 192 of file nodeWorktablescan.c.

193{
194 if (node->ss.ps.ps_ResultTupleSlot)
196
197 ExecScanReScan(&node->ss);
198
199 /* No need (or way) to rescan if ExecWorkTableScan not called yet */
200 if (node->rustate)
202}
void ExecScanReScan(ScanState *node)
Definition execScan.c:108
TupleTableSlot * ps_ResultTupleSlot
Definition execnodes.h:1215
Tuplestorestate * working_table
Definition execnodes.h:1580
PlanState ps
Definition execnodes.h:1633
RecursiveUnionState * rustate
Definition execnodes.h:2056
void tuplestore_rescan(Tuplestorestate *state)
static TupleTableSlot * ExecClearTuple(TupleTableSlot *slot)
Definition tuptable.h:476

References ExecClearTuple(), ExecScanReScan(), ScanState::ps, PlanState::ps_ResultTupleSlot, WorkTableScanState::rustate, WorkTableScanState::ss, tuplestore_rescan(), and RecursiveUnionState::working_table.

Referenced by ExecReScan().