diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index 6770836..1690230 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -3646,10 +3646,24 @@ create_grouping_paths(PlannerInfo *root, -1.0); if (parse->hasAggs) + { + AggPath *aggpath = create_agg_path(root, + grouped_rel, + path, + target, + parse->groupClause ? AGG_SORTED : AGG_PLAIN, + parse->groupClause, + (List *) parse->havingQual, + &agg_final_costs, + dNumGroups, + true, + false, + true); + add_path(grouped_rel, (Path *) create_agg_path(root, grouped_rel, - path, + (Path *) aggpath, target, parse->groupClause ? AGG_SORTED : AGG_PLAIN, parse->groupClause, @@ -3659,6 +3673,8 @@ create_grouping_paths(PlannerInfo *root, true, true, true)); + + } else add_path(grouped_rel, (Path *) create_group_path(root,