diff --git a/be/src/olap/tablet.cpp b/be/src/olap/tablet.cpp index 0a791614b87a8d..aa7594f1e10a47 100644 --- a/be/src/olap/tablet.cpp +++ b/be/src/olap/tablet.cpp @@ -2901,22 +2901,20 @@ Status Tablet::sort_block(vectorized::Block& in_block, vectorized::Block& output vectorized::MutableBlock mutable_output_block = vectorized::MutableBlock::build_mutable_block(&output_block); - std::vector _row_in_blocks; - _row_in_blocks.reserve(in_block.rows()); - std::shared_ptr vec_row_comparator = std::make_shared(_tablet_meta->tablet_schema().get()); vec_row_comparator->set_block(&mutable_input_block); - std::vector row_in_blocks; + std::vector> row_in_blocks; DCHECK(in_block.rows() <= std::numeric_limits::max()); row_in_blocks.reserve(in_block.rows()); for (size_t i = 0; i < in_block.rows(); ++i) { - row_in_blocks.emplace_back(new RowInBlock {i}); + row_in_blocks.emplace_back(std::make_unique(i)); } std::sort(row_in_blocks.begin(), row_in_blocks.end(), - [&](const RowInBlock* l, const RowInBlock* r) -> bool { - auto value = (*vec_row_comparator)(l, r); + [&](const std::unique_ptr& l, + const std::unique_ptr& r) -> bool { + auto value = (*vec_row_comparator)(l.get(), r.get()); DCHECK(value != 0) << "value equel when sort block, l_pos: " << l->_row_pos << " r_pos: " << r->_row_pos; return value < 0;