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 @@ -1491,6 +1491,11 @@ impl<'a> Parser<'a> {
1491
1491
let result = self . parse_comma_separated ( |p| p. parse_tuple ( true , true ) ) ?;
1492
1492
self . expect_token ( & Token :: RParen ) ?;
1493
1493
Ok ( Expr :: Rollup ( result) )
1494
+ } else if self . consume_tokens ( & [ Token :: LParen , Token :: RParen ] ) {
1495
+ // PostgreSQL allow to use empty tuple as a group by expression,
1496
+ // e.g. `GROUP BY (), name`. Please refer to GROUP BY Clause section in
1497
+ // [PostgreSQL](https://www.postgresql.org/docs/16/sql-select.html)
1498
+ Ok ( Expr :: Tuple ( vec ! [ ] ) )
1494
1499
} else {
1495
1500
self . parse_expr ( )
1496
1501
}
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]
@@ -10280,3 +10281,30 @@ fn parse_auto_increment_too_large() {
10280
10281
10281
10282
assert ! ( res. is_err( ) , "{res:?}" ) ;
10282
10283
}
10284
+
10285
+ #[ test]
10286
+ fn test_group_by_nothing ( ) {
10287
+ let Select { group_by, .. } = all_dialects_where ( |d| d. supports_group_by_expr ( ) )
10288
+ . verified_only_select ( "SELECT count(1) FROM t GROUP BY ()" ) ;
10289
+ {
10290
+ std:: assert_eq!(
10291
+ GroupByExpr :: Expressions ( vec![ Expr :: Tuple ( vec![ ] ) ] , vec![ ] ) ,
10292
+ group_by
10293
+ ) ;
10294
+ }
10295
+
10296
+ let Select { group_by, .. } = all_dialects_where ( |d| d. supports_group_by_expr ( ) )
10297
+ . verified_only_select ( "SELECT name, count(1) FROM t GROUP BY name, ()" ) ;
10298
+ {
10299
+ std:: assert_eq!(
10300
+ GroupByExpr :: Expressions (
10301
+ vec![
10302
+ Identifier ( Ident :: new( "name" . to_string( ) ) ) ,
10303
+ Expr :: Tuple ( vec![ ] )
10304
+ ] ,
10305
+ vec![ ]
10306
+ ) ,
10307
+ group_by
10308
+ ) ;
10309
+ }
10310
+ }
You can’t perform that action at this time.
0 commit comments