From 1d581ce7129d7a33cd4ad27f8f246abfa1fd2db9 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 18 Mar 2021 19:24:22 -0400 Subject: [PATCH] Fix misuse of foreach_delete_current(). 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 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/parser/parse_agg.c b/src/backend/parser/parse_agg.c index 899327aaf4..1a745b742e 100644 --- a/src/backend/parser/parse_agg.c +++ b/src/backend/parser/parse_agg.c @@ -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); }