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

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


The following commit(s) were added to refs/heads/master by this push:
     new fbeddb9a77 Fix the issue that LastQuery lack MergeNode in some FI 
(#6186)
fbeddb9a77 is described below

commit fbeddb9a775309ca682f1dd094d967e09f969826
Author: Zhang.Jinrui <[email protected]>
AuthorDate: Tue Jun 7 19:49:28 2022 +0800

    Fix the issue that LastQuery lack MergeNode in some FI (#6186)
---
 .../db/mpp/plan/planner/distribution/DistributionPlanContext.java   | 6 ++++++
 .../iotdb/db/mpp/plan/planner/distribution/SourceRewriter.java      | 5 ++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/DistributionPlanContext.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/DistributionPlanContext.java
index 88f13eddf4..60a6a5f549 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/DistributionPlanContext.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/DistributionPlanContext.java
@@ -24,10 +24,12 @@ import org.apache.iotdb.db.mpp.common.MPPQueryContext;
 public class DistributionPlanContext {
   protected boolean isRoot;
   protected MPPQueryContext queryContext;
+  protected boolean forceAddParent;
 
   protected DistributionPlanContext(MPPQueryContext queryContext) {
     this.isRoot = true;
     this.queryContext = queryContext;
+    this.forceAddParent = false;
   }
 
   protected DistributionPlanContext copy() {
@@ -38,4 +40,8 @@ public class DistributionPlanContext {
     this.isRoot = isRoot;
     return this;
   }
+
+  protected void setForceAddParent(boolean forceAddParent) {
+    this.forceAddParent = forceAddParent;
+  }
 }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/SourceRewriter.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/SourceRewriter.java
index c646930fc1..676d93b3b4 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/SourceRewriter.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/SourceRewriter.java
@@ -372,6 +372,9 @@ public class SourceRewriter extends 
SimplePlanNodeRewriter<DistributionPlanConte
 
   @Override
   public PlanNode visitLastQueryMerge(LastQueryMergeNode node, 
DistributionPlanContext context) {
+    // For last query, we need to keep every FI's root node is 
LastQueryMergeNode. So we
+    // force every region group have a parent node even if there is only 1 
child for it.
+    context.setForceAddParent(true);
     return processRawMultiChildNode(node, context);
   }
 
@@ -419,7 +422,7 @@ public class SourceRewriter extends 
SimplePlanNodeRewriter<DistributionPlanConte
     final boolean[] addParent = {false};
     sourceGroup.forEach(
         (dataRegion, seriesScanNodes) -> {
-          if (seriesScanNodes.size() == 1) {
+          if (seriesScanNodes.size() == 1 && !context.forceAddParent) {
             root.addChild(seriesScanNodes.get(0));
           } else {
             if (!addParent[0]) {

Reply via email to