mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-12-23 11:12:51 +00:00
add support for update statements that contain tuple assignments (#1317)
This commit is contained in:
parent
0330f9def5
commit
345e2098fb
7 changed files with 114 additions and 24 deletions
|
|
@ -9937,10 +9937,22 @@ impl<'a> Parser<'a> {
|
|||
|
||||
/// Parse a `var = expr` assignment, used in an UPDATE statement
|
||||
pub fn parse_assignment(&mut self) -> Result<Assignment, ParserError> {
|
||||
let id = self.parse_identifiers()?;
|
||||
let target = self.parse_assignment_target()?;
|
||||
self.expect_token(&Token::Eq)?;
|
||||
let value = self.parse_expr()?;
|
||||
Ok(Assignment { id, value })
|
||||
Ok(Assignment { target, value })
|
||||
}
|
||||
|
||||
/// Parse the left-hand side of an assignment, used in an UPDATE statement
|
||||
pub fn parse_assignment_target(&mut self) -> Result<AssignmentTarget, ParserError> {
|
||||
if self.consume_token(&Token::LParen) {
|
||||
let columns = self.parse_comma_separated(|p| p.parse_object_name(false))?;
|
||||
self.expect_token(&Token::RParen)?;
|
||||
Ok(AssignmentTarget::Tuple(columns))
|
||||
} else {
|
||||
let column = self.parse_object_name(false)?;
|
||||
Ok(AssignmentTarget::ColumnName(column))
|
||||
}
|
||||
}
|
||||
|
||||
pub fn parse_function_args(&mut self) -> Result<FunctionArg, ParserError> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue