This is an automated email from the ASF dual-hosted git repository.

dataroaring pushed a commit to branch compaction_opt
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/compaction_opt by this push:
     new 8f118dc849 [bugfix](vertical_compaction) fix sequence&delete_sign 
column handler (#14488)
8f118dc849 is described below

commit 8f118dc849c98c31371ce45e1eb86281b92d465a
Author: yixiutt <102007456+yixi...@users.noreply.github.com>
AuthorDate: Tue Nov 22 16:37:28 2022 +0800

    [bugfix](vertical_compaction) fix sequence&delete_sign column handler 
(#14488)
---
 be/src/olap/merger.cpp                      | 2 +-
 be/src/vec/olap/vertical_block_reader.cpp   | 9 ++++++++-
 be/src/vec/olap/vertical_merge_iterator.cpp | 4 ++--
 3 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/be/src/olap/merger.cpp b/be/src/olap/merger.cpp
index d46c094bc0..9217a88316 100644
--- a/be/src/olap/merger.cpp
+++ b/be/src/olap/merger.cpp
@@ -199,7 +199,7 @@ void Merger::vertical_split_columns(TabletSchemaSPtr 
tablet_schema,
     // in unique key, sequence & delete sign column should merge with key 
columns
     int32_t sequence_col_idx = -1;
     int32_t delete_sign_idx = -1;
-    // in key column compaction, seq_col real index is _block->columns() -2
+    // in key column compaction, seq_col real index is _num_key_columns
     // and delete_sign column is _block->columns() - 1
     if (tablet_schema->keys_type() == KeysType::UNIQUE_KEYS) {
         if (tablet_schema->has_sequence_col()) {
diff --git a/be/src/vec/olap/vertical_block_reader.cpp 
b/be/src/vec/olap/vertical_block_reader.cpp
index 1a385c3e37..02121c8162 100644
--- a/be/src/vec/olap/vertical_block_reader.cpp
+++ b/be/src/vec/olap/vertical_block_reader.cpp
@@ -329,9 +329,16 @@ Status VerticalBlockReader::_unique_key_next_block(Block* 
block, MemPool* mem_po
         }
         auto block_rows = block->rows();
         if (_filter_delete && block_rows > 0) {
-            auto target_columns = block->mutate_columns();
+            int ori_delete_sign_idx = 
_reader_context.tablet_schema->field_index(DELETE_SIGN);
+            if (ori_delete_sign_idx < 0) {
+                *eof = (res.is_end_of_file());
+                _eof = *eof;
+                return Status::OK();
+            }
+            // delete sign column must store in last column of the block
             int delete_sign_idx = block->columns() - 1;
             DCHECK(delete_sign_idx > 0);
+            auto target_columns = block->mutate_columns();
             MutableColumnPtr delete_filter_column = 
(*std::move(_delete_filter_column)).mutate();
             
reinterpret_cast<ColumnUInt8*>(delete_filter_column.get())->resize(block_rows);
 
diff --git a/be/src/vec/olap/vertical_merge_iterator.cpp 
b/be/src/vec/olap/vertical_merge_iterator.cpp
index 613f115f94..44b89f4287 100644
--- a/be/src/vec/olap/vertical_merge_iterator.cpp
+++ b/be/src/vec/olap/vertical_merge_iterator.cpp
@@ -217,8 +217,8 @@ bool VerticalMergeIteratorContext::compare(const 
VerticalMergeIteratorContext& r
     }
     auto col_cmp_res = 0;
     if (_seq_col_idx != -1) {
-        DCHECK(_block->columns() > 2);
-        auto real_seq_idx = _block->columns() - 2;
+        DCHECK(_block->columns() >= _num_key_columns);
+        auto real_seq_idx = _num_key_columns;
         col_cmp_res = _block->compare_column_at(_index_in_block, 
rhs._index_in_block, real_seq_idx,
                                                 *rhs._block, -1);
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to