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]) {