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

dataroaring pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new 439027119e2 [fix](schema change) fix schema change check does not 
calculate reader merged rows (#33825) (#33908)
439027119e2 is described below

commit 439027119e215a562ba157a1c4dd5d4659999841
Author: Luwei <[email protected]>
AuthorDate: Fri Apr 19 22:57:25 2024 +0800

    [fix](schema change) fix schema change check does not calculate reader 
merged rows (#33825) (#33908)
---
 be/src/common/config.cpp                  |  2 ++
 be/src/common/config.h                    |  2 ++
 be/src/olap/rowset/beta_rowset_reader.cpp |  3 +++
 be/src/olap/rowset/beta_rowset_reader.h   |  3 +++
 be/src/olap/rowset/rowset_reader.h        |  2 ++
 be/src/olap/schema_change.h               | 12 +++++++++---
 6 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/be/src/common/config.cpp b/be/src/common/config.cpp
index 07d24df34f6..57ed4e4933b 100644
--- a/be/src/common/config.cpp
+++ b/be/src/common/config.cpp
@@ -1199,6 +1199,8 @@ DEFINE_mInt64(hive_sink_max_file_size, "1073741824"); // 
1GB
 
 DEFINE_mInt32(thrift_client_open_num_tries, "1");
 
+DEFINE_mBool(ignore_schema_change_check, "false");
+
 // clang-format off
 #ifdef BE_TEST
 // test s3
diff --git a/be/src/common/config.h b/be/src/common/config.h
index 0c4d511dd99..6efb4d74cb8 100644
--- a/be/src/common/config.h
+++ b/be/src/common/config.h
@@ -1281,6 +1281,8 @@ DECLARE_mInt64(hive_sink_max_file_size);
 // Retry the Open num_retries time waiting 100 milliseconds between retries.
 DECLARE_mInt32(thrift_client_open_num_tries);
 
+DECLARE_mBool(ignore_schema_change_check);
+
 #ifdef BE_TEST
 // test s3
 DECLARE_String(test_s3_resource);
diff --git a/be/src/olap/rowset/beta_rowset_reader.cpp 
b/be/src/olap/rowset/beta_rowset_reader.cpp
index 80c3085ac7a..71729f0a230 100644
--- a/be/src/olap/rowset/beta_rowset_reader.cpp
+++ b/be/src/olap/rowset/beta_rowset_reader.cpp
@@ -297,6 +297,9 @@ Status BetaRowsetReader::_init_iterator() {
     std::vector<RowwiseIteratorUPtr> iterators;
     RETURN_IF_ERROR(get_segment_iterators(_read_context, &iterators));
 
+    if (_read_context->merged_rows == nullptr) {
+        _read_context->merged_rows = &_merged_rows;
+    }
     // merge or union segment iterator
     if (_is_merge_iterator()) {
         auto sequence_loc = -1;
diff --git a/be/src/olap/rowset/beta_rowset_reader.h 
b/be/src/olap/rowset/beta_rowset_reader.h
index ee23b2d9b9f..6d0c4034c87 100644
--- a/be/src/olap/rowset/beta_rowset_reader.h
+++ b/be/src/olap/rowset/beta_rowset_reader.h
@@ -72,6 +72,8 @@ public:
                _stats->rows_vec_cond_filtered + 
_stats->rows_short_circuit_cond_filtered;
     }
 
+    uint64_t merged_rows() override { return *(_read_context->merged_rows); }
+
     RowsetTypePB type() const override { return RowsetTypePB::BETA_ROWSET; }
 
     Status current_block_row_locations(std::vector<RowLocation>* locations) 
override {
@@ -126,6 +128,7 @@ private:
 
     bool _empty = false;
     size_t _topn_limit = 0;
+    uint64_t _merged_rows = 0;
 };
 
 } // namespace doris
diff --git a/be/src/olap/rowset/rowset_reader.h 
b/be/src/olap/rowset/rowset_reader.h
index 9ada1706d89..58c0f592b9c 100644
--- a/be/src/olap/rowset/rowset_reader.h
+++ b/be/src/olap/rowset/rowset_reader.h
@@ -74,6 +74,8 @@ public:
 
     virtual int64_t filtered_rows() = 0;
 
+    virtual uint64_t merged_rows() = 0;
+
     virtual RowsetTypePB type() const = 0;
 
     virtual int64_t newest_write_timestamp() = 0;
diff --git a/be/src/olap/schema_change.h b/be/src/olap/schema_change.h
index 949c1d5514c..6528b587a9a 100644
--- a/be/src/olap/schema_change.h
+++ b/be/src/olap/schema_change.h
@@ -125,8 +125,11 @@ public:
         }
 
         LOG(INFO) << "all row nums. source_rows=" << 
rowset_reader->rowset()->num_rows()
+                  << ", source_filtered_rows=" << 
rowset_reader->filtered_rows()
+                  << ", source_merged_rows=" << rowset_reader->merged_rows()
                   << ", merged_rows=" << merged_rows() << ", filtered_rows=" 
<< filtered_rows()
-                  << ", new_index_rows=" << rowset_writer->num_rows();
+                  << ", new_index_rows=" << rowset_writer->num_rows()
+                  << ", writer_filtered_rows=" << 
rowset_writer->num_rows_filtered();
         return Status::OK();
     }
 
@@ -146,16 +149,19 @@ protected:
     }
 
     virtual bool _check_row_nums(RowsetReaderSharedPtr reader, const 
RowsetWriter& writer) const {
-        if (reader->rowset()->num_rows() - reader->filtered_rows() !=
+        if (reader->rowset()->num_rows() - reader->filtered_rows() - 
reader->merged_rows() !=
             writer.num_rows() + writer.num_rows_filtered() + _merged_rows + 
_filtered_rows) {
             LOG(WARNING) << "fail to check row num! "
                          << "source_rows=" << reader->rowset()->num_rows()
                          << ", source_filtered_rows=" << 
reader->filtered_rows()
+                         << ", source_merged_rows=" << reader->merged_rows()
                          << ", written_rows=" << writer.num_rows()
                          << ", writer_filtered_rows=" << 
writer.num_rows_filtered()
                          << ", merged_rows=" << merged_rows()
                          << ", filtered_rows=" << filtered_rows();
-            return false;
+            if (!config::ignore_schema_change_check) {
+                return false;
+            }
         }
         return true;
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to