From 262e56bcae4f529c47ce4fbb8306fd6e26762975 Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Tue, 22 Sep 2015 21:42:00 -0400 Subject: [PATCH] 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 4a2447409a..a11cb9ff4d 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; }