diff options
Diffstat (limited to 'contrib/postgres_fdw/postgres_fdw.c')
-rw-r--r-- | contrib/postgres_fdw/postgres_fdw.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/contrib/postgres_fdw/postgres_fdw.c b/contrib/postgres_fdw/postgres_fdw.c index 53f890bb483..50d23f922cc 100644 --- a/contrib/postgres_fdw/postgres_fdw.c +++ b/contrib/postgres_fdw/postgres_fdw.c @@ -3345,9 +3345,9 @@ estimate_path_cost_size(PlannerInfo *root, } /* Get number of grouping columns and possible number of groups */ - numGroupCols = list_length(root->parse->groupClause); + numGroupCols = list_length(root->processed_groupClause); numGroups = estimate_num_groups(root, - get_sortgrouplist_exprs(root->parse->groupClause, + get_sortgrouplist_exprs(root->processed_groupClause, fpinfo->grouped_tlist), input_rows, NULL, NULL); @@ -3636,7 +3636,7 @@ adjust_foreign_grouping_path_cost(PlannerInfo *root, * pathkeys, adjust the costs with that function. Otherwise, adjust the * costs by applying the same heuristic as for the scan or join case. */ - if (!grouping_is_sortable(root->parse->groupClause) || + if (!grouping_is_sortable(root->processed_groupClause) || !pathkeys_contained_in(pathkeys, root->group_pathkeys)) { Path sort_path; /* dummy for result of cost_sort */ @@ -6415,7 +6415,11 @@ foreign_grouping_ok(PlannerInfo *root, RelOptInfo *grouped_rel, Index sgref = get_pathtarget_sortgroupref(grouping_target, i); ListCell *l; - /* Check whether this expression is part of GROUP BY clause */ + /* + * Check whether this expression is part of GROUP BY clause. Note we + * check the whole GROUP BY clause not just processed_groupClause, + * because we will ship all of it, cf. appendGroupByClause. + */ if (sgref && get_sortgroupref_clause_noerr(sgref, query->groupClause)) { TargetEntry *tle; |