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 64a738529e [bugfix](segment_writer) remove duplicate segment key_bound (#14312) 64a738529e is described below commit 64a738529eea7377b008a682488d0aaeb1c9318d Author: yixiutt <102007456+yixi...@users.noreply.github.com> AuthorDate: Wed Nov 16 14:59:40 2022 +0800 [bugfix](segment_writer) remove duplicate segment key_bound (#14312) --- be/src/olap/rowset/beta_rowset_writer.cpp | 16 ++++++++-------- be/src/olap/rowset/beta_rowset_writer.h | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/be/src/olap/rowset/beta_rowset_writer.cpp b/be/src/olap/rowset/beta_rowset_writer.cpp index 55e80007ff..0ce2c35871 100644 --- a/be/src/olap/rowset/beta_rowset_writer.cpp +++ b/be/src/olap/rowset/beta_rowset_writer.cpp @@ -785,9 +785,10 @@ RowsetSharedPtr BetaRowsetWriter::build() { return rowset; } -bool BetaRowsetWriter::_is_segment_overlapping() { +bool BetaRowsetWriter::_is_segment_overlapping( + const std::vector<KeyBoundsPB>& segments_encoded_key_bounds) { std::string last; - for (auto segment_encode_key : _segments_encoded_key_bounds) { + for (auto segment_encode_key : segments_encoded_key_bounds) { auto cur_min = segment_encode_key.min_key(); auto cur_max = segment_encode_key.max_key(); if (cur_min < last) { @@ -833,16 +834,16 @@ void BetaRowsetWriter::_build_rowset_meta(std::shared_ptr<RowsetMeta> rowset_met segments_encoded_key_bounds.push_back(itr.second.key_bounds); } } - rowset_meta->set_num_segments(num_seg); - if (!_is_segment_overlapping()) { - rowset_meta->set_segments_overlap(NONOVERLAPPING); - } - _segment_num_rows = segment_num_rows; for (auto itr = _segments_encoded_key_bounds.begin(); itr != _segments_encoded_key_bounds.end(); ++itr) { segments_encoded_key_bounds.push_back(*itr); } + if (!_is_segment_overlapping(segments_encoded_key_bounds)) { + rowset_meta->set_segments_overlap(NONOVERLAPPING); + } + rowset_meta->set_num_segments(num_seg); + _segment_num_rows = segment_num_rows; // TODO(zhangzhengyu): key_bounds.size() should equal num_seg, but currently not always rowset_meta->set_num_rows(num_rows_written + _num_rows_written); rowset_meta->set_total_disk_size(total_data_size + _total_data_size); @@ -972,7 +973,6 @@ Status BetaRowsetWriter::_flush_segment_writer(std::unique_ptr<segment_v2::Segme DCHECK_LE(min_key.compare(max_key), 0); key_bounds.set_min_key(min_key.to_string()); key_bounds.set_max_key(max_key.to_string()); - _segments_encoded_key_bounds.emplace_back(key_bounds); Statistics segstat; segstat.row_num = row_num; diff --git a/be/src/olap/rowset/beta_rowset_writer.h b/be/src/olap/rowset/beta_rowset_writer.h index 5064ac47b4..7e1438761b 100644 --- a/be/src/olap/rowset/beta_rowset_writer.h +++ b/be/src/olap/rowset/beta_rowset_writer.h @@ -124,7 +124,7 @@ private: void _build_rowset_meta_with_spec_field(RowsetMetaSharedPtr rowset_meta, const RowsetMetaSharedPtr& spec_rowset_meta); - bool _is_segment_overlapping(); + bool _is_segment_overlapping(const std::vector<KeyBoundsPB>& segments_encoded_key_bounds); protected: RowsetWriterContext _context; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org