diff.patch
application/octet-stream
Filename: diff.patch
Type: application/octet-stream
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/backend/optimizer/plan/planner.c | 6 | 3 |
| src/backend/optimizer/util/pathnode.c | 3 | 1 |
| src/include/optimizer/pathnode.h | 2 | 1 |
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index 06ad856eac..a0f2390334 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -3900,7 +3900,8 @@ consider_groupingsets_paths(PlannerInfo *root,
(List *) parse->havingQual,
strat,
new_rollups,
- agg_costs));
+ agg_costs,
+ dNumGroups));
return;
}
@@ -4058,7 +4059,8 @@ consider_groupingsets_paths(PlannerInfo *root,
(List *) parse->havingQual,
AGG_MIXED,
rollups,
- agg_costs));
+ agg_costs,
+ dNumGroups));
}
}
@@ -4073,7 +4075,8 @@ consider_groupingsets_paths(PlannerInfo *root,
(List *) parse->havingQual,
AGG_SORTED,
gd->rollups,
- agg_costs));
+ agg_costs,
+ dNumGroups));
}
/*
diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c
index 483c4f4137..e2a3c110ce 100644
--- a/src/backend/optimizer/util/pathnode.c
+++ b/src/backend/optimizer/util/pathnode.c
@@ -3158,6 +3158,7 @@ create_agg_path(PlannerInfo *root,
* 'having_qual' is the HAVING quals if any
* 'rollups' is a list of RollupData nodes
* 'agg_costs' contains cost info about the aggregate functions to be computed
+ * 'numGroups' is the estimated total number of groups
*/
GroupingSetsPath *
create_groupingsets_path(PlannerInfo *root,
@@ -3166,7 +3167,8 @@ create_groupingsets_path(PlannerInfo *root,
List *having_qual,
AggStrategy aggstrategy,
List *rollups,
- const AggClauseCosts *agg_costs)
+ const AggClauseCosts *agg_costs,
+ double numGroups)
{
GroupingSetsPath *pathnode = makeNode(GroupingSetsPath);
PathTarget *target = rel->reltarget;
diff --git a/src/include/optimizer/pathnode.h b/src/include/optimizer/pathnode.h
index 635cc0a0a6..d2d46b15df 100644
--- a/src/include/optimizer/pathnode.h
+++ b/src/include/optimizer/pathnode.h
@@ -233,7 +233,8 @@ extern GroupingSetsPath *create_groupingsets_path(PlannerInfo *root,
List *having_qual,
AggStrategy aggstrategy,
List *rollups,
- const AggClauseCosts *agg_costs);
+ const AggClauseCosts *agg_costs,
+ double numGroups);
extern MinMaxAggPath *create_minmaxagg_path(PlannerInfo *root,
RelOptInfo *rel,
PathTarget *target,