diff options
author | Andrew Gierth <rhodiumtoad@postgresql.org> | 2017-04-24 07:53:05 +0100 |
---|---|---|
committer | Andrew Gierth <rhodiumtoad@postgresql.org> | 2017-04-24 07:53:05 +0100 |
commit | 7be3678a8cfb55dcfca90fa586485f835ab912a5 (patch) | |
tree | 4b068b169e45b3eed835302c1b5fb1831293df5a /src/backend/optimizer/plan/planner.c | |
parent | 81ff04deda21e016e0e1d4ea1755ccb14c47c871 (diff) | |
download | postgresql-7be3678a8cfb55dcfca90fa586485f835ab912a5.tar.gz postgresql-7be3678a8cfb55dcfca90fa586485f835ab912a5.zip |
Repair crash with unsortable data in grouping sets.
Previously the code would generate incorrect results, assertion
failures, or crashes if given unsortable (but hashable) columns in
grouping sets. Handle by throwing an error instead.
Report and patch by Pavan Deolasee (though I changed the error
wording slightly); regression test by me.
(This affects 9.5 only since the planner was refactored in 9.6.)
Diffstat (limited to 'src/backend/optimizer/plan/planner.c')
-rw-r--r-- | src/backend/optimizer/plan/planner.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index fcb57bf411b..f25eb9b02da 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -1756,6 +1756,11 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) if (parse->groupingSets) { + if (!grouping_is_sortable(parse->groupClause)) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("could not implement GROUP BY"), + errdetail("Some of the datatypes do not support sorting, which is required for grouping sets."))); use_hashed_grouping = false; } else |