@@ -10006,6 +10006,45 @@ fn parse_merge() {
1000610006
1000710007 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)";
1000810008 verified_stmt(sql);
10009+
10010+ // MERGE with predicates
10011+ let sql = "\
10012+ MERGE INTO FOO \
10013+ USING FOO_IMPORT \
10014+ ON (FOO.ID = FOO_IMPORT.ID) \
10015+ WHEN MATCHED THEN \
10016+ UPDATE SET FOO.NAME = FOO_IMPORT.NAME \
10017+ WHERE 1 = 1 \
10018+ DELETE WHERE FOO.NAME LIKE '%.DELETE' \
10019+ WHEN NOT MATCHED THEN \
10020+ INSERT (ID, NAME) \
10021+ VALUES (FOO_IMPORT.ID, UPPER(FOO_IMPORT.NAME)) \
10022+ WHERE NOT FOO_IMPORT.NAME LIKE '%.DO_NOT_INSERT'";
10023+ all_dialects().verified_stmt(sql);
10024+
10025+ // MERGE with simple insert columns
10026+ let sql = "\
10027+ MERGE INTO FOO USING FOO_IMPORT ON (FOO.ID = FOO_IMPORT.ID) \
10028+ WHEN NOT MATCHED THEN \
10029+ INSERT (ID, NAME) \
10030+ VALUES (1, 'abc')";
10031+ all_dialects().verified_stmt(sql);
10032+
10033+ // MERGE with qualified insert columns
10034+ let sql = "\
10035+ MERGE INTO FOO USING FOO_IMPORT ON (FOO.ID = FOO_IMPORT.ID) \
10036+ WHEN NOT MATCHED THEN \
10037+ INSERT (FOO.ID, FOO.NAME) \
10038+ VALUES (1, 'abc')";
10039+ all_dialects().verified_stmt(sql);
10040+
10041+ // MERGE with schema qualified insert columns
10042+ let sql = "\
10043+ MERGE INTO PLAYGROUND.FOO USING FOO_IMPORT ON (PLAYGROUND.FOO.ID = FOO_IMPORT.ID) \
10044+ WHEN NOT MATCHED THEN \
10045+ INSERT (PLAYGROUND.FOO.ID, PLAYGROUND.FOO.NAME) \
10046+ VALUES (1, 'abc')";
10047+ all_dialects().verified_stmt(sql);
1000910048}
1001010049
1001110050#[test]
@@ -10079,53 +10118,6 @@ fn test_merge_with_delimiter() {
1007910118 }
1008010119}
1008110120
10082- #[test]
10083- fn test_merge_with_predicates() {
10084- let sql = "\
10085- MERGE INTO FOO \
10086- USING FOO_IMPORT \
10087- ON (FOO.ID = FOO_IMPORT.ID) \
10088- WHEN MATCHED THEN \
10089- UPDATE SET FOO.NAME = FOO_IMPORT.NAME \
10090- WHERE 1 = 1 \
10091- DELETE WHERE FOO.NAME LIKE '%.DELETE' \
10092- WHEN NOT MATCHED THEN \
10093- INSERT (ID, NAME) \
10094- VALUES (FOO_IMPORT.ID, UPPER(FOO_IMPORT.NAME)) \
10095- WHERE NOT FOO_IMPORT.NAME LIKE '%.DO_NOT_INSERT'";
10096- all_dialects().verified_stmt(sql);
10097- }
10098-
10099- #[test]
10100- fn test_merge_with_insert_simple_columns() {
10101- let sql = "\
10102- MERGE INTO FOO USING FOO_IMPORT ON (FOO.ID = FOO_IMPORT.ID) \
10103- WHEN NOT MATCHED THEN \
10104- INSERT (ID, NAME) \
10105- VALUES (1, 'abc')";
10106- all_dialects().verified_stmt(sql);
10107- }
10108-
10109- #[test]
10110- fn test_merge_with_insert_qualified_columns() {
10111- let sql = "\
10112- MERGE INTO FOO USING FOO_IMPORT ON (FOO.ID = FOO_IMPORT.ID) \
10113- WHEN NOT MATCHED THEN \
10114- INSERT (FOO.ID, FOO.NAME) \
10115- VALUES (1, 'abc')";
10116- all_dialects().verified_stmt(sql);
10117- }
10118-
10119- #[test]
10120- fn test_merge_with_insert_qualified_columns_with_schema() {
10121- let sql = "\
10122- MERGE INTO PLAYGROUND.FOO USING FOO_IMPORT ON (PLAYGROUND.FOO.ID = FOO_IMPORT.ID) \
10123- WHEN NOT MATCHED THEN \
10124- INSERT (PLAYGROUND.FOO.ID, PLAYGROUND.FOO.NAME) \
10125- VALUES (1, 'abc')";
10126- all_dialects().verified_stmt(sql);
10127- }
10128-
1012910121#[test]
1013010122fn test_merge_invalid_statements() {
1013110123 let dialects = all_dialects();
0 commit comments