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

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

commit cd27e917932cf81da144c7d9b28f266930504d61
Author: Beyyes <[email protected]>
AuthorDate: Wed Jul 3 15:43:27 2024 +0800

    add CollectNode
---
 .../plan/planner/plan/node/PlanNodeType.java       |  3 +-
 .../plan/planner/plan/node/PlanVisitor.java        |  5 ++
 .../plan/relational/planner/node/CollectNode.java  | 56 ++++++++++++++++++++++
 .../plan/relational/planner/node/OutputNode.java   |  1 +
 4 files changed, 64 insertions(+), 1 deletion(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeType.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeType.java
index 929775f88e1..589d6206950 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeType.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeType.java
@@ -238,7 +238,8 @@ public enum PlanNodeType {
   TABLE_OFFSET_NODE((short) 1005),
   TABLE_SORT_NODE((short) 1006),
   TABLE_MERGESORT_NODE((short) 1007),
-  TABLE_TOPK_NODE((short) 1008);
+  TABLE_TOPK_NODE((short) 1008),
+  TABLE_COLLECT_NODE((short) 1009);
 
   public static final int BYTES = Short.BYTES;
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanVisitor.java
index cfd760bb7ba..aea1264e0a1 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanVisitor.java
@@ -589,6 +589,11 @@ public abstract class PlanVisitor<R, C> {
     return visitSingleChildProcess(node, context);
   }
 
+  public R visitCollect(
+      org.apache.iotdb.db.queryengine.plan.relational.planner.node.CollectNode 
node, C context) {
+    return visitMultiChildProcess(node, context);
+  }
+
   public R visitSort(
       org.apache.iotdb.db.queryengine.plan.relational.planner.node.SortNode 
node, C context) {
     return visitSingleChildProcess(node, context);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/CollectNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/CollectNode.java
new file mode 100644
index 00000000000..87d3ce34afa
--- /dev/null
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/CollectNode.java
@@ -0,0 +1,56 @@
+package org.apache.iotdb.db.queryengine.plan.relational.planner.node;
+
+import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
+import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
+import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
+import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
+import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.MultiChildProcessNode;
+import org.apache.iotdb.db.queryengine.plan.relational.planner.Symbol;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.List;
+
+/** CollectNode output the content of children. */
+public class CollectNode extends MultiChildProcessNode {
+
+  public CollectNode(PlanNodeId id) {
+    super(id);
+  }
+
+  @Override
+  public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
+    return visitor.visitCollect(this, context);
+  }
+
+  @Override
+  public PlanNode clone() {
+    return new CollectNode(id);
+  }
+
+  @Override
+  public List<Symbol> getOutputSymbols() {
+    return children.get(0).getOutputSymbols();
+  }
+
+  @Override
+  public List<String> getOutputColumnNames() {
+    throw new UnsupportedOperationException();
+  }
+
+  @Override
+  protected void serializeAttributes(ByteBuffer byteBuffer) {
+    PlanNodeType.TABLE_COLLECT_NODE.serialize(byteBuffer);
+  }
+
+  @Override
+  protected void serializeAttributes(DataOutputStream stream) throws 
IOException {
+    PlanNodeType.TABLE_COLLECT_NODE.serialize(stream);
+  }
+
+  public static CollectNode deserialize(ByteBuffer byteBuffer) {
+    PlanNodeId planNodeId = PlanNodeId.deserialize(byteBuffer);
+    return new CollectNode(planNodeId);
+  }
+}
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/OutputNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/OutputNode.java
index 6a707a30000..da8105d741e 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/OutputNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/OutputNode.java
@@ -108,6 +108,7 @@ public class OutputNode extends SingleChildProcessNode {
     return this.columnNames;
   }
 
+  @Override
   public List<Symbol> getOutputSymbols() {
     return outputs;
   }

Reply via email to