Skip to content

Commit a7301ee

Browse files
committed
Support bare RETURN without expression & add common test
1 parent 9954416 commit a7301ee

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

src/parser/mod.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15130,10 +15130,16 @@ impl<'a> Parser<'a> {
1513015130

1513115131
/// Parse [Statement::Return]
1513215132
fn parse_return(&mut self) -> Result<Statement, ParserError> {
15133-
let expr = self.parse_expr()?;
15134-
Ok(Statement::Return(ReturnStatement {
15135-
value: Some(ReturnStatementValue::Expr(expr)),
15136-
}))
15133+
let current_index = self.index;
15134+
match self.parse_expr() {
15135+
Ok(expr) => Ok(Statement::Return(ReturnStatement {
15136+
value: Some(ReturnStatementValue::Expr(expr)),
15137+
})),
15138+
Err(_) => {
15139+
self.index = current_index;
15140+
Ok(Statement::Return(ReturnStatement { value: None }))
15141+
}
15142+
}
1513715143
}
1513815144

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

tests/sqlparser_common.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15015,3 +15015,8 @@ fn parse_set_time_zone_alias() {
1501515015
_ => unreachable!(),
1501615016
}
1501715017
}
15018+
15019+
#[test]
15020+
fn parse_return() {
15021+
all_dialects().verified_stmt("RETURN");
15022+
}

0 commit comments

Comments
 (0)