You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2022/04/22 12:27:01 UTC

[iotdb] branch TimeJoinNode created (now 497340dea9)

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

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


      at 497340dea9 Fix TimeJoinNode clone and serde bug

This branch includes the following new commits:

     new 497340dea9 Fix TimeJoinNode clone and serde bug

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[iotdb] 01/01: Fix TimeJoinNode clone and serde bug

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 497340dea9febed7e94f500098b56b41be2f5844
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Fri Apr 22 20:26:47 2022 +0800

    Fix TimeJoinNode clone and serde bug
---
 .../db/mpp/sql/planner/DistributionPlanner.java    |  4 ++++
 .../planner/plan/node/process/TimeJoinNode.java    | 25 ++++++++++++++++------
 .../planner/plan/node/source/SeriesScanNode.java   |  6 +++++-
 3 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/DistributionPlanner.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/DistributionPlanner.java
index 67c8c5f740..22b571ac3b 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/DistributionPlanner.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/DistributionPlanner.java
@@ -188,6 +188,7 @@ public class DistributionPlanner {
         split.setRegionReplicaSet(dataRegion);
         timeJoinNode.addChild(split);
       }
+      timeJoinNode.initOutputColumns();
       return timeJoinNode;
     }
 
@@ -253,6 +254,7 @@ public class DistributionPlanner {
             }
           });
 
+      root.initOutputColumns();
       return root;
     }
 
@@ -373,6 +375,7 @@ public class DistributionPlanner {
       // If the distributionType of all the children are same, no ExchangeNode need to be added.
       if (distributionType == NodeDistributionType.SAME_WITH_ALL_CHILDREN) {
         newNode.setChildren(visitedChildren);
+        newNode.initOutputColumns();
         return newNode;
       }
 
@@ -389,6 +392,7 @@ public class DistributionPlanner {
               newNode.addChild(child);
             }
           });
+      newNode.initOutputColumns();
       return newNode;
     }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/process/TimeJoinNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/process/TimeJoinNode.java
index b34dd68bda..87139cacc8 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/process/TimeJoinNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/process/TimeJoinNode.java
@@ -61,7 +61,7 @@ public class TimeJoinNode extends ProcessNode {
   private List<OutputColumn> outputColumns = new ArrayList<>();
 
   // column name and datatype of each output column
-  private final List<ColumnHeader> outputColumnHeaders = new ArrayList<>();
+  private List<ColumnHeader> outputColumnHeaders = new ArrayList<>();
 
   private List<PlanNode> children;
 
@@ -85,9 +85,10 @@ public class TimeJoinNode extends ProcessNode {
   @Override
   public PlanNode clone() {
     // TODO: (xingtanzjr)
-    TimeJoinNode cloneNode = new TimeJoinNode(getPlanNodeId(), this.mergeOrder);
-    cloneNode.outputColumns = this.outputColumns;
-    return cloneNode;
+    TimeJoinNode node = new TimeJoinNode(getPlanNodeId(), this.mergeOrder);
+    node.outputColumnHeaders = this.outputColumnHeaders;
+    node.outputColumns = this.outputColumns;
+    return node;
   }
 
   @Override
@@ -99,7 +100,9 @@ public class TimeJoinNode extends ProcessNode {
     return outputColumns;
   }
 
-  private void initOutputColumns() {
+  public void initOutputColumns() {
+    outputColumns.clear();
+    outputColumnHeaders.clear();
     for (int tsBlockIndex = 0; tsBlockIndex < children.size(); tsBlockIndex++) {
       List<ColumnHeader> childColumnHeaders = children.get(tsBlockIndex).getOutputColumnHeaders();
       for (int valueColumnIndex = 0;
@@ -140,7 +143,12 @@ public class TimeJoinNode extends ProcessNode {
   protected void serializeAttributes(ByteBuffer byteBuffer) {
     PlanNodeType.TIME_JOIN.serialize(byteBuffer);
     ReadWriteIOUtils.write(mergeOrder.ordinal(), byteBuffer);
-    filterNullParameter.serialize(byteBuffer);
+    if (filterNullParameter == null) {
+      ReadWriteIOUtils.write(true, byteBuffer);
+    } else {
+      ReadWriteIOUtils.write(false, byteBuffer);
+      filterNullParameter.serialize(byteBuffer);
+    }
     ReadWriteIOUtils.write(outputColumns.size(), byteBuffer);
     for (OutputColumn outputColumn : outputColumns) {
       outputColumn.serialize(byteBuffer);
@@ -153,7 +161,10 @@ public class TimeJoinNode extends ProcessNode {
 
   public static TimeJoinNode deserialize(ByteBuffer byteBuffer) {
     OrderBy orderBy = OrderBy.values()[ReadWriteIOUtils.readInt(byteBuffer)];
-    FilterNullParameter filterNullParameter = FilterNullParameter.deserialize(byteBuffer);
+    FilterNullParameter filterNullParameter = null;
+    if (!ReadWriteIOUtils.readIsNull(byteBuffer)) {
+      filterNullParameter = FilterNullParameter.deserialize(byteBuffer);
+    }
     int outputColumnSize = ReadWriteIOUtils.readInt(byteBuffer);
     List<OutputColumn> outputColumns = new ArrayList<>(outputColumnSize);
     for (int i = 0; i < outputColumnSize; i++) {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/source/SeriesScanNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/source/SeriesScanNode.java
index adc814e043..20251d9784 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/source/SeriesScanNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/source/SeriesScanNode.java
@@ -152,7 +152,11 @@ public class SeriesScanNode extends SourceNode {
 
   @Override
   public PlanNode clone() {
-    return new SeriesScanNode(getPlanNodeId(), getSeriesPath(), this.regionReplicaSet);
+    SeriesScanNode seriesScanNode =
+        new SeriesScanNode(getPlanNodeId(), getSeriesPath(), this.regionReplicaSet);
+    seriesScanNode.allSensors = this.allSensors;
+    seriesScanNode.outputColumnHeader = this.outputColumnHeader;
+    return seriesScanNode;
   }
 
   @Override