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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]