mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-12-23 11:12:51 +00:00
Add support for RAISE statement (#1766)
This commit is contained in:
parent
da5892802f
commit
e3e88290cd
5 changed files with 124 additions and 5 deletions
|
|
@ -536,6 +536,10 @@ impl<'a> Parser<'a> {
|
|||
self.prev_token();
|
||||
self.parse_if_stmt()
|
||||
}
|
||||
Keyword::RAISE => {
|
||||
self.prev_token();
|
||||
self.parse_raise_stmt()
|
||||
}
|
||||
Keyword::SELECT | Keyword::WITH | Keyword::VALUES | Keyword::FROM => {
|
||||
self.prev_token();
|
||||
self.parse_query().map(Statement::Query)
|
||||
|
|
@ -719,6 +723,22 @@ impl<'a> Parser<'a> {
|
|||
})
|
||||
}
|
||||
|
||||
/// Parse a `RAISE` statement.
|
||||
///
|
||||
/// See [Statement::Raise]
|
||||
pub fn parse_raise_stmt(&mut self) -> Result<Statement, ParserError> {
|
||||
self.expect_keyword_is(Keyword::RAISE)?;
|
||||
|
||||
let value = if self.parse_keywords(&[Keyword::USING, Keyword::MESSAGE]) {
|
||||
self.expect_token(&Token::Eq)?;
|
||||
Some(RaiseStatementValue::UsingMessage(self.parse_expr()?))
|
||||
} else {
|
||||
self.maybe_parse(|parser| parser.parse_expr().map(RaiseStatementValue::Expr))?
|
||||
};
|
||||
|
||||
Ok(Statement::Raise(RaiseStatement { value }))
|
||||
}
|
||||
|
||||
pub fn parse_comment(&mut self) -> Result<Statement, ParserError> {
|
||||
let if_exists = self.parse_keywords(&[Keyword::IF, Keyword::EXISTS]);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue