This is an automated email from the ASF dual-hosted git repository. dataroaring pushed a commit to branch compaction_opt in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/compaction_opt by this push: new 90e7c3d0e9 [bugfix](vertical_compaction) fix ori_return_col size bug (#14304) 90e7c3d0e9 is described below commit 90e7c3d0e988ad582a4192c04c4a59b5e96ca936 Author: yixiutt <102007456+yixi...@users.noreply.github.com> AuthorDate: Wed Nov 16 11:02:56 2022 +0800 [bugfix](vertical_compaction) fix ori_return_col size bug (#14304) --- be/src/vec/olap/vertical_block_reader.cpp | 7 ++++--- be/src/vec/olap/vertical_merge_iterator.cpp | 12 ++++++------ be/src/vec/olap/vertical_merge_iterator.h | 11 +++++++---- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/be/src/vec/olap/vertical_block_reader.cpp b/be/src/vec/olap/vertical_block_reader.cpp index 5d20c97f96..1a385c3e37 100644 --- a/be/src/vec/olap/vertical_block_reader.cpp +++ b/be/src/vec/olap/vertical_block_reader.cpp @@ -64,15 +64,16 @@ Status VerticalBlockReader::_init_collect_iter(const ReaderParams& read_params) RETURN_IF_ERROR(_get_segment_iterators(read_params, &segment_iters)); // build heap if key column iterator or build vertical merge iterator if value column + auto ori_return_col_size = _return_columns.size(); if (read_params.is_key_column_group) { uint32_t seq_col_idx = -1; if (read_params.tablet->tablet_schema()->has_sequence_col()) { seq_col_idx = read_params.tablet->tablet_schema()->sequence_col_idx(); } - _vcollect_iter = new_vertical_heap_merge_iterator( - segment_iters, read_params.tablet->keys_type(), seq_col_idx, _row_sources_buffer); + _vcollect_iter = new_vertical_heap_merge_iterator(segment_iters, ori_return_col_size, + read_params.tablet->keys_type(), + seq_col_idx, _row_sources_buffer); } else { - auto ori_return_col_size = _return_columns.size(); _vcollect_iter = new_vertical_mask_merge_iterator(segment_iters, ori_return_col_size, _row_sources_buffer); } diff --git a/be/src/vec/olap/vertical_merge_iterator.cpp b/be/src/vec/olap/vertical_merge_iterator.cpp index 2755c204e1..911d677b53 100644 --- a/be/src/vec/olap/vertical_merge_iterator.cpp +++ b/be/src/vec/olap/vertical_merge_iterator.cpp @@ -396,8 +396,8 @@ Status VerticalHeapMergeIterator::init(const StorageReadOptions& opts) { auto seg_order = 0; for (auto iter : _origin_iters) { - auto ctx = std::make_unique<VerticalMergeIteratorContext>( - iter, iter->schema().num_column_ids(), seg_order, _seq_col_idx); + auto ctx = std::make_unique<VerticalMergeIteratorContext>(iter, _ori_return_cols, seg_order, + _seq_col_idx); RETURN_IF_ERROR(ctx->init(opts)); if (!ctx->valid()) { continue; @@ -528,10 +528,10 @@ Status VerticalMaskMergeIterator::init(const StorageReadOptions& opts) { // interfaces to create vertical merge iterator std::shared_ptr<RowwiseIterator> new_vertical_heap_merge_iterator( - const std::vector<RowwiseIterator*>& inputs, KeysType keys_type, uint32_t seq_col_idx, - RowSourcesBuffer* row_sources) { - return std::make_shared<VerticalHeapMergeIterator>(std::move(inputs), keys_type, seq_col_idx, - row_sources); + const std::vector<RowwiseIterator*>& inputs, size_t ori_return_cols, KeysType keys_type, + uint32_t seq_col_idx, RowSourcesBuffer* row_sources) { + return std::make_shared<VerticalHeapMergeIterator>(std::move(inputs), ori_return_cols, + keys_type, seq_col_idx, row_sources); } std::shared_ptr<RowwiseIterator> new_vertical_mask_merge_iterator( diff --git a/be/src/vec/olap/vertical_merge_iterator.h b/be/src/vec/olap/vertical_merge_iterator.h index 71f6bf456d..6e7fda7193 100644 --- a/be/src/vec/olap/vertical_merge_iterator.h +++ b/be/src/vec/olap/vertical_merge_iterator.h @@ -209,9 +209,11 @@ private: class VerticalHeapMergeIterator : public RowwiseIterator { public: // VerticalMergeIterator takes the ownership of input iterators - VerticalHeapMergeIterator(std::vector<RowwiseIterator*> iters, KeysType keys_type, - int32_t seq_col_idx, RowSourcesBuffer* row_sources_buf) + VerticalHeapMergeIterator(std::vector<RowwiseIterator*> iters, size_t ori_return_cols, + KeysType keys_type, int32_t seq_col_idx, + RowSourcesBuffer* row_sources_buf) : _origin_iters(std::move(iters)), + _ori_return_cols(ori_return_cols), _keys_type(keys_type), _seq_col_idx(seq_col_idx), _row_sources_buf(row_sources_buf) {} @@ -235,6 +237,7 @@ private: private: // It will be released after '_merge_heap' has been built. std::vector<RowwiseIterator*> _origin_iters; + size_t _ori_return_cols; const Schema* _schema = nullptr; @@ -301,8 +304,8 @@ private: // segment merge iterator std::shared_ptr<RowwiseIterator> new_vertical_heap_merge_iterator( - const std::vector<RowwiseIterator*>& inputs, KeysType key_type, uint32_t seq_col_idx, - RowSourcesBuffer* row_sources_buf); + const std::vector<RowwiseIterator*>& inputs, size_t _ori_return_cols, KeysType key_type, + uint32_t seq_col_idx, RowSourcesBuffer* row_sources_buf); std::shared_ptr<RowwiseIterator> new_vertical_mask_merge_iterator( const std::vector<RowwiseIterator*>& inputs, size_t ori_return_cols, --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org