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

kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git

commit c281ac461cdceef6310d8a1aa597307d70eb58a8
Author: huanghaibin <[email protected]>
AuthorDate: Tue Aug 1 14:09:18 2023 +0800

    [fix](vertical compaction) compaction block reader should return error when 
reading next block failed (#22431)
---
 be/src/vec/olap/block_reader.cpp          | 2 +-
 be/src/vec/olap/olap_data_convertor.cpp   | 4 ++--
 be/src/vec/olap/vertical_block_reader.cpp | 3 ++-
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/be/src/vec/olap/block_reader.cpp b/be/src/vec/olap/block_reader.cpp
index b37459974c..36fe335632 100644
--- a/be/src/vec/olap/block_reader.cpp
+++ b/be/src/vec/olap/block_reader.cpp
@@ -384,7 +384,7 @@ Status BlockReader::_unique_key_next_block(Block* block, 
bool* eof) {
                                                          
std::make_shared<DataTypeUInt8>(),
                                                          
"__DORIS_COMPACTION_FILTER__"};
         block->insert(column_with_type_and_name);
-        Block::filter_block(block, target_columns.size(), 
target_columns.size());
+        RETURN_IF_ERROR(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);
     }
diff --git a/be/src/vec/olap/olap_data_convertor.cpp 
b/be/src/vec/olap/olap_data_convertor.cpp
index a62a07a15e..a4965e8421 100644
--- a/be/src/vec/olap/olap_data_convertor.cpp
+++ b/be/src/vec/olap/olap_data_convertor.cpp
@@ -185,7 +185,7 @@ 
OlapBlockDataConvertor::create_olap_column_data_convertor(const TabletColumn& co
 
 void OlapBlockDataConvertor::set_source_content(const vectorized::Block* 
block, size_t row_pos,
                                                 size_t num_rows) {
-    assert(block && num_rows > 0 && row_pos + num_rows <= block->rows() &&
+    DCHECK(block && num_rows > 0 && row_pos + num_rows <= block->rows() &&
            block->columns() == _convertors.size());
     size_t cid = 0;
     for (const auto& typed_column : *block) {
@@ -197,7 +197,7 @@ void OlapBlockDataConvertor::set_source_content(const 
vectorized::Block* block,
 void OlapBlockDataConvertor::set_source_content_with_specifid_columns(
         const vectorized::Block* block, size_t row_pos, size_t num_rows,
         std::vector<uint32_t> cids) {
-    assert(block && num_rows > 0 && row_pos + num_rows <= block->rows() &&
+    DCHECK(block && num_rows > 0 && row_pos + num_rows <= block->rows() &&
            block->columns() <= _convertors.size());
     for (auto i : cids) {
         _convertors[i]->set_source_column(block->get_by_position(i), row_pos, 
num_rows);
diff --git a/be/src/vec/olap/vertical_block_reader.cpp 
b/be/src/vec/olap/vertical_block_reader.cpp
index 5aac3034a2..17355135fe 100644
--- a/be/src/vec/olap/vertical_block_reader.cpp
+++ b/be/src/vec/olap/vertical_block_reader.cpp
@@ -476,7 +476,8 @@ Status VerticalBlockReader::_unique_key_next_block(Block* 
block, bool* eof) {
                                                              
std::make_shared<DataTypeUInt8>(),
                                                              
"__DORIS_COMPACTION_FILTER__"};
             block->insert(column_with_type_and_name);
-            Block::filter_block(block, target_columns.size(), 
target_columns.size());
+            RETURN_IF_ERROR(
+                    Block::filter_block(block, target_columns.size(), 
target_columns.size()));
             _stats.rows_del_filtered += block_rows - 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