From 6726038bc445f922a679ebd880d17855e233982f Mon Sep 17 00:00:00 2001 From: JackTan25 Date: Tue, 10 Oct 2023 13:53:05 +0800 Subject: [PATCH] fix name with ` --- .../sql/src/planner/binder/merge_into.rs | 2 +- .../processor_merge_into_matched_and_split.rs | 11 +++---- .../base/09_fuse_engine/09_0026_merge_into | 30 +++++++++++++++++++ 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/query/sql/src/planner/binder/merge_into.rs b/src/query/sql/src/planner/binder/merge_into.rs index b198a9b8648c..52396b3bafc5 100644 --- a/src/query/sql/src/planner/binder/merge_into.rs +++ b/src/query/sql/src/planner/binder/merge_into.rs @@ -144,7 +144,7 @@ impl Binder { let mut name_map = HashMap::>::new(); for column in source_output_columns { name_map - .entry(column.column_name.clone()) + .entry(column.column_name.trim_matches("`").to_string()) .or_insert_with(|| vec![]) .push(column.index); } diff --git a/src/query/storages/fuse/src/operations/merge_into/processors/processor_merge_into_matched_and_split.rs b/src/query/storages/fuse/src/operations/merge_into/processors/processor_merge_into_matched_and_split.rs index 1bbdc2b8f1a7..79e0a7dead5b 100644 --- a/src/query/storages/fuse/src/operations/merge_into/processors/processor_merge_into_matched_and_split.rs +++ b/src/query/storages/fuse/src/operations/merge_into/processors/processor_merge_into_matched_and_split.rs @@ -248,12 +248,13 @@ impl Processor for MatchedSplitProcessor { .delete_mutator .delete_by_expr(current_block)?; + // delete all + if !row_ids.is_empty() { + row_ids = row_ids.add_meta(Some(Box::new(RowIdKind::Delete)))?; + self.output_data_row_id_data.push(row_ids); + } + if stage_block.is_empty() { - // delete all - if !row_ids.is_empty() { - row_ids = row_ids.add_meta(Some(Box::new(RowIdKind::Delete)))?; - self.output_data_row_id_data.push(row_ids); - } return Ok(()); } current_block = stage_block; diff --git a/tests/sqllogictests/suites/base/09_fuse_engine/09_0026_merge_into b/tests/sqllogictests/suites/base/09_fuse_engine/09_0026_merge_into index b1b493db22a7..4325a260d275 100644 --- a/tests/sqllogictests/suites/base/09_fuse_engine/09_0026_merge_into +++ b/tests/sqllogictests/suites/base/09_fuse_engine/09_0026_merge_into @@ -507,5 +507,35 @@ select * from cluster_target; 3 a 3 12 b 1 +## add more tests +statement ok +create table target_test(a int,b string); + +statement ok +insert into target_test values(1,'a'),(2,'b'),(3,'c'); + +statement ok +create table source_test(a int,b string,is_databend_deleted bool); + +statement ok +insert into source_test values(1,'d',true),(2,'e',true),(3,'f',false),(4,'e',true),(5,'f',false); + +statement ok +create stage source_parquet file_format = (type = parquet); + +statement ok +copy into @source_parquet from (select * from source_test); + +statement ok +merge into `target_test` as tt using (select `a`,`b`,`is_databend_deleted` from @source_parquet (pattern => '.*[.]parquet')) as ss on (ss.`a` = tt.`a`) +when matched and ss.`is_databend_deleted` = true then delete when matched then update * when not matched and ss.`is_databend_deleted` = false then insert *; + +query TT +select * from target_test order by a; +---- +3 f +5 f + statement ok set enable_experimental_merge_into = 0; +