aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2018-02-27 13:18:59 -0500
committerRobert Haas <rhaas@postgresql.org>2018-02-27 13:23:50 -0500
commit3bfe957761ace9290072690a6298fc0eb996d857 (patch)
treecdb6a8122f46457ce9b3826d2ea6616cb7d8e2ad /src
parentbe42eb9d624cc14a9326e21ec75fdc571a7cb188 (diff)
downloadpostgresql-3bfe957761ace9290072690a6298fc0eb996d857.tar.gz
postgresql-3bfe957761ace9290072690a6298fc0eb996d857.zip
Fix logic error in add_paths_to_partial_grouping_rel.
Commit 3bf05e096b9f8375e640c5d7996aa57efd7f240c sometimes uses the cheapest_partial_path variable in this function to mean the cheapest one from the input rel and at other times the cheapest one from the partially grouped rel, but it never resets it, so we can end up with bad plans, leading to "ERROR: Aggref found in non-Agg plan node". Jeevan Chalke, per a report from Andreas Joseph Krogh and a separate off-list report from Rajkumar Raghuwanshi Discussion: http://postgr.es/m/CAM2+6=X9kxQoL2ZqZ00E6asBt9z+rfyWbOmhXJ0+8fPAyMZ9Jg@mail.gmail.com
Diffstat (limited to 'src')
-rw-r--r--src/backend/optimizer/plan/planner.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index e8f6cc559b3..819067536f2 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -6339,6 +6339,9 @@ add_paths_to_partial_grouping_rel(PlannerInfo *root,
*/
generate_gather_paths(root, partially_grouped_rel, true);
+ /* Get cheapest partial path from partially_grouped_rel */
+ cheapest_partial_path = linitial(partially_grouped_rel->partial_pathlist);
+
/*
* generate_gather_paths won't consider sorting the cheapest path to match
* the group keys and then applying a Gather Merge node to the result;