@@ -239,16 +239,14 @@ impl Parser {
239
239
240
240
pub fn parse_function ( & mut self , id : SQLIdent ) -> Result < ASTNode , ParserError > {
241
241
self . expect_token ( & Token :: LParen ) ?;
242
- if self . consume_token ( & Token :: RParen ) {
243
- Ok ( ASTNode :: SQLFunction {
244
- id : id,
245
- args : vec ! [ ] ,
246
- } )
242
+ let args = if self . consume_token ( & Token :: RParen ) {
243
+ vec ! [ ]
247
244
} else {
248
245
let args = self . parse_expr_list ( ) ?;
249
246
self . expect_token ( & Token :: RParen ) ?;
250
- Ok ( ASTNode :: SQLFunction { id, args } )
251
- }
247
+ args
248
+ } ;
249
+ Ok ( ASTNode :: SQLFunction { id, args } )
252
250
}
253
251
254
252
pub fn parse_case_expression ( & mut self ) -> Result < ASTNode , ParserError > {
@@ -328,7 +326,7 @@ impl Parser {
328
326
} )
329
327
} else {
330
328
parser_err ! ( format!(
331
- "Expected IN or LIKE after NOT, found {:?}" ,
329
+ "Expected BETWEEN, IN or LIKE after NOT, found {:?}" ,
332
330
self . peek_token( )
333
331
) )
334
332
}
@@ -1354,6 +1352,7 @@ impl Parser {
1354
1352
/// Parse a restricted `SELECT` statement (no CTEs / `UNION` / `ORDER BY`),
1355
1353
/// assuming the initial `SELECT` was already consumed
1356
1354
pub fn parse_select ( & mut self ) -> Result < SQLSelect , ParserError > {
1355
+ let distinct = self . parse_keyword ( "DISTINCT" ) ;
1357
1356
let projection = self . parse_select_list ( ) ?;
1358
1357
1359
1358
let ( relation, joins) = if self . parse_keyword ( "FROM" ) {
@@ -1383,6 +1382,7 @@ impl Parser {
1383
1382
} ;
1384
1383
1385
1384
Ok ( SQLSelect {
1385
+ distinct,
1386
1386
projection,
1387
1387
selection,
1388
1388
relation,
0 commit comments