diff --git a/src/parser/mod.rs b/src/parser/mod.rs index 6282ed3d7..8497dc2ec 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -2592,7 +2592,7 @@ impl<'a> Parser<'a> { if self.dialect.supports_group_by_expr() { if self.parse_keywords(&[Keyword::GROUPING, Keyword::SETS]) { self.expect_token(&Token::LParen)?; - let result = self.parse_comma_separated(|p| p.parse_tuple(false, true))?; + let result = self.parse_comma_separated(|p| p.parse_tuple(true, true))?; self.expect_token(&Token::RParen)?; Ok(Expr::GroupingSets(result)) } else if self.parse_keyword(Keyword::CUBE) { diff --git a/tests/sqlparser_common.rs b/tests/sqlparser_common.rs index 17f368bbb..5c46f3cf2 100644 --- a/tests/sqlparser_common.rs +++ b/tests/sqlparser_common.rs @@ -13109,6 +13109,19 @@ fn test_group_by_grouping_sets() { ); } +#[test] +fn test_group_by_grouping_sets_bare_columns() { + all_dialects_where(|d| d.supports_group_by_expr()).one_statement_parses_to( + "SELECT a, b FROM t GROUP BY GROUPING SETS (a, b, c)", + "SELECT a, b FROM t GROUP BY GROUPING SETS ((a), (b), (c))", + ); + + all_dialects_where(|d| d.supports_group_by_expr()).one_statement_parses_to( + "SELECT a, b FROM t GROUP BY GROUPING SETS ((a, b), c)", + "SELECT a, b FROM t GROUP BY GROUPING SETS ((a, b), (c))", + ); +} + #[test] fn test_xmltable() { all_dialects()