MCPcopy Create free account
hub / github.com/apache/cloudberry / planstate_tree_walker

Function planstate_tree_walker

src/backend/nodes/nodeFuncs.c:4308–4390  ·  view source on GitHub ↗

* planstate_tree_walker --- walk plan state trees * * The walker has already visited the current node, and so we need only * recurse into any sub-nodes it has. */

Source from the content-addressed store, hash-verified

4306 * recurse into any sub-nodes it has.
4307 */
4308bool
4309planstate_tree_walker(PlanState *planstate,
4310 bool (*walker) (),
4311 void *context)
4312{
4313 Plan *plan = planstate->plan;
4314 ListCell *lc;
4315
4316 /* Guard against stack overflow due to overly complex plan trees */
4317 check_stack_depth();
4318
4319 /* initPlan-s */
4320 if (planstate_walk_subplans(planstate->initPlan, walker, context))
4321 return true;
4322
4323 /* lefttree */
4324 if (outerPlanState(planstate))
4325 {
4326 if (walker(outerPlanState(planstate), context))
4327 return true;
4328 }
4329
4330 /* righttree */
4331 if (innerPlanState(planstate))
4332 {
4333 if (walker(innerPlanState(planstate), context))
4334 return true;
4335 }
4336
4337 /* special child plans */
4338 switch (nodeTag(plan))
4339 {
4340 case T_Append:
4341 if (planstate_walk_members(((AppendState *) planstate)->appendplans,
4342 ((AppendState *) planstate)->as_nplans,
4343 walker, context))
4344 return true;
4345 break;
4346 case T_MergeAppend:
4347 if (planstate_walk_members(((MergeAppendState *) planstate)->mergeplans,
4348 ((MergeAppendState *) planstate)->ms_nplans,
4349 walker, context))
4350 return true;
4351 break;
4352 case T_BitmapAnd:
4353 if (planstate_walk_members(((BitmapAndState *) planstate)->bitmapplans,
4354 ((BitmapAndState *) planstate)->nplans,
4355 walker, context))
4356 return true;
4357 break;
4358 case T_BitmapOr:
4359 if (planstate_walk_members(((BitmapOrState *) planstate)->bitmapplans,
4360 ((BitmapOrState *) planstate)->nplans,
4361 walker, context))
4362 return true;
4363 break;
4364 case T_Sequence:
4365 if (planstate_walk_members(((SequenceState *) planstate)->subplans,

Calls 4

check_stack_depthFunction · 0.85
planstate_walk_subplansFunction · 0.85
planstate_walk_membersFunction · 0.85
foreachFunction · 0.50

Tested by

no test coverage detected