aboutsummaryrefslogtreecommitdiff
path: root/src/backend/optimizer/plan/planner.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/optimizer/plan/planner.c')
-rw-r--r--src/backend/optimizer/plan/planner.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index 320caebd874..8674ad674d9 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -1044,10 +1044,11 @@ subquery_planner(PlannerGlobal *glob, Query *parse,
/*
* If we have any RTE_RESULT relations, see if they can be deleted from
- * the jointree. This step is most effectively done after we've done
- * expression preprocessing and outer join reduction.
+ * the jointree. We also rely on this processing to flatten single-child
+ * FromExprs underneath outer joins. This step is most effectively done
+ * after we've done expression preprocessing and outer join reduction.
*/
- if (hasResultRTEs)
+ if (hasResultRTEs || hasOuterJoins)
remove_useless_result_rtes(root);
/*