[Background] Currently, Carbondata do not have SQL command to support upsert
[Movitation] Since we already have merge into dataset API, we can develop a MERGE INTO SQL API. Since the merge into command is a litter bit complex, it may need to develop a SQL parser with ANTLR to parse the SQL. MERGEINTO SQL COMMAND MERGE INTO [db_name.]target_table [AS target_alias] USING [db_name.]source_table [AS source_alias] ON <merge_condition> [ WHEN MATCHED [ AND <condition> ] THEN <matched_action> ] [ WHEN MATCHED [ AND <condition> ] THEN <matched_action> ] [ WHEN NOT MATCHED [ AND <condition> ] THEN <not_matched_action> ] MERGE INTO TAREGT USING SOURCE ON SOURCE.ID=TARGET.ID WHEN MATCHED THEN UPDATE SET TARGET.NAME = SOURCE.NAME WHEN NOT MATCHED THEN INSERT (TARGER.ID, TARGET.NAME, TARGET,AGE) VALUES ( SOURCE.ID, SOURCE.NAME, SOURCE.AGE) TARGET TABLE ID Name Age 1 Jan 23 2 KK 22 3 Joe 27 SOURCE TABLE ID Name Age 2 Steve 22 4 Mike 24 AFTER MERGE INTO COMMAND TARGET TABLE ID Name Age 1 Jan 23 2 Steve 22 3 Joe 27 4 Mike 24 In the first version of implement, MERGE INTO SQL command in Carbondata will support basic table merge condition. And it will support up to 2 MATCHED clause, and 1 NOT MATCHED clause. In the send version, it can support the Carbondata feature, such as segment, time travel version etc. CarbonDataMergeIntoSQl.docx <http://apache-carbondata-dev-mailing-list-archive.1130556.n5.nabble.com/file/t492/CarbonDataMergeIntoSQl.docx> -- Sent from: http://apache-carbondata-dev-mailing-list-archive.1130556.n5.nabble.com/
