Skip to content

Commit 5cf3b23

Browse files
committed
Support bare RETURN without expression & add common test
1 parent 2699681 commit 5cf3b23

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

src/parser/mod.rs

+10-4
Original file line numberDiff line numberDiff line change
@@ -15129,10 +15129,16 @@ impl<'a> Parser<'a> {
1512915129
}
1513015130
/// Parse [Statement::Return]
1513115131
fn parse_return(&mut self) -> Result<Statement, ParserError> {
15132-
let expr = self.parse_expr()?;
15133-
Ok(Statement::Return(ReturnStatement {
15134-
value: Some(ReturnStatementValue::Expr(expr)),
15135-
}))
15132+
let current_index = self.index;
15133+
match self.parse_expr() {
15134+
Ok(expr) => Ok(Statement::Return(ReturnStatement {
15135+
value: Some(ReturnStatementValue::Expr(expr)),
15136+
})),
15137+
Err(_) => {
15138+
self.index = current_index;
15139+
Ok(Statement::Return(ReturnStatement { value: None }))
15140+
}
15141+
}
1513615142
}
1513715143

1513815144
/// Consume the parser and return its underlying token buffer

tests/sqlparser_common.rs

+5
Original file line numberDiff line numberDiff line change
@@ -15029,3 +15029,8 @@ fn parse_set_time_zone_alias() {
1502915029
_ => unreachable!(),
1503015030
}
1503115031
}
15032+
15033+
#[test]
15034+
fn parse_return() {
15035+
all_dialects().verified_stmt("RETURN");
15036+
}

0 commit comments

Comments
 (0)