postgres.git / summary / log / commit / refs
commit 262e56bcae4f529c47ce4fbb8306fd6e26762975
Author: Robert Haas <rhaas@postgresql.org>
Date: Wed Sep 23 01:42:00 2015 +0000
First released in: 9.6.0
Teach planstate_tree_walker about custom scans.
This logic was missing from ExplainPreScanNode, from which I derived
planstate_tree_walker. But it shouldn't be missing, especially not
from a generic walker function, so add it.
KaiGai Kohei
src/backend/nodes/nodeFuncs.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/backend/nodes/nodeFuncs.c b/src/backend/nodes/nodeFuncs.c
index 4a2447409a9..a11cb9ff4d1 100644
--- a/src/backend/nodes/nodeFuncs.c
+++ b/src/backend/nodes/nodeFuncs.c
@@ -3428,6 +3428,7 @@ bool
planstate_tree_walker(PlanState *planstate, bool (*walker) (), void *context)
{
Plan *plan = planstate->plan;
+ ListCell *lc;
/* initPlan-s */
if (planstate_walk_subplans(planstate->initPlan, walker, context))
@@ -3484,6 +3485,13 @@ planstate_tree_walker(PlanState *planstate, bool (*walker) (), void *context)
if (walker(((SubqueryScanState *) planstate)->subplan, context))
return true;
break;
+ case T_CustomScan:
+ foreach (lc, ((CustomScanState *) planstate)->custom_ps)
+ {
+ if (walker((PlanState *) lfirst(lc), context))
+ return true;
+ }
+ break;
default:
break;
}
[parent: b1d5cc375b87]