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

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


The following commit(s) were added to refs/heads/master by this push:
     new 1056a6d8c7 [bug](compaction) fix bug of coredump of filter delete 
chose wrong filter column (#12002)
1056a6d8c7 is described below

commit 1056a6d8c703e9e019c74138a214474f4adeae42
Author: HappenLee <[email protected]>
AuthorDate: Tue Aug 23 21:52:11 2022 +0800

    [bug](compaction) fix bug of coredump of filter delete chose wrong filter 
column (#12002)
    
    * [bug](compaction) fix bug of coredump of filter delete chose wrong filter 
column
    
    * clang format
---
 be/src/vec/olap/block_reader.cpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/be/src/vec/olap/block_reader.cpp b/be/src/vec/olap/block_reader.cpp
index 19e8c28cad..ece88b97f8 100644
--- a/be/src/vec/olap/block_reader.cpp
+++ b/be/src/vec/olap/block_reader.cpp
@@ -284,7 +284,7 @@ Status BlockReader::_unique_key_next_block(Block* block, 
MemPool* mem_pool, Obje
     // do filter detete row in base compaction, only base compaction need to 
do the job
     if (_filter_delete) {
         int delete_sign_idx =
-                (_sequence_col_idx == -1) ? target_columns.size() : 
target_columns.size() - 1;
+                (_sequence_col_idx == -1) ? target_columns.size() - 1 : 
target_columns.size() - 2;
         DCHECK(delete_sign_idx > 0);
         MutableColumnPtr delete_filter_column = 
(*std::move(_delete_filter_column)).mutate();
         
reinterpret_cast<ColumnUInt8*>(delete_filter_column.get())->resize(target_block_row);
@@ -292,7 +292,9 @@ Status BlockReader::_unique_key_next_block(Block* block, 
MemPool* mem_pool, Obje
         auto* __restrict filter_data =
                 
reinterpret_cast<ColumnUInt8*>(delete_filter_column.get())->get_data().data();
         auto* __restrict delete_data =
-                
reinterpret_cast<ColumnInt8*>(target_columns.back().get())->get_data().data();
+                
reinterpret_cast<ColumnInt8*>(target_columns[delete_sign_idx].get())
+                        ->get_data()
+                        .data();
         for (int i = 0; i < target_block_row; ++i) {
             filter_data[i] = delete_data[i] == 0;
         }
@@ -301,7 +303,7 @@ Status BlockReader::_unique_key_next_block(Block* block, 
MemPool* mem_pool, Obje
                                                          
std::make_shared<DataTypeUInt8>(),
                                                          
"__DORIS_COMPACTION_FILTER__"};
         block->insert(column_with_type_and_name);
-        Block::filter_block(block, delete_sign_idx, target_columns.size());
+        Block::filter_block(block, target_columns.size(), 
target_columns.size());
         _stats.rows_del_filtered += target_block_row - block->rows();
         DCHECK(block->try_get_by_name("__DORIS_COMPACTION_FILTER__") == 
nullptr);
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to