You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by ga...@apache.org on 2023/01/04 05:39:17 UTC

[doris] branch master updated: [bugfix](compaction) fix missing key_bounds in vertical compaction (#15578)

This is an automated email from the ASF dual-hosted git repository.

gabriellee pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 73d4070708 [bugfix](compaction) fix missing key_bounds in vertical compaction (#15578)
73d4070708 is described below

commit 73d4070708e4fcf5b2f0f6e2d4633cf419f204e1
Author: yixiutt <10...@users.noreply.github.com>
AuthorDate: Wed Jan 4 13:39:09 2023 +0800

    [bugfix](compaction) fix missing key_bounds in vertical compaction (#15578)
    
    When flush last segment of every column, missing set segment key bound
    for rowset meta so that rowset tree init error.
---
 be/src/olap/merger.cpp                             | 2 +-
 be/src/olap/rowset/rowset_writer.h                 | 4 +++-
 be/src/olap/rowset/vertical_beta_rowset_writer.cpp | 4 ++--
 be/src/olap/rowset/vertical_beta_rowset_writer.h   | 2 +-
 4 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/be/src/olap/merger.cpp b/be/src/olap/merger.cpp
index 19f8d727e2..e91949a11c 100644
--- a/be/src/olap/merger.cpp
+++ b/be/src/olap/merger.cpp
@@ -239,7 +239,7 @@ Status Merger::vertical_compact_one_group(
         stats_output->merged_rows = reader.merged_rows();
         stats_output->filtered_rows = reader.filtered_rows();
     }
-    RETURN_IF_ERROR(dst_rowset_writer->flush_columns());
+    RETURN_IF_ERROR(dst_rowset_writer->flush_columns(is_key));
 
     return Status::OK();
 }
diff --git a/be/src/olap/rowset/rowset_writer.h b/be/src/olap/rowset/rowset_writer.h
index 7cf850b864..7164620d58 100644
--- a/be/src/olap/rowset/rowset_writer.h
+++ b/be/src/olap/rowset/rowset_writer.h
@@ -59,7 +59,9 @@ public:
     // explicit flush all buffered rows into segment file.
     // note that `add_row` could also trigger flush when certain conditions are met
     virtual Status flush() = 0;
-    virtual Status flush_columns() { return Status::Error<ErrorCode::NOT_IMPLEMENTED_ERROR>(); }
+    virtual Status flush_columns(bool is_key) {
+        return Status::Error<ErrorCode::NOT_IMPLEMENTED_ERROR>();
+    }
     virtual Status final_flush() { return Status::Error<ErrorCode::NOT_IMPLEMENTED_ERROR>(); }
 
     virtual Status flush_single_memtable(MemTable* memtable, int64_t* flush_size) {
diff --git a/be/src/olap/rowset/vertical_beta_rowset_writer.cpp b/be/src/olap/rowset/vertical_beta_rowset_writer.cpp
index 890f80e97d..ef7b2c4254 100644
--- a/be/src/olap/rowset/vertical_beta_rowset_writer.cpp
+++ b/be/src/olap/rowset/vertical_beta_rowset_writer.cpp
@@ -115,13 +115,13 @@ Status VerticalBetaRowsetWriter::_flush_columns(
     return Status::OK();
 }
 
-Status VerticalBetaRowsetWriter::flush_columns() {
+Status VerticalBetaRowsetWriter::flush_columns(bool is_key) {
     if (_segment_writers.empty()) {
         return Status::OK();
     }
 
     DCHECK(_segment_writers[_cur_writer_idx]);
-    RETURN_IF_ERROR(_flush_columns(&_segment_writers[_cur_writer_idx]));
+    RETURN_IF_ERROR(_flush_columns(&_segment_writers[_cur_writer_idx], is_key));
     _cur_writer_idx = 0;
     return Status::OK();
 }
diff --git a/be/src/olap/rowset/vertical_beta_rowset_writer.h b/be/src/olap/rowset/vertical_beta_rowset_writer.h
index 2c055ecb41..56e2fb4d6a 100644
--- a/be/src/olap/rowset/vertical_beta_rowset_writer.h
+++ b/be/src/olap/rowset/vertical_beta_rowset_writer.h
@@ -32,7 +32,7 @@ public:
                        bool is_key, uint32_t max_rows_per_segment);
 
     // flush last segment's column
-    Status flush_columns();
+    Status flush_columns(bool is_key);
 
     // flush when all column finished, flush column footer
     Status final_flush();


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org