Fix misuse of foreach_delete_current().
authorTom Lane <[email protected]>
Thu, 18 Mar 2021 23:24:22 +0000 (19:24 -0400)
committerTom Lane <[email protected]>
Thu, 18 Mar 2021 23:24:22 +0000 (19:24 -0400)
Our coding convention requires this macro's result to be assigned
back to the original List variable.  In this usage, since the
List could not become empty, there was no actual bug --- but
some compilers warned about it.  Oversight in be45be9c3.

Discussion: https://postgr.es/m/35077b31-2d62-1e31-0e2e-ddb52d590b73@enterprisedb.com

src/backend/parser/parse_agg.c

index 899327aaf4ec6d69a92ab704742a392f85b4bd35..1a745b742e080f999b8ce0dc4554bc6d6153b287 100644 (file)
@@ -1844,11 +1844,11 @@ expand_grouping_sets(List *groupingSets, bool groupDistinct, int limit)
        list_sort(result, cmp_list_len_contents_asc);
 
        /* Finally, remove duplicates */
-       prev = list_nth_node(List, result, 0);
+       prev = linitial_node(List, result);
        for_each_from(cell, result, 1)
        {
            if (equal(lfirst(cell), prev))
-               foreach_delete_current(result, cell);
+               result = foreach_delete_current(result, cell);
            else
                prev = lfirst(cell);
        }