mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-12-23 11:12:51 +00:00
Oracle: Support for MERGE predicates (#2101)
Some checks failed
license / Release Audit Tool (RAT) (push) Has been cancelled
Rust / lint (push) Has been cancelled
Rust / benchmark-lint (push) Has been cancelled
Rust / codestyle (push) Has been cancelled
Rust / compile (push) Has been cancelled
Rust / docs (push) Has been cancelled
Rust / compile-no-std (push) Has been cancelled
Rust / test (beta) (push) Has been cancelled
Rust / test (nightly) (push) Has been cancelled
Rust / test (stable) (push) Has been cancelled
Some checks failed
license / Release Audit Tool (RAT) (push) Has been cancelled
Rust / lint (push) Has been cancelled
Rust / benchmark-lint (push) Has been cancelled
Rust / codestyle (push) Has been cancelled
Rust / compile (push) Has been cancelled
Rust / docs (push) Has been cancelled
Rust / compile-no-std (push) Has been cancelled
Rust / test (beta) (push) Has been cancelled
Rust / test (nightly) (push) Has been cancelled
Rust / test (stable) (push) Has been cancelled
Co-authored-by: Ifeanyi Ubah <ify1992@yahoo.com>
This commit is contained in:
parent
326f111808
commit
ca2d333dff
8 changed files with 759 additions and 534 deletions
|
|
@ -1806,15 +1806,16 @@ fn parse_merge() {
|
|||
);
|
||||
let insert_action = MergeAction::Insert(MergeInsertExpr {
|
||||
insert_token: AttachedToken::empty(),
|
||||
columns: vec![Ident::new("product"), Ident::new("quantity")],
|
||||
columns: vec![Ident::new("product").into(), Ident::new("quantity").into()],
|
||||
kind_token: AttachedToken::empty(),
|
||||
kind: MergeInsertKind::Values(Values {
|
||||
value_keyword: false,
|
||||
explicit_row: false,
|
||||
rows: vec![vec![Expr::value(number("1")), Expr::value(number("2"))]],
|
||||
}),
|
||||
insert_predicate: None,
|
||||
});
|
||||
let update_action = MergeAction::Update {
|
||||
let update_action = MergeAction::Update(MergeUpdateExpr {
|
||||
update_token: AttachedToken::empty(),
|
||||
assignments: vec![
|
||||
Assignment {
|
||||
|
|
@ -1826,17 +1827,19 @@ fn parse_merge() {
|
|||
value: Expr::value(number("2")),
|
||||
},
|
||||
],
|
||||
};
|
||||
update_predicate: None,
|
||||
delete_predicate: None,
|
||||
});
|
||||
|
||||
match bigquery_and_generic().verified_stmt(sql) {
|
||||
Statement::Merge {
|
||||
Statement::Merge(Merge {
|
||||
into,
|
||||
table,
|
||||
source,
|
||||
on,
|
||||
clauses,
|
||||
..
|
||||
} => {
|
||||
}) => {
|
||||
assert!(!into);
|
||||
assert_eq!(
|
||||
TableFactor::Table {
|
||||
|
|
@ -1917,9 +1920,13 @@ fn parse_merge() {
|
|||
predicate: Some(Expr::value(number("1"))),
|
||||
action: MergeAction::Insert(MergeInsertExpr {
|
||||
insert_token: AttachedToken::empty(),
|
||||
columns: vec![Ident::new("product"), Ident::new("quantity"),],
|
||||
columns: vec![
|
||||
Ident::new("product").into(),
|
||||
Ident::new("quantity").into(),
|
||||
],
|
||||
kind_token: AttachedToken::empty(),
|
||||
kind: MergeInsertKind::Row,
|
||||
insert_predicate: None,
|
||||
})
|
||||
},
|
||||
MergeClause {
|
||||
|
|
@ -1928,9 +1935,13 @@ fn parse_merge() {
|
|||
predicate: None,
|
||||
action: MergeAction::Insert(MergeInsertExpr {
|
||||
insert_token: AttachedToken::empty(),
|
||||
columns: vec![Ident::new("product"), Ident::new("quantity"),],
|
||||
columns: vec![
|
||||
Ident::new("product").into(),
|
||||
Ident::new("quantity").into(),
|
||||
],
|
||||
kind_token: AttachedToken::empty(),
|
||||
kind: MergeInsertKind::Row,
|
||||
insert_predicate: None,
|
||||
})
|
||||
},
|
||||
MergeClause {
|
||||
|
|
@ -1941,7 +1952,8 @@ fn parse_merge() {
|
|||
insert_token: AttachedToken::empty(),
|
||||
columns: vec![],
|
||||
kind_token: AttachedToken::empty(),
|
||||
kind: MergeInsertKind::Row
|
||||
kind: MergeInsertKind::Row,
|
||||
insert_predicate: None,
|
||||
})
|
||||
},
|
||||
MergeClause {
|
||||
|
|
@ -1952,7 +1964,8 @@ fn parse_merge() {
|
|||
insert_token: AttachedToken::empty(),
|
||||
columns: vec![],
|
||||
kind_token: AttachedToken::empty(),
|
||||
kind: MergeInsertKind::Row
|
||||
kind: MergeInsertKind::Row,
|
||||
insert_predicate: None,
|
||||
})
|
||||
},
|
||||
MergeClause {
|
||||
|
|
@ -1975,7 +1988,7 @@ fn parse_merge() {
|
|||
predicate: None,
|
||||
action: MergeAction::Insert(MergeInsertExpr {
|
||||
insert_token: AttachedToken::empty(),
|
||||
columns: vec![Ident::new("a"), Ident::new("b"),],
|
||||
columns: vec![Ident::new("a").into(), Ident::new("b").into(),],
|
||||
kind_token: AttachedToken::empty(),
|
||||
kind: MergeInsertKind::Values(Values {
|
||||
value_keyword: false,
|
||||
|
|
@ -1984,7 +1997,8 @@ fn parse_merge() {
|
|||
Expr::value(number("1")),
|
||||
Expr::Identifier(Ident::new("DEFAULT")),
|
||||
]]
|
||||
})
|
||||
}),
|
||||
insert_predicate: None,
|
||||
})
|
||||
},
|
||||
MergeClause {
|
||||
|
|
@ -2002,7 +2016,8 @@ fn parse_merge() {
|
|||
Expr::value(number("1")),
|
||||
Expr::Identifier(Ident::new("DEFAULT")),
|
||||
]]
|
||||
})
|
||||
}),
|
||||
insert_predicate: None,
|
||||
})
|
||||
},
|
||||
],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue