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

Reply via email to