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

[iotdb] branch xingtanzjr/graph_visitor updated (9c7cef73f9 -> 6badf76ed4)

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

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


    from 9c7cef73f9 complete basic PlanGraphPrinter
     new 7a8ef496f1 complete with test
     new 6badf76ed4 spotless

The 2 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.


Summary of changes:
 .../iotdb/commons/consensus/DataRegionId.java      |  4 ++
 .../iotdb/commons/consensus/PartitionRegionId.java |  4 ++
 .../iotdb/commons/consensus/SchemaRegionId.java    |  4 ++
 .../sql/planner/plan/node/PlanGraphPrinter.java    | 60 ++++++++++++++++++----
 .../db/mpp/sql/planner/plan/node/PlanNode.java     |  3 +-
 .../planner/plan/node/process/ExchangeNode.java    |  6 +++
 .../planner/plan/node/sink/FragmentSinkNode.java   |  6 +++
 .../db/mpp/sql/plan/DistributionPlannerTest.java   |  3 --
 8 files changed, 76 insertions(+), 14 deletions(-)


[iotdb] 02/02: spotless

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

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

commit 6badf76ed4806f5bf6f0ebbb9a8d8e662b71c4e0
Author: Jinrui.Zhang <xi...@gmail.com>
AuthorDate: Tue Apr 12 16:00:14 2022 +0800

    spotless
---
 .../db/mpp/sql/planner/plan/node/PlanGraphPrinter.java | 18 ++++++++----------
 .../iotdb/db/mpp/sql/planner/plan/node/PlanNode.java   |  3 +--
 .../iotdb/db/mpp/sql/plan/DistributionPlannerTest.java |  2 --
 3 files changed, 9 insertions(+), 14 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/PlanGraphPrinter.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/PlanGraphPrinter.java
index 660f51d1e9..b8136419f7 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/PlanGraphPrinter.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/PlanGraphPrinter.java
@@ -19,13 +19,14 @@
 
 package org.apache.iotdb.db.mpp.sql.planner.plan.node;
 
-import org.apache.commons.lang3.Validate;
 import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.ExchangeNode;
 import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.LimitNode;
 import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.TimeJoinNode;
 import org.apache.iotdb.db.mpp.sql.planner.plan.node.sink.FragmentSinkNode;
 import org.apache.iotdb.db.mpp.sql.planner.plan.node.source.SeriesScanNode;
 
+import org.apache.commons.lang3.Validate;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -96,7 +97,7 @@ public class PlanGraphPrinter extends PlanVisitor<List<String>, PlanGraphPrinter
   private List<String> render(PlanNode node, List<String> nodeBoxString, GraphContext context) {
     Box box = new Box(nodeBoxString);
     List<List<String>> children = new ArrayList<>();
-    for(PlanNode child : node.getChildren()) {
+    for (PlanNode child : node.getChildren()) {
       children.add(child.accept(this, context));
     }
     box.calculateBoxParams(children);
@@ -156,7 +157,8 @@ public class PlanGraphPrinter extends PlanVisitor<List<String>, PlanGraphPrinter
       }
       StringBuilder line1 = new StringBuilder();
       for (int i = 0; i < box.lineWidth; i++) {
-        if (i < getChildMidPosition(children, 0) || i > getChildMidPosition(children, children.size() - 1)) {
+        if (i < getChildMidPosition(children, 0)
+            || i > getChildMidPosition(children, children.size() - 1)) {
           line1.append(INDENT);
           continue;
         }
@@ -281,7 +283,7 @@ public class PlanGraphPrinter extends PlanVisitor<List<String>, PlanGraphPrinter
       int childrenWidth = 0;
       for (List<String> childBoxString : childBoxStrings) {
         Validate.isTrue(childBoxString.size() > 0, "Lines of box string should be greater than 0");
-        childrenWidth +=childBoxString.get(0).length();
+        childrenWidth += childBoxString.get(0).length();
       }
       childrenWidth += childBoxStrings.size() > 1 ? (childBoxStrings.size() - 1) * BOX_MARGIN : 0;
       this.lineWidth = Math.max(this.boxWidth, childrenWidth);
@@ -291,9 +293,7 @@ public class PlanGraphPrinter extends PlanVisitor<List<String>, PlanGraphPrinter
     }
   }
 
-  public static class GraphContext {
-
-  }
+  public static class GraphContext {}
 
   public static List<String> getGraph(PlanNode node) {
     return node.accept(new PlanGraphPrinter(), new PlanGraphPrinter.GraphContext());
@@ -301,10 +301,8 @@ public class PlanGraphPrinter extends PlanVisitor<List<String>, PlanGraphPrinter
 
   public static void print(PlanNode node) {
     List<String> lines = getGraph(node);
-    for(String line : lines) {
+    for (String line : lines) {
       System.out.println(line);
     }
   }
 }
-
-
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/PlanNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/PlanNode.java
index 6636a5b41d..8f9734123c 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/PlanNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/PlanNode.java
@@ -18,10 +18,9 @@
  */
 package org.apache.iotdb.db.mpp.sql.planner.plan.node;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
 import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import com.google.common.collect.ImmutableList;
 import org.apache.commons.lang.Validate;
 
 import java.nio.ByteBuffer;
diff --git a/server/src/test/java/org/apache/iotdb/db/mpp/sql/plan/DistributionPlannerTest.java b/server/src/test/java/org/apache/iotdb/db/mpp/sql/plan/DistributionPlannerTest.java
index f68f1f8c36..68b12abb0e 100644
--- a/server/src/test/java/org/apache/iotdb/db/mpp/sql/plan/DistributionPlannerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/mpp/sql/plan/DistributionPlannerTest.java
@@ -34,10 +34,8 @@ import org.apache.iotdb.db.mpp.sql.analyze.Analysis;
 import org.apache.iotdb.db.mpp.sql.analyze.QueryType;
 import org.apache.iotdb.db.mpp.sql.planner.DistributionPlanner;
 import org.apache.iotdb.db.mpp.sql.planner.plan.DistributedQueryPlan;
-import org.apache.iotdb.db.mpp.sql.planner.plan.FragmentInstance;
 import org.apache.iotdb.db.mpp.sql.planner.plan.LogicalQueryPlan;
 import org.apache.iotdb.db.mpp.sql.planner.plan.SubPlan;
-import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanGraphPrinter;
 import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanNode;
 import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.LimitNode;
 import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.TimeJoinNode;


[iotdb] 01/02: complete with test

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

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

commit 7a8ef496f1e9ec9a40402b84ead8804cc455a853
Author: Jinrui.Zhang <xi...@gmail.com>
AuthorDate: Tue Apr 12 15:59:01 2022 +0800

    complete with test
---
 .../iotdb/commons/consensus/DataRegionId.java      |  4 ++
 .../iotdb/commons/consensus/PartitionRegionId.java |  4 ++
 .../iotdb/commons/consensus/SchemaRegionId.java    |  4 ++
 .../sql/planner/plan/node/PlanGraphPrinter.java    | 44 ++++++++++++++++++++++
 .../planner/plan/node/process/ExchangeNode.java    |  6 +++
 .../planner/plan/node/sink/FragmentSinkNode.java   |  6 +++
 .../db/mpp/sql/plan/DistributionPlannerTest.java   |  3 +-
 7 files changed, 69 insertions(+), 2 deletions(-)

diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/consensus/DataRegionId.java b/node-commons/src/main/java/org/apache/iotdb/commons/consensus/DataRegionId.java
index 3085541766..6be4f73933 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/consensus/DataRegionId.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/consensus/DataRegionId.java
@@ -75,4 +75,8 @@ public class DataRegionId implements ConsensusGroupId {
   public int hashCode() {
     return Objects.hash(id, GroupType.DataRegion);
   }
+
+  public String toString() {
+    return String.format("%s-%d", getType(), id);
+  }
 }
diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/consensus/PartitionRegionId.java b/node-commons/src/main/java/org/apache/iotdb/commons/consensus/PartitionRegionId.java
index 86f5fe963c..c0e6450fd6 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/consensus/PartitionRegionId.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/consensus/PartitionRegionId.java
@@ -75,4 +75,8 @@ public class PartitionRegionId implements ConsensusGroupId {
   public int hashCode() {
     return Objects.hash(id, GroupType.PartitionRegion);
   }
+
+  public String toString() {
+    return String.format("%s-%d", getType(), id);
+  }
 }
diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/consensus/SchemaRegionId.java b/node-commons/src/main/java/org/apache/iotdb/commons/consensus/SchemaRegionId.java
index a42ddf3ad0..188f82070d 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/consensus/SchemaRegionId.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/consensus/SchemaRegionId.java
@@ -75,4 +75,8 @@ public class SchemaRegionId implements ConsensusGroupId {
   public int hashCode() {
     return Objects.hash(id, GroupType.SchemaRegion);
   }
+
+  public String toString() {
+    return String.format("%s-%d", getType(), id);
+  }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/PlanGraphPrinter.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/PlanGraphPrinter.java
index 7010a58836..660f51d1e9 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/PlanGraphPrinter.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/PlanGraphPrinter.java
@@ -20,6 +20,11 @@
 package org.apache.iotdb.db.mpp.sql.planner.plan.node;
 
 import org.apache.commons.lang3.Validate;
+import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.ExchangeNode;
+import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.LimitNode;
+import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.TimeJoinNode;
+import org.apache.iotdb.db.mpp.sql.planner.plan.node.sink.FragmentSinkNode;
+import org.apache.iotdb.db.mpp.sql.planner.plan.node.source.SeriesScanNode;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -49,6 +54,45 @@ public class PlanGraphPrinter extends PlanVisitor<List<String>, PlanGraphPrinter
     return render(node, boxValue, context);
   }
 
+  @Override
+  public List<String> visitSeriesScan(SeriesScanNode node, GraphContext context) {
+    List<String> boxValue = new ArrayList<>();
+    boxValue.add(String.format("SeriesScanNode-%s", node.getPlanNodeId().getId()));
+    boxValue.add(String.format("Series: %s", node.getSeriesPath()));
+    boxValue.add(String.format("Region: %s", node.getDataRegionReplicaSet().getId()));
+    return render(node, boxValue, context);
+  }
+
+  @Override
+  public List<String> visitExchange(ExchangeNode node, GraphContext context) {
+    List<String> boxValue = new ArrayList<>();
+    boxValue.add(String.format("ExchangeNode-%s", node.getPlanNodeId().getId()));
+    return render(node, boxValue, context);
+  }
+
+  @Override
+  public List<String> visitTimeJoin(TimeJoinNode node, GraphContext context) {
+    List<String> boxValue = new ArrayList<>();
+    boxValue.add(String.format("TimeJoinNode-%s", node.getPlanNodeId().getId()));
+    return render(node, boxValue, context);
+  }
+
+  @Override
+  public List<String> visitLimit(LimitNode node, GraphContext context) {
+    List<String> boxValue = new ArrayList<>();
+    boxValue.add(String.format("Limit-%s", node.getPlanNodeId().getId()));
+    boxValue.add(String.format("Count: %d", node.getLimit()));
+    return render(node, boxValue, context);
+  }
+
+  @Override
+  public List<String> visitFragmentSink(FragmentSinkNode node, GraphContext context) {
+    List<String> boxValue = new ArrayList<>();
+    boxValue.add(String.format("FragmentSinkNode-%s", node.getPlanNodeId().getId()));
+    boxValue.add(String.format("Destination: %s", node.getDownStreamPlanNodeId()));
+    return render(node, boxValue, context);
+  }
+
   private List<String> render(PlanNode node, List<String> nodeBoxString, GraphContext context) {
     Box box = new Box(nodeBoxString);
     List<List<String>> children = new ArrayList<>();
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/process/ExchangeNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/process/ExchangeNode.java
index fc408b5623..7b6753df24 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/process/ExchangeNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/process/ExchangeNode.java
@@ -25,6 +25,7 @@ import org.apache.iotdb.db.mpp.sql.planner.plan.PlanFragment;
 import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanNode;
 import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanNodeType;
+import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.mpp.sql.planner.plan.node.sink.FragmentSinkNode;
 import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
@@ -156,6 +157,11 @@ public class ExchangeNode extends PlanNode {
     return upstreamPlanNodeId;
   }
 
+  @Override
+  public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
+    return visitor.visitExchange(this, context);
+  }
+
   @Override
   public boolean equals(Object o) {
     if (this == o) {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/sink/FragmentSinkNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/sink/FragmentSinkNode.java
index 3c8f49637c..1f2ba29276 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/sink/FragmentSinkNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/sink/FragmentSinkNode.java
@@ -23,6 +23,7 @@ import org.apache.iotdb.db.mpp.common.FragmentInstanceId;
 import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanNode;
 import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanNodeType;
+import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import com.google.common.collect.ImmutableList;
@@ -149,6 +150,11 @@ public class FragmentSinkNode extends SinkNode {
     return downStreamPlanNodeId;
   }
 
+  @Override
+  public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
+    return visitor.visitFragmentSink(this, context);
+  }
+
   @Override
   public boolean equals(Object o) {
     if (this == o) {
diff --git a/server/src/test/java/org/apache/iotdb/db/mpp/sql/plan/DistributionPlannerTest.java b/server/src/test/java/org/apache/iotdb/db/mpp/sql/plan/DistributionPlannerTest.java
index 24b194e3b2..f68f1f8c36 100644
--- a/server/src/test/java/org/apache/iotdb/db/mpp/sql/plan/DistributionPlannerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/mpp/sql/plan/DistributionPlannerTest.java
@@ -34,6 +34,7 @@ import org.apache.iotdb.db.mpp.sql.analyze.Analysis;
 import org.apache.iotdb.db.mpp.sql.analyze.QueryType;
 import org.apache.iotdb.db.mpp.sql.planner.DistributionPlanner;
 import org.apache.iotdb.db.mpp.sql.planner.plan.DistributedQueryPlan;
+import org.apache.iotdb.db.mpp.sql.planner.plan.FragmentInstance;
 import org.apache.iotdb.db.mpp.sql.planner.plan.LogicalQueryPlan;
 import org.apache.iotdb.db.mpp.sql.planner.plan.SubPlan;
 import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanGraphPrinter;
@@ -161,7 +162,6 @@ public class DistributionPlannerTest {
         new DistributionPlanner(analysis, new LogicalQueryPlan(context, root));
     PlanNode rootAfterRewrite = planner.rewriteSource();
     PlanNode rootWithExchange = planner.addExchangeNode(rootAfterRewrite);
-    PlanGraphPrinter.print(rootWithExchange);
     SubPlan subPlan = planner.splitFragment(rootWithExchange);
     assertEquals(subPlan.getChildren().size(), 2);
   }
@@ -199,7 +199,6 @@ public class DistributionPlannerTest {
     DistributionPlanner planner =
         new DistributionPlanner(analysis, new LogicalQueryPlan(context, root));
     DistributedQueryPlan plan = planner.planFragments();
-    plan.getInstances().forEach(System.out::println);
     assertEquals(3, plan.getInstances().size());
   }