From b928222db6f9573d558bfafd3b02e04921c46a78 Mon Sep 17 00:00:00 2001 From: Jefffrey <22608443+Jefffrey@users.noreply.github.com> Date: Sun, 25 Dec 2022 20:37:13 +1100 Subject: [PATCH] Enable grouping sets parsing for GenericDialect --- 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 528b8c6fe..15c29987a 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -763,7 +763,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 e5ed0bb80..7292beb4e 100644 --- a/tests/sqlparser_common.rs +++ b/tests/sqlparser_common.rs @@ -1462,7 +1462,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), ())"; @@ -1483,7 +1483,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); @@ -1502,7 +1502,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);