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

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


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new d0eea3886d3 [fix](multi-catalog) Revert #36575 and check nullptr of 
data column (#37086)
d0eea3886d3 is described below

commit d0eea3886d3d1952ce98d8a5aa72799de7be3742
Author: Ashin Gau <ashin...@users.noreply.github.com>
AuthorDate: Tue Jul 2 15:32:52 2024 +0800

    [fix](multi-catalog) Revert #36575 and check nullptr of data column (#37086)
    
    Revert #36575, because `VScanner::get_block` will check
    `DCHECK(block->rows() == 0)`, so block should be cleared when `eof =
    true`.
---
 be/src/vec/core/block.cpp                          | 6 ++++--
 be/src/vec/exec/format/orc/vorc_reader.cpp         | 2 ++
 be/src/vec/exec/format/parquet/vparquet_reader.cpp | 1 +
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/be/src/vec/core/block.cpp b/be/src/vec/core/block.cpp
index 39f952c837a..dd1a659ae15 100644
--- a/be/src/vec/core/block.cpp
+++ b/be/src/vec/core/block.cpp
@@ -704,8 +704,10 @@ void Block::clear_column_data(int column_size) noexcept {
         }
     }
     for (auto& d : data) {
-        DCHECK_EQ(d.column->use_count(), 1) << " " << print_use_count();
-        (*std::move(d.column)).assume_mutable()->clear();
+        if (d.column) {
+            DCHECK_EQ(d.column->use_count(), 1) << " " << print_use_count();
+            (*std::move(d.column)).assume_mutable()->clear();
+        }
     }
     row_same_bit.clear();
 }
diff --git a/be/src/vec/exec/format/orc/vorc_reader.cpp 
b/be/src/vec/exec/format/orc/vorc_reader.cpp
index 6e4f5674e29..16909f0023a 100644
--- a/be/src/vec/exec/format/orc/vorc_reader.cpp
+++ b/be/src/vec/exec/format/orc/vorc_reader.cpp
@@ -1594,6 +1594,7 @@ Status OrcReader::get_next_block_impl(Block* block, 
size_t* read_rows, bool* eof
             } catch (std::exception& e) {
                 std::string _err_msg = e.what();
                 if (_io_ctx && _io_ctx->should_stop && _err_msg == "stop") {
+                    block->clear_column_data();
                     *eof = true;
                     *read_rows = 0;
                     return Status::OK();
@@ -1663,6 +1664,7 @@ Status OrcReader::get_next_block_impl(Block* block, 
size_t* read_rows, bool* eof
             } catch (std::exception& e) {
                 std::string _err_msg = e.what();
                 if (_io_ctx && _io_ctx->should_stop && _err_msg == "stop") {
+                    block->clear_column_data();
                     *eof = true;
                     *read_rows = 0;
                     return Status::OK();
diff --git a/be/src/vec/exec/format/parquet/vparquet_reader.cpp 
b/be/src/vec/exec/format/parquet/vparquet_reader.cpp
index db3399eb0dd..f99786dc6e2 100644
--- a/be/src/vec/exec/format/parquet/vparquet_reader.cpp
+++ b/be/src/vec/exec/format/parquet/vparquet_reader.cpp
@@ -525,6 +525,7 @@ Status ParquetReader::get_next_block(Block* block, size_t* 
read_rows, bool* eof)
     Status batch_st =
             _current_group_reader->next_batch(block, _batch_size, read_rows, 
&_row_group_eof);
     if (batch_st.is<ErrorCode::END_OF_FILE>()) {
+        block->clear_column_data();
         _current_group_reader.reset(nullptr);
         *read_rows = 0;
         *eof = true;


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

Reply via email to