This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch ty/TableModelGrammar
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/ty/TableModelGrammar by this
push:
new 751420c9eb9 Add collect node for table model (#12845)
751420c9eb9 is described below
commit 751420c9eb9b9ead15cdafb221d57d898a34b5a2
Author: Beyyes <[email protected]>
AuthorDate: Wed Jul 3 15:47:37 2024 +0800
Add collect node for table model (#12845)
---
.../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;
}