You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2022/10/05 04:13:32 UTC

[doris] branch master updated: [fix](BE) fix the stream load error when upgrade BE from 1.1.2 to master (#13058)

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

yiguolei 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 7b75c2df54 [fix](BE) fix the stream load error when upgrade BE from 1.1.2 to master (#13058)
7b75c2df54 is described below

commit 7b75c2df54323e8c280af3ce3d91a094ebb5c62d
Author: Lightman <31...@users.noreply.github.com>
AuthorDate: Wed Oct 5 12:13:26 2022 +0800

    [fix](BE) fix the stream load error when upgrade BE from 1.1.2 to master (#13058)
---
 be/src/exec/olap_scanner.cpp                                   |  3 ++-
 be/src/exec/tablet_info.cpp                                    | 10 ++++++----
 be/src/vec/exec/scan/new_olap_scanner.cpp                      |  2 +-
 be/src/vec/exec/volap_scanner.cpp                              |  3 ++-
 .../src/main/java/org/apache/doris/planner/OlapScanNode.java   |  4 ++--
 .../src/main/java/org/apache/doris/planner/OlapTableSink.java  |  3 ++-
 gensrc/thrift/Descriptors.thrift                               |  2 +-
 gensrc/thrift/PlanNodes.thrift                                 |  2 +-
 8 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/be/src/exec/olap_scanner.cpp b/be/src/exec/olap_scanner.cpp
index 8ff6db2ab6..75a45b9a46 100644
--- a/be/src/exec/olap_scanner.cpp
+++ b/be/src/exec/olap_scanner.cpp
@@ -81,7 +81,8 @@ Status OlapScanner::prepare(
             return Status::InternalError(ss.str());
         }
         _tablet_schema->copy_from(*_tablet->tablet_schema());
-        if (!_parent->_olap_scan_node.columns_desc.empty() &&
+        if (_parent->_olap_scan_node.__isset.columns_desc &&
+            !_parent->_olap_scan_node.columns_desc.empty() &&
             _parent->_olap_scan_node.columns_desc[0].col_unique_id >= 0) {
             _tablet_schema->clear_columns();
             for (const auto& column_desc : _parent->_olap_scan_node.columns_desc) {
diff --git a/be/src/exec/tablet_info.cpp b/be/src/exec/tablet_info.cpp
index 08e77d9565..62926e5fa9 100644
--- a/be/src/exec/tablet_info.cpp
+++ b/be/src/exec/tablet_info.cpp
@@ -98,10 +98,12 @@ Status OlapTableSchemaParam::init(const TOlapTableSchemaParam& tschema) {
             }
             index->slots.emplace_back(it->second);
         }
-        for (auto& tcolumn_desc : t_index.columns_desc) {
-            TabletColumn* tc = _obj_pool.add(new TabletColumn());
-            tc->init_from_thrift(tcolumn_desc);
-            index->columns.emplace_back(tc);
+        if (t_index.__isset.columns_desc) {
+            for (auto& tcolumn_desc : t_index.columns_desc) {
+                TabletColumn* tc = _obj_pool.add(new TabletColumn());
+                tc->init_from_thrift(tcolumn_desc);
+                index->columns.emplace_back(tc);
+            }
         }
         _indexes.emplace_back(index);
     }
diff --git a/be/src/vec/exec/scan/new_olap_scanner.cpp b/be/src/vec/exec/scan/new_olap_scanner.cpp
index 5d88345cf5..d6fe854e63 100644
--- a/be/src/vec/exec/scan/new_olap_scanner.cpp
+++ b/be/src/vec/exec/scan/new_olap_scanner.cpp
@@ -67,7 +67,7 @@ Status NewOlapScanner::prepare(
         _tablet_schema->copy_from(*_tablet->tablet_schema());
 
         TOlapScanNode& olap_scan_node = ((NewOlapScanNode*)_parent)->_olap_scan_node;
-        if (!olap_scan_node.columns_desc.empty() &&
+        if (olap_scan_node.__isset.columns_desc && !olap_scan_node.columns_desc.empty() &&
             olap_scan_node.columns_desc[0].col_unique_id >= 0) {
             // Originally scanner get TabletSchema from tablet object in BE.
             // To support lightweight schema change for adding / dropping columns,
diff --git a/be/src/vec/exec/volap_scanner.cpp b/be/src/vec/exec/volap_scanner.cpp
index 9258d48611..fc082a6313 100644
--- a/be/src/vec/exec/volap_scanner.cpp
+++ b/be/src/vec/exec/volap_scanner.cpp
@@ -71,7 +71,8 @@ Status VOlapScanner::prepare(
             return Status::InternalError(ss.str());
         }
         _tablet_schema->copy_from(*_tablet->tablet_schema());
-        if (!_parent->_olap_scan_node.columns_desc.empty() &&
+        if (_parent->_olap_scan_node.__isset.columns_desc &&
+            !_parent->_olap_scan_node.columns_desc.empty() &&
             _parent->_olap_scan_node.columns_desc[0].col_unique_id >= 0) {
             // Originally scanner get TabletSchema from tablet object in BE.
             // To support lightweight schema change for adding / dropping columns,
diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java
index 290e934361..e813bf03e2 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java
@@ -913,8 +913,8 @@ public class OlapScanNode extends ScanNode {
         }
 
         msg.node_type = TPlanNodeType.OLAP_SCAN_NODE;
-        msg.olap_scan_node = new TOlapScanNode(desc.getId().asInt(), keyColumnNames, keyColumnTypes, isPreAggregation,
-                columnsDesc);
+        msg.olap_scan_node = new TOlapScanNode(desc.getId().asInt(), keyColumnNames, keyColumnTypes, isPreAggregation);
+        msg.olap_scan_node.setColumnsDesc(columnsDesc);
         if (null != sortColumn) {
             msg.olap_scan_node.setSortColumn(sortColumn);
         }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapTableSink.java b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapTableSink.java
index 9172d618fe..ef470cf711 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapTableSink.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapTableSink.java
@@ -215,7 +215,8 @@ public class OlapTableSink extends DataSink {
                 columnsDesc.add(tColumn);
             }
             TOlapTableIndexSchema indexSchema = new TOlapTableIndexSchema(pair.getKey(), columns,
-                    indexMeta.getSchemaHash(), columnsDesc);
+                    indexMeta.getSchemaHash());
+            indexSchema.setColumnsDesc(columnsDesc);
             schemaParam.addToIndexes(indexSchema);
         }
         return schemaParam;
diff --git a/gensrc/thrift/Descriptors.thrift b/gensrc/thrift/Descriptors.thrift
index ff365db7c4..f9517e2bfa 100644
--- a/gensrc/thrift/Descriptors.thrift
+++ b/gensrc/thrift/Descriptors.thrift
@@ -175,7 +175,7 @@ struct TOlapTableIndexSchema {
     1: required i64 id
     2: required list<string> columns
     3: required i32 schema_hash
-    4: required list<TColumn> columns_desc
+    4: optional list<TColumn> columns_desc
 }
 
 struct TOlapTableSchemaParam {
diff --git a/gensrc/thrift/PlanNodes.thrift b/gensrc/thrift/PlanNodes.thrift
index 0a4529572b..fe81af746b 100644
--- a/gensrc/thrift/PlanNodes.thrift
+++ b/gensrc/thrift/PlanNodes.thrift
@@ -479,7 +479,7 @@ struct TOlapScanNode {
   5: optional string sort_column
   6: optional Types.TKeysType keyType
   7: optional string table_name
-  8: required list<Descriptors.TColumn> columns_desc
+  8: optional list<Descriptors.TColumn> columns_desc
   9: optional TSortInfo sort_info
   // When scan match sort_info, we can push limit into OlapScanNode.
   // It's limit for scanner instead of scanNode so we add a new limit.


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