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

Reply via email to