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
2500
(6 rows)
+-- Check for sensible failure on unsortable data
+select usort, grouping(usort), count(*) from (values ('1'::xid),('2'::xid),('1'::xid)) v(usort) group by rollup(usort);
+ERROR: could not implement GROUP BY
+DETAIL: Some of the datatypes do not support sorting, which is required for grouping sets.
+select id, usort, grouping(id,usort), count(*) from (values (1,'1'::xid),(1,'2'::xid),(2,'1'::xid)) v(id,usort) group by grouping sets ((id), (usort));
+ERROR: could not implement GROUP BY
+DETAIL: Some of the datatypes do not support sorting, which is required for grouping sets.
-- end
select sum(ten) from onek group by two, rollup(four::text) order by 1;
select sum(ten) from onek group by rollup(four::text), two order by 1;
+-- Check for sensible failure on unsortable data
+select usort, grouping(usort), count(*) from (values ('1'::xid),('2'::xid),('1'::xid)) v(usort) group by rollup(usort);
+select id, usort, grouping(id,usort), count(*) from (values (1,'1'::xid),(1,'2'::xid),(2,'1'::xid)) v(id,usort) group by grouping sets ((id), (usort));
+
-- end