diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c
index e90e1d6..708ebc9 100644
--- a/src/backend/parser/parse_clause.c
+++ b/src/backend/parser/parse_clause.c
@@ -1804,8 +1804,10 @@ flatten_grouping_sets(Node *expr, bool toplevel, bool *hasGroupingSets)
 				foreach(l2, gset->content)
 				{
 					Node	   *n2 = flatten_grouping_sets(lfirst(l2), false, NULL);
-
-					result_set = lappend(result_set, n2);
+					if (IsA(n2, List))
+						result_set = list_concat(result_set, (List *)n2);
+					else
+						result_set = lappend(result_set, n2);
 				}
 
 				/*
