diff options
| author | Andrew Gierth | 2018-03-21 10:42:04 +0000 |
|---|---|---|
| committer | Andrew Gierth | 2018-03-21 11:39:28 +0000 |
| commit | d2d79887eadff72c339a072ef693bb6016651d30 (patch) | |
| tree | dc777dcbe00114aef09beeb6bdc2eea6524202b7 /src/test | |
| parent | aea7c17e86e99a7ed4da489b3df2b5493b5e5e95 (diff) | |
Repair crash with unsortable grouping sets.
If there were multiple grouping sets, none of them empty, all of which
were unsortable, then an oversight in consider_groupingsets_paths led
to a null pointer dereference. Fix, and add a regression test for this
case.
Per report from Dang Minh Huong, though I didn't use their patch.
Backpatch to 10.x where hashed grouping sets were added.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/regress/expected/groupingsets.out | 12 | ||||
| -rw-r--r-- | src/test/regress/sql/groupingsets.sql | 5 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/test/regress/expected/groupingsets.out b/src/test/regress/expected/groupingsets.out index d21a494a9dd..c7deec2ff40 100644 --- a/src/test/regress/expected/groupingsets.out +++ b/src/test/regress/expected/groupingsets.out @@ -1018,6 +1018,18 @@ explain (costs off) -> Values Scan on "*VALUES*" (9 rows) +-- unsortable cases +select unsortable_col, count(*) + from gstest4 group by grouping sets ((unsortable_col),(unsortable_col)) + order by unsortable_col::text; + unsortable_col | count +----------------+------- + 1 | 4 + 1 | 4 + 2 | 4 + 2 | 4 +(4 rows) + -- mixed hashable/sortable cases select unhashable_col, unsortable_col, grouping(unhashable_col, unsortable_col), diff --git a/src/test/regress/sql/groupingsets.sql b/src/test/regress/sql/groupingsets.sql index eb680286030..c32d23b8d72 100644 --- a/src/test/regress/sql/groupingsets.sql +++ b/src/test/regress/sql/groupingsets.sql @@ -292,6 +292,11 @@ explain (costs off) select a, b, grouping(a,b), array_agg(v order by v) from gstest1 group by cube(a,b); +-- unsortable cases +select unsortable_col, count(*) + from gstest4 group by grouping sets ((unsortable_col),(unsortable_col)) + order by unsortable_col::text; + -- mixed hashable/sortable cases select unhashable_col, unsortable_col, grouping(unhashable_col, unsortable_col), |
