File tree 2 files changed +16
-1
lines changed
2 files changed +16
-1
lines changed Original file line number Diff line number Diff line change @@ -4250,7 +4250,7 @@ impl<'a> Parser<'a> {
4250
4250
pub fn parse_merge_clauses ( & mut self ) -> Result < Vec < MergeClause > , ParserError > {
4251
4251
let mut clauses: Vec < MergeClause > = vec ! [ ] ;
4252
4252
loop {
4253
- if self . peek_token ( ) == Token :: EOF {
4253
+ if self . peek_token ( ) == Token :: EOF || self . peek_token ( ) == Token :: SemiColon {
4254
4254
break ;
4255
4255
}
4256
4256
self . expect_keyword ( Keyword :: WHEN ) ?;
Original file line number Diff line number Diff line change @@ -4574,6 +4574,21 @@ fn test_merge_into_using_table() {
4574
4574
verified_stmt ( sql) ;
4575
4575
}
4576
4576
4577
+ #[ test]
4578
+ fn test_merge_with_delimiter ( ) {
4579
+ let sql = "MERGE INTO target_table USING source_table \
4580
+ ON target_table.id = source_table.oooid \
4581
+ WHEN MATCHED THEN \
4582
+ UPDATE SET target_table.description = source_table.description \
4583
+ WHEN NOT MATCHED THEN \
4584
+ INSERT (ID, description) VALUES (source_table.id, source_table.description);";
4585
+
4586
+ match parse_sql_statements ( sql) {
4587
+ Ok ( _) => { }
4588
+ _ => unreachable ! ( ) ,
4589
+ }
4590
+ }
4591
+
4577
4592
#[ test]
4578
4593
fn test_lock ( ) {
4579
4594
let sql = "SELECT * FROM student WHERE id = '1' FOR UPDATE" ;
You can’t perform that action at this time.
0 commit comments