From f0870fd315c945876336f27a91f6762904a93fd1 Mon Sep 17 00:00:00 2001 From: Jeffrey <22608443+Jefffrey@users.noreply.github.com> Date: Thu, 29 Dec 2022 00:31:39 +1100 Subject: [PATCH] Enable grouping sets parsing for GenericDialect (#771) --- src/parser.rs | 2 +- tests/sqlparser_common.rs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/parser.rs b/src/parser.rs index b4042666d..a400d5c2a 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -943,7 +943,7 @@ impl<'a> Parser<'a> { /// parse a group by expr. a group by expr can be one of group sets, roll up, cube, or simple /// expr. fn parse_group_by_expr(&mut self) -> Result { - if dialect_of!(self is PostgreSqlDialect) { + if dialect_of!(self is PostgreSqlDialect | GenericDialect) { 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))?; diff --git a/tests/sqlparser_common.rs b/tests/sqlparser_common.rs index f0dd91e7d..a815a9fd7 100644 --- a/tests/sqlparser_common.rs +++ b/tests/sqlparser_common.rs @@ -1513,7 +1513,7 @@ fn parse_select_group_by() { #[test] fn parse_select_group_by_grouping_sets() { let dialects = TestedDialects { - dialects: vec![Box::new(PostgreSqlDialect {})], + dialects: vec![Box::new(GenericDialect {}), Box::new(PostgreSqlDialect {})], }; let sql = "SELECT brand, size, sum(sales) FROM items_sold GROUP BY size, GROUPING SETS ((brand), (size), ())"; @@ -1534,7 +1534,7 @@ fn parse_select_group_by_grouping_sets() { #[test] fn parse_select_group_by_rollup() { let dialects = TestedDialects { - dialects: vec![Box::new(PostgreSqlDialect {})], + dialects: vec![Box::new(GenericDialect {}), Box::new(PostgreSqlDialect {})], }; let sql = "SELECT brand, size, sum(sales) FROM items_sold GROUP BY size, ROLLUP (brand, size)"; let select = dialects.verified_only_select(sql); @@ -1553,7 +1553,7 @@ fn parse_select_group_by_rollup() { #[test] fn parse_select_group_by_cube() { let dialects = TestedDialects { - dialects: vec![Box::new(PostgreSqlDialect {})], + dialects: vec![Box::new(GenericDialect {}), Box::new(PostgreSqlDialect {})], }; let sql = "SELECT brand, size, sum(sales) FROM items_sold GROUP BY size, CUBE (brand, size)"; let select = dialects.verified_only_select(sql);