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);