BiteTheDDDDt commented on code in PR #10003:
URL: https://github.com/apache/incubator-doris/pull/10003#discussion_r892420206


##########
be/src/olap/schema_change.cpp:
##########
@@ -807,22 +807,32 @@ bool 
RowBlockAllocator::is_memory_enough_for_sorting(size_t num_rows, size_t all
 
 RowBlockMerger::RowBlockMerger(TabletSharedPtr tablet) : _tablet(tablet) {}
 
-RowBlockMerger::~RowBlockMerger() {}
+RowBlockMerger::~RowBlockMerger() = default;
 
 bool RowBlockMerger::merge(const std::vector<RowBlock*>& row_block_arr, 
RowsetWriter* rowset_writer,
                            uint64_t* merged_rows) {
     uint64_t tmp_merged_rows = 0;
     RowCursor row_cursor;
     std::unique_ptr<MemPool> mem_pool(new MemPool("RowBlockMerger"));
     std::unique_ptr<ObjectPool> agg_object_pool(new ObjectPool());
+
+    auto merge_error = [&]() -> bool {
+        while (_heap.size() > 0) {

Review Comment:
   done



##########
be/src/olap/schema_change.cpp:
##########
@@ -917,37 +918,33 @@ void RowBlockMerger::_pop_heap() {
     return;

Review Comment:
   removed



##########
be/src/olap/schema_change.h:
##########
@@ -94,20 +85,62 @@ class SchemaChange {
     SchemaChange() : _filtered_rows(0), _merged_rows(0) {}
     virtual ~SchemaChange() = default;
 
-    virtual Status process(RowsetReaderSharedPtr rowset_reader, RowsetWriter* 
new_rowset_builder,
-                           TabletSharedPtr tablet, TabletSharedPtr 
base_tablet) = 0;
-
-    void add_filtered_rows(uint64_t filtered_rows) { _filtered_rows += 
filtered_rows; }
-
-    void add_merged_rows(uint64_t merged_rows) { _merged_rows += merged_rows; }
+    virtual Status process(RowsetReaderSharedPtr rowset_reader, RowsetWriter* 
rowset_writer,
+                           TabletSharedPtr new_tablet, TabletSharedPtr 
base_tablet) {
+        if (rowset_reader->rowset()->empty() || 
rowset_reader->rowset()->num_rows() == 0) {
+            RETURN_WITH_WARN_IF_ERROR(
+                    rowset_writer->flush(),
+                    Status::OLAPInternalError(OLAP_ERR_INPUT_PARAMETER_ERROR),
+                    fmt::format("create empty version for schema change 
failed. version= {}-{}",
+                                rowset_writer->version().first, 
rowset_writer->version().second));
+
+            return Status::OK();
+        }
+
+        _filtered_rows = 0;
+        _merged_rows = 0;
+
+        RETURN_IF_ERROR(_inner_process(rowset_reader, rowset_writer, 
new_tablet, base_tablet));
+        _add_filtered_rows(rowset_reader->filtered_rows());
+
+        // Check row num changes
+        if (config::row_nums_check) {

Review Comment:
   done



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


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

Reply via email to