mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-09-27 07:59:11 +00:00
MERGE INTO semicolon handling (#508)
* SGA-4181 MERGE INTO semicolon handling * fixed lint warning Co-authored-by: Maciej Skrzypkowski <maciej.skrzypkowski@satoricyber.com>
This commit is contained in:
parent
09bdb6bb8a
commit
cd66034a4a
2 changed files with 16 additions and 1 deletions
|
@ -4250,7 +4250,7 @@ impl<'a> Parser<'a> {
|
||||||
pub fn parse_merge_clauses(&mut self) -> Result<Vec<MergeClause>, ParserError> {
|
pub fn parse_merge_clauses(&mut self) -> Result<Vec<MergeClause>, ParserError> {
|
||||||
let mut clauses: Vec<MergeClause> = vec![];
|
let mut clauses: Vec<MergeClause> = vec![];
|
||||||
loop {
|
loop {
|
||||||
if self.peek_token() == Token::EOF {
|
if self.peek_token() == Token::EOF || self.peek_token() == Token::SemiColon {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
self.expect_keyword(Keyword::WHEN)?;
|
self.expect_keyword(Keyword::WHEN)?;
|
||||||
|
|
|
@ -4574,6 +4574,21 @@ fn test_merge_into_using_table() {
|
||||||
verified_stmt(sql);
|
verified_stmt(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_merge_with_delimiter() {
|
||||||
|
let sql = "MERGE INTO target_table USING source_table \
|
||||||
|
ON target_table.id = source_table.oooid \
|
||||||
|
WHEN MATCHED THEN \
|
||||||
|
UPDATE SET target_table.description = source_table.description \
|
||||||
|
WHEN NOT MATCHED THEN \
|
||||||
|
INSERT (ID, description) VALUES (source_table.id, source_table.description);";
|
||||||
|
|
||||||
|
match parse_sql_statements(sql) {
|
||||||
|
Ok(_) => {}
|
||||||
|
_ => unreachable!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_lock() {
|
fn test_lock() {
|
||||||
let sql = "SELECT * FROM student WHERE id = '1' FOR UPDATE";
|
let sql = "SELECT * FROM student WHERE id = '1' FOR UPDATE";
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue