From 7549470f50f1bf560809d82b582254a2f9527dc0 Mon Sep 17 00:00:00 2001 From: Kaijie Chen Date: Wed, 17 Jul 2024 19:29:56 +0800 Subject: [PATCH 1/3] [fix](load) fix memtable agg functions --- be/src/olap/memtable.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/be/src/olap/memtable.cpp b/be/src/olap/memtable.cpp index 74bd49a2bc4ef1..6b933e09c0b549 100644 --- a/be/src/olap/memtable.cpp +++ b/be/src/olap/memtable.cpp @@ -187,7 +187,7 @@ Status MemTable::insert(const vectorized::Block* input_block, _vec_row_comparator->set_block(&_input_mutable_block); _output_mutable_block = vectorized::MutableBlock::build_mutable_block(&cloneBlock); if (_keys_type != KeysType::DUP_KEYS) { - _init_agg_functions(input_block); + _init_agg_functions(&cloneBlock); } if (_tablet_schema->has_sequence_col()) { if (_is_partial_update) { From 69c7c0b8aacf6272d861f19c5ff5429cc060781e Mon Sep 17 00:00:00 2001 From: Kaijie Chen Date: Wed, 17 Jul 2024 20:11:26 +0800 Subject: [PATCH 2/3] comments --- be/src/olap/memtable.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/be/src/olap/memtable.cpp b/be/src/olap/memtable.cpp index 6b933e09c0b549..4cc67580f8af72 100644 --- a/be/src/olap/memtable.cpp +++ b/be/src/olap/memtable.cpp @@ -187,6 +187,8 @@ Status MemTable::insert(const vectorized::Block* input_block, _vec_row_comparator->set_block(&_input_mutable_block); _output_mutable_block = vectorized::MutableBlock::build_mutable_block(&cloneBlock); if (_keys_type != KeysType::DUP_KEYS) { + // there may be additional intermediate columns in input_block + // we only need columns indicated by column offset in the output _init_agg_functions(&cloneBlock); } if (_tablet_schema->has_sequence_col()) { From 22f7becb128ee697da3910bb1308d886e3c60015 Mon Sep 17 00:00:00 2001 From: Kaijie Chen Date: Wed, 17 Jul 2024 20:25:56 +0800 Subject: [PATCH 3/3] rename var --- be/src/olap/memtable.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/be/src/olap/memtable.cpp b/be/src/olap/memtable.cpp index 4cc67580f8af72..207778becae4d6 100644 --- a/be/src/olap/memtable.cpp +++ b/be/src/olap/memtable.cpp @@ -182,21 +182,21 @@ Status MemTable::insert(const vectorized::Block* input_block, const std::vector& row_idxs) { if (_is_first_insertion) { _is_first_insertion = false; - auto cloneBlock = input_block->clone_without_columns(&_column_offset); - _input_mutable_block = vectorized::MutableBlock::build_mutable_block(&cloneBlock); + auto clone_block = input_block->clone_without_columns(&_column_offset); + _input_mutable_block = vectorized::MutableBlock::build_mutable_block(&clone_block); _vec_row_comparator->set_block(&_input_mutable_block); - _output_mutable_block = vectorized::MutableBlock::build_mutable_block(&cloneBlock); + _output_mutable_block = vectorized::MutableBlock::build_mutable_block(&clone_block); if (_keys_type != KeysType::DUP_KEYS) { // there may be additional intermediate columns in input_block - // we only need columns indicated by column offset in the output - _init_agg_functions(&cloneBlock); + // we only need columns indicated by column offset in the output + _init_agg_functions(&clone_block); } if (_tablet_schema->has_sequence_col()) { if (_is_partial_update) { // for unique key partial update, sequence column index in block // may be different with the index in `_tablet_schema` - for (size_t i = 0; i < cloneBlock.columns(); i++) { - if (cloneBlock.get_by_position(i).name == SEQUENCE_COL) { + for (size_t i = 0; i < clone_block.columns(); i++) { + if (clone_block.get_by_position(i).name == SEQUENCE_COL) { _seq_col_idx_in_block = i; break; }