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

Go to the source code of this file.

Functions

GroupStateExecInitGroup (Group *node, EState *estate, int eflags)
 
void ExecEndGroup (GroupState *node)
 
void ExecReScanGroup (GroupState *node)
 

Function Documentation

◆ ExecEndGroup()

void ExecEndGroup ( GroupState node)
extern

Definition at line 226 of file nodeGroup.c.

227{
229
232}
void ExecEndNode(PlanState *node)
#define outerPlanState(node)
Definition execnodes.h:1263
#define outerPlan(node)
Definition plannodes.h:261

References ExecEndNode(), outerPlan, and outerPlanState.

Referenced by ExecEndNode().

◆ ExecInitGroup()

GroupState * ExecInitGroup ( Group node,
EState estate,
int  eflags 
)
extern

Definition at line 161 of file nodeGroup.c.

162{
164 const TupleTableSlotOps *tts_ops;
165
166 /* check for unsupported flags */
168
169 /*
170 * create state structure
171 */
173 grpstate->ss.ps.plan = (Plan *) node;
174 grpstate->ss.ps.state = estate;
175 grpstate->ss.ps.ExecProcNode = ExecGroup;
176 grpstate->grp_done = false;
177
178 /*
179 * create expression context
180 */
181 ExecAssignExprContext(estate, &grpstate->ss.ps);
182
183 /*
184 * initialize child nodes
185 */
186 outerPlanState(grpstate) = ExecInitNode(outerPlan(node), estate, eflags);
187
188 /*
189 * Initialize scan slot and type.
190 */
192 ExecCreateScanSlotFromOuterPlan(estate, &grpstate->ss, tts_ops);
193
194 /*
195 * Initialize result slot, type and projection.
196 */
199
200 /*
201 * initialize child expressions
202 */
203 grpstate->ss.ps.qual =
205
206 /*
207 * Precompute fmgr lookup data for inner loop
208 */
209 grpstate->eqfunction =
211 node->numCols,
212 node->grpColIdx,
213 node->grpOperators,
214 node->grpCollations,
215 &grpstate->ss.ps);
216
217 return grpstate;
218}
#define Assert(condition)
Definition c.h:873
ExprState * ExecInitQual(List *qual, PlanState *parent)
Definition execExpr.c:229
ExprState * execTuplesMatchPrepare(TupleDesc desc, int numCols, const AttrNumber *keyColIdx, const Oid *eqOperators, const Oid *collations, PlanState *parent)
PlanState * ExecInitNode(Plan *node, EState *estate, int eflags)
const TupleTableSlotOps TTSOpsVirtual
Definition execTuples.c:84
void ExecInitResultTupleSlotTL(PlanState *planstate, const TupleTableSlotOps *tts_ops)
TupleDesc ExecGetResultType(PlanState *planstate)
Definition execUtils.c:495
void ExecCreateScanSlotFromOuterPlan(EState *estate, ScanState *scanstate, const TupleTableSlotOps *tts_ops)
Definition execUtils.c:704
void ExecAssignExprContext(EState *estate, PlanState *planstate)
Definition execUtils.c:485
void ExecAssignProjectionInfo(PlanState *planstate, TupleDesc inputDesc)
Definition execUtils.c:583
const TupleTableSlotOps * ExecGetResultSlotOps(PlanState *planstate, bool *isfixed)
Definition execUtils.c:504
#define EXEC_FLAG_BACKWARD
Definition executor.h:69
#define EXEC_FLAG_MARK
Definition executor.h:70
static TupleTableSlot * ExecGroup(PlanState *pstate)
Definition nodeGroup.c:36
#define makeNode(_type_)
Definition nodes.h:161
static int fb(int x)
int numCols
Definition plannodes.h:1164
Plan plan
Definition plannodes.h:1161
List * qual
Definition plannodes.h:231

References Assert, EXEC_FLAG_BACKWARD, EXEC_FLAG_MARK, ExecAssignExprContext(), ExecAssignProjectionInfo(), ExecCreateScanSlotFromOuterPlan(), ExecGetResultSlotOps(), ExecGetResultType(), ExecGroup(), ExecInitNode(), ExecInitQual(), ExecInitResultTupleSlotTL(), execTuplesMatchPrepare(), fb(), makeNode, Group::numCols, outerPlan, outerPlanState, Group::plan, Plan::qual, and TTSOpsVirtual.

Referenced by ExecInitNode().

◆ ExecReScanGroup()

void ExecReScanGroup ( GroupState node)
extern

Definition at line 235 of file nodeGroup.c.

236{
238
239 node->grp_done = false;
240 /* must clear first tuple */
242
243 /*
244 * if chgParam of subnode is not null then plan will be re-scanned by
245 * first ExecProcNode.
246 */
247 if (outerPlan->chgParam == NULL)
249}
void ExecReScan(PlanState *node)
Definition execAmi.c:77
ScanState ss
Definition execnodes.h:2394
bool grp_done
Definition execnodes.h:2396
TupleTableSlot * ss_ScanTupleSlot
Definition execnodes.h:1626
static TupleTableSlot * ExecClearTuple(TupleTableSlot *slot)
Definition tuptable.h:457

References ExecClearTuple(), ExecReScan(), fb(), GroupState::grp_done, outerPlan, outerPlanState, GroupState::ss, and ScanState::ss_ScanTupleSlot.

Referenced by ExecReScan().