From: Robert Haas Date: Thu, 12 Jun 2025 20:12:49 +0000 (-0400) Subject: fix subplan walking because i never get this right X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=0f82256f7b6189f596dc90a1424f1411d1677b81;p=users%2Frhaas%2Fpostgres.git fix subplan walking because i never get this right --- diff --git a/contrib/pg_plan_advice/pg_plan_advice.c b/contrib/pg_plan_advice/pg_plan_advice.c index c8b7ca495a..0758d51e84 100644 --- a/contrib/pg_plan_advice/pg_plan_advice.c +++ b/contrib/pg_plan_advice/pg_plan_advice.c @@ -56,6 +56,14 @@ pgpa_check_plan(PlannedStmt *pstmt) context.pstmt = pstmt; pgpa_plan_walker(&context, pstmt->planTree, NULL, NULL); + foreach(lc, pstmt->subplans) + { + Plan *plan = lfirst(lc); + + if (plan != NULL) + pgpa_plan_walker(&context, plan, NULL, NULL); + } + initStringInfo(&buf); foreach(lc, context.unrolled_joins) { diff --git a/contrib/pg_plan_advice/pgpa_walker.c b/contrib/pg_plan_advice/pgpa_walker.c index 159d2e679c..56badfb029 100644 --- a/contrib/pg_plan_advice/pgpa_walker.c +++ b/contrib/pg_plan_advice/pgpa_walker.c @@ -180,17 +180,6 @@ pgpa_plan_walker(pgpa_plan_walker_context *context, Plan *plan, pgpa_destroy_join_unroller(join_unroller); } - /* - * We still need to recuse into subtrees other than the inner and outer - * subplan. Here, we recurse into each initPlan. - */ - foreach(lc, plan->initPlan) - { - Plan *subplan = lfirst(lc); - - pgpa_plan_walker(context, subplan, NULL, NULL); - } - /* * Some plan types can have additional children. Nodes like Append that * can have any number of children store them in a List; a SubqueryScan