File tree Expand file tree Collapse file tree 2 files changed +33
-0
lines changed Expand file tree Collapse file tree 2 files changed +33
-0
lines changed Original file line number Diff line number Diff line change @@ -1487,6 +1487,11 @@ impl<'a> Parser<'a> {
1487
1487
let result = self . parse_comma_separated ( |p| p. parse_tuple ( true , true ) ) ?;
1488
1488
self . expect_token ( & Token :: RParen ) ?;
1489
1489
Ok ( Expr :: Rollup ( result) )
1490
+ } else if self . consume_tokens ( & [ Token :: LParen , Token :: RParen ] ) {
1491
+ // PostgreSQL allow to use empty tuple as a group by expression,
1492
+ // e.g. `GROUP BY (), name`. Please refer to GROUP BY Clause section in
1493
+ // [PostgreSQL](https://www.postgresql.org/docs/16/sql-select.html)
1494
+ Ok ( Expr :: Tuple ( vec ! [ ] ) )
1490
1495
} else {
1491
1496
self . parse_expr ( )
1492
1497
}
Original file line number Diff line number Diff line change @@ -42,6 +42,7 @@ mod test_utils;
42
42
43
43
#[ cfg( test) ]
44
44
use pretty_assertions:: assert_eq;
45
+ use sqlparser:: ast:: Expr :: Identifier ;
45
46
use sqlparser:: test_utils:: all_dialects_except;
46
47
47
48
#[ test]
@@ -10278,3 +10279,30 @@ fn parse_auto_increment_too_large() {
10278
10279
10279
10280
assert ! ( res. is_err( ) , "{res:?}" ) ;
10280
10281
}
10282
+
10283
+ #[ test]
10284
+ fn test_group_by_nothing ( ) {
10285
+ let Select { group_by, .. } = all_dialects_where ( |d| d. supports_group_by_expr ( ) )
10286
+ . verified_only_select ( "SELECT count(1) FROM t GROUP BY ()" ) ;
10287
+ {
10288
+ std:: assert_eq!(
10289
+ GroupByExpr :: Expressions ( vec![ Expr :: Tuple ( vec![ ] ) ] , vec![ ] ) ,
10290
+ group_by
10291
+ ) ;
10292
+ }
10293
+
10294
+ let Select { group_by, .. } = all_dialects_where ( |d| d. supports_group_by_expr ( ) )
10295
+ . verified_only_select ( "SELECT name, count(1) FROM t GROUP BY name, ()" ) ;
10296
+ {
10297
+ std:: assert_eq!(
10298
+ GroupByExpr :: Expressions (
10299
+ vec![
10300
+ Identifier ( Ident :: new( "name" . to_string( ) ) ) ,
10301
+ Expr :: Tuple ( vec![ ] )
10302
+ ] ,
10303
+ vec![ ]
10304
+ ) ,
10305
+ group_by
10306
+ ) ;
10307
+ }
10308
+ }
You can’t perform that action at this time.
0 commit comments