diff --git a/be/src/vec/core/sort_cursor.h b/be/src/vec/core/sort_cursor.h index 71db3428541cff..b43449b50b0472 100644 --- a/be/src/vec/core/sort_cursor.h +++ b/be/src/vec/core/sort_cursor.h @@ -244,6 +244,8 @@ struct BlockSupplierSortCursorImpl : public MergeSortCursorImpl { } MergeSortCursorImpl::reset(_block); return status.ok(); + } else if (!status.ok()) { + throw std::runtime_error(status.msg()); } return false; } diff --git a/be/src/vec/runtime/vsorted_run_merger.cpp b/be/src/vec/runtime/vsorted_run_merger.cpp index 1bdd82ba8e4f68..a9c0c53e487499 100644 --- a/be/src/vec/runtime/vsorted_run_merger.cpp +++ b/be/src/vec/runtime/vsorted_run_merger.cpp @@ -69,12 +69,16 @@ void VSortedRunMerger::init_timers(RuntimeProfile* profile) { } Status VSortedRunMerger::prepare(const vector& input_runs) { - for (const auto& supplier : input_runs) { - if (_use_sort_desc) { - _cursors.emplace_back(supplier, _desc); - } else { - _cursors.emplace_back(supplier, _ordering_expr, _is_asc_order, _nulls_first); + try { + for (const auto& supplier : input_runs) { + if (_use_sort_desc) { + _cursors.emplace_back(supplier, _desc); + } else { + _cursors.emplace_back(supplier, _ordering_expr, _is_asc_order, _nulls_first); + } } + } catch (const std::exception& e) { + return Status::Cancelled(e.what()); } for (auto& _cursor : _cursors) {