diff --git a/be/src/exec/schema_scanner.cpp b/be/src/exec/schema_scanner.cpp index be0bd8eff72c4c..b5cd484b650b3f 100644 --- a/be/src/exec/schema_scanner.cpp +++ b/be/src/exec/schema_scanner.cpp @@ -134,7 +134,11 @@ Status SchemaScanner::get_next_block_async(RuntimeState* state) { _opened = true; } bool eos = false; - _scanner_status.update(get_next_block_internal(_data_block.get(), &eos)); + auto call_next_block_internal = [&]() -> Status { + RETURN_IF_CATCH_EXCEPTION( + { return get_next_block_internal(_data_block.get(), &eos); }); + }; + _scanner_status.update(call_next_block_internal()); _eos = eos; _async_thread_running = false; _dependency->set_ready(); diff --git a/be/src/olap/rowset/segment_v2/column_writer.cpp b/be/src/olap/rowset/segment_v2/column_writer.cpp index 75acd9f1f956fe..2637017b78d02b 100644 --- a/be/src/olap/rowset/segment_v2/column_writer.cpp +++ b/be/src/olap/rowset/segment_v2/column_writer.cpp @@ -534,7 +534,8 @@ Status ScalarColumnWriter::append_data(const uint8_t** ptr, size_t num_rows) { return Status::OK(); } -Status ScalarColumnWriter::append_data_in_current_page(const uint8_t* data, size_t* num_written) { +Status ScalarColumnWriter::_internal_append_data_in_current_page(const uint8_t* data, + size_t* num_written) { RETURN_IF_ERROR(_page_builder->add(data, num_written)); if (_opts.need_zone_map) { _zone_map_index_builder->add_values(data, *num_written); diff --git a/be/src/olap/rowset/segment_v2/column_writer.h b/be/src/olap/rowset/segment_v2/column_writer.h index acda2b75fb2488..0f0cf4c57ad07e 100644 --- a/be/src/olap/rowset/segment_v2/column_writer.h +++ b/be/src/olap/rowset/segment_v2/column_writer.h @@ -217,10 +217,16 @@ class ScalarColumnWriter : public ColumnWriter { // used for append not null data. When page is full, will append data not reach num_rows. Status append_data_in_current_page(const uint8_t** ptr, size_t* num_written); - Status append_data_in_current_page(const uint8_t* ptr, size_t* num_written); + Status append_data_in_current_page(const uint8_t* ptr, size_t* num_written) { + RETURN_IF_CATCH_EXCEPTION( + { return _internal_append_data_in_current_page(ptr, num_rows_written); }); + } friend class ArrayColumnWriter; friend class OffsetColumnWriter; +private: + Status _internal_append_data_in_current_page(const uint8_t* ptr, size_t* num_written); + private: std::unique_ptr _page_builder;