Commit 8d29d45d authored by David Rowley's avatar David Rowley

Fix assert failure in expand_grouping_sets

linitial_node() fails in assert enabled builds if the given pointer is
not of the specified type.  Here the type is IntList.  The code thought
it should be expecting List, but it was wrong.

In the existing tests which run this code the initial list element is
always NIL.  Since linitial_node() allows NULL, we didn't trigger any
assert failures in the existing regression tests.

There is still some discussion as to whether we need a few more tests in
this area, but for now, since beta2 is looming, fix the bug first.

Bug: #17067
Discussion: https://postgr.es/m/17067-665d50fa321f79e0@postgresql.org
Reported-by: Yaoguang Chen
parent a7bb0ce5
...@@ -1855,7 +1855,7 @@ expand_grouping_sets(List *groupingSets, bool groupDistinct, int limit) ...@@ -1855,7 +1855,7 @@ expand_grouping_sets(List *groupingSets, bool groupDistinct, int limit)
list_sort(result, cmp_list_len_contents_asc); list_sort(result, cmp_list_len_contents_asc);
/* Finally, remove duplicates */ /* Finally, remove duplicates */
prev = linitial_node(List, result); prev = linitial(result);
for_each_from(cell, result, 1) for_each_from(cell, result, 1)
{ {
if (equal(lfirst(cell), prev)) if (equal(lfirst(cell), prev))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment