mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-12-23 11:12:51 +00:00
Merge test code
This commit is contained in:
parent
0dd12b194d
commit
75be7d5145
1 changed files with 39 additions and 47 deletions
|
|
@ -10006,6 +10006,45 @@ fn parse_merge() {
|
|||
|
||||
let sql = "MERGE INTO s.bar AS dest USING newArrivals AS S ON (1 > 1) WHEN NOT MATCHED THEN INSERT VALUES (stg.A, stg.B, stg.C)";
|
||||
verified_stmt(sql);
|
||||
|
||||
// MERGE with predicates
|
||||
let sql = "\
|
||||
MERGE INTO FOO \
|
||||
USING FOO_IMPORT \
|
||||
ON (FOO.ID = FOO_IMPORT.ID) \
|
||||
WHEN MATCHED THEN \
|
||||
UPDATE SET FOO.NAME = FOO_IMPORT.NAME \
|
||||
WHERE 1 = 1 \
|
||||
DELETE WHERE FOO.NAME LIKE '%.DELETE' \
|
||||
WHEN NOT MATCHED THEN \
|
||||
INSERT (ID, NAME) \
|
||||
VALUES (FOO_IMPORT.ID, UPPER(FOO_IMPORT.NAME)) \
|
||||
WHERE NOT FOO_IMPORT.NAME LIKE '%.DO_NOT_INSERT'";
|
||||
all_dialects().verified_stmt(sql);
|
||||
|
||||
// MERGE with simple insert columns
|
||||
let sql = "\
|
||||
MERGE INTO FOO USING FOO_IMPORT ON (FOO.ID = FOO_IMPORT.ID) \
|
||||
WHEN NOT MATCHED THEN \
|
||||
INSERT (ID, NAME) \
|
||||
VALUES (1, 'abc')";
|
||||
all_dialects().verified_stmt(sql);
|
||||
|
||||
// MERGE with qualified insert columns
|
||||
let sql = "\
|
||||
MERGE INTO FOO USING FOO_IMPORT ON (FOO.ID = FOO_IMPORT.ID) \
|
||||
WHEN NOT MATCHED THEN \
|
||||
INSERT (FOO.ID, FOO.NAME) \
|
||||
VALUES (1, 'abc')";
|
||||
all_dialects().verified_stmt(sql);
|
||||
|
||||
// MERGE with schema qualified insert columns
|
||||
let sql = "\
|
||||
MERGE INTO PLAYGROUND.FOO USING FOO_IMPORT ON (PLAYGROUND.FOO.ID = FOO_IMPORT.ID) \
|
||||
WHEN NOT MATCHED THEN \
|
||||
INSERT (PLAYGROUND.FOO.ID, PLAYGROUND.FOO.NAME) \
|
||||
VALUES (1, 'abc')";
|
||||
all_dialects().verified_stmt(sql);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -10079,53 +10118,6 @@ fn test_merge_with_delimiter() {
|
|||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_merge_with_predicates() {
|
||||
let sql = "\
|
||||
MERGE INTO FOO \
|
||||
USING FOO_IMPORT \
|
||||
ON (FOO.ID = FOO_IMPORT.ID) \
|
||||
WHEN MATCHED THEN \
|
||||
UPDATE SET FOO.NAME = FOO_IMPORT.NAME \
|
||||
WHERE 1 = 1 \
|
||||
DELETE WHERE FOO.NAME LIKE '%.DELETE' \
|
||||
WHEN NOT MATCHED THEN \
|
||||
INSERT (ID, NAME) \
|
||||
VALUES (FOO_IMPORT.ID, UPPER(FOO_IMPORT.NAME)) \
|
||||
WHERE NOT FOO_IMPORT.NAME LIKE '%.DO_NOT_INSERT'";
|
||||
all_dialects().verified_stmt(sql);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_merge_with_insert_simple_columns() {
|
||||
let sql = "\
|
||||
MERGE INTO FOO USING FOO_IMPORT ON (FOO.ID = FOO_IMPORT.ID) \
|
||||
WHEN NOT MATCHED THEN \
|
||||
INSERT (ID, NAME) \
|
||||
VALUES (1, 'abc')";
|
||||
all_dialects().verified_stmt(sql);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_merge_with_insert_qualified_columns() {
|
||||
let sql = "\
|
||||
MERGE INTO FOO USING FOO_IMPORT ON (FOO.ID = FOO_IMPORT.ID) \
|
||||
WHEN NOT MATCHED THEN \
|
||||
INSERT (FOO.ID, FOO.NAME) \
|
||||
VALUES (1, 'abc')";
|
||||
all_dialects().verified_stmt(sql);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_merge_with_insert_qualified_columns_with_schema() {
|
||||
let sql = "\
|
||||
MERGE INTO PLAYGROUND.FOO USING FOO_IMPORT ON (PLAYGROUND.FOO.ID = FOO_IMPORT.ID) \
|
||||
WHEN NOT MATCHED THEN \
|
||||
INSERT (PLAYGROUND.FOO.ID, PLAYGROUND.FOO.NAME) \
|
||||
VALUES (1, 'abc')";
|
||||
all_dialects().verified_stmt(sql);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_merge_invalid_statements() {
|
||||
let dialects = all_dialects();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue