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

caogaofei pushed a commit to branch new-table-model-debug
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit efed07dd5b3d6bd40448811ec360d608047ddca6
Author: Beyyes <[email protected]>
AuthorDate: Wed May 22 16:58:51 2024 +0800

    add serialize method for Limit, Offset, ProjectNode
---
 .../plan/relational/planner/node/FilterNode.java   |  5 +++-
 .../plan/relational/planner/node/LimitNode.java    | 16 ++++++++---
 .../plan/relational/planner/node/OffsetNode.java   | 16 ++++++++---
 .../plan/relational/planner/node/ProjectNode.java  | 31 +++++++++++++++++++---
 4 files changed, 58 insertions(+), 10 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/FilterNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/FilterNode.java
index 04744b552f7..d22a3bd3998 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/FilterNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/FilterNode.java
@@ -56,7 +56,10 @@ public class FilterNode extends SingleChildProcessNode {
   }
 
   @Override
-  protected void serializeAttributes(ByteBuffer byteBuffer) {}
+  protected void serializeAttributes(ByteBuffer byteBuffer) {
+    PlanNodeType.TABLE_FILTER_NODE.serialize(byteBuffer);
+    Expression.serialize(predicate, byteBuffer);
+  }
 
   @Override
   protected void serializeAttributes(DataOutputStream stream) throws 
IOException {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/LimitNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/LimitNode.java
index e73519c2c17..f9cb16b3123 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/LimitNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/LimitNode.java
@@ -16,10 +16,12 @@ 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.SingleChildProcessNode;
 import org.apache.iotdb.db.queryengine.plan.relational.planner.OrderingScheme;
 import org.apache.iotdb.db.queryengine.plan.relational.planner.Symbol;
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
@@ -57,13 +59,21 @@ public class LimitNode extends SingleChildProcessNode {
   }
 
   @Override
-  protected void serializeAttributes(ByteBuffer byteBuffer) {}
+  protected void serializeAttributes(ByteBuffer byteBuffer) {
+    PlanNodeType.TABLE_LIMIT_NODE.serialize(byteBuffer);
+    ReadWriteIOUtils.write(count, byteBuffer);
+  }
 
   @Override
-  protected void serializeAttributes(DataOutputStream stream) throws 
IOException {}
+  protected void serializeAttributes(DataOutputStream stream) throws 
IOException {
+    PlanNodeType.TABLE_LIMIT_NODE.serialize(stream);
+    ReadWriteIOUtils.write(count, stream);
+  }
 
   public static LimitNode deserialize(ByteBuffer byteBuffer) {
-    return null;
+    long count = ReadWriteIOUtils.read(byteBuffer);
+    PlanNodeId planNodeId = PlanNodeId.deserialize(byteBuffer);
+    return new LimitNode(planNodeId, null, count, null);
   }
 
   @Override
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/OffsetNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/OffsetNode.java
index a491f02d874..c16e66f1f32 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/OffsetNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/OffsetNode.java
@@ -16,9 +16,11 @@ 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.SingleChildProcessNode;
 import org.apache.iotdb.db.queryengine.plan.relational.planner.Symbol;
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
@@ -49,13 +51,21 @@ public class OffsetNode extends SingleChildProcessNode {
   }
 
   @Override
-  protected void serializeAttributes(ByteBuffer byteBuffer) {}
+  protected void serializeAttributes(ByteBuffer byteBuffer) {
+    PlanNodeType.TABLE_OFFSET_NODE.serialize(byteBuffer);
+    ReadWriteIOUtils.write(count, byteBuffer);
+  }
 
   @Override
-  protected void serializeAttributes(DataOutputStream stream) throws 
IOException {}
+  protected void serializeAttributes(DataOutputStream stream) throws 
IOException {
+    PlanNodeType.TABLE_OFFSET_NODE.serialize(stream);
+    ReadWriteIOUtils.write(count, stream);
+  }
 
   public static OffsetNode deserialize(ByteBuffer byteBuffer) {
-    return null;
+    long count = ReadWriteIOUtils.read(byteBuffer);
+    PlanNodeId planNodeId = PlanNodeId.deserialize(byteBuffer);
+    return new OffsetNode(planNodeId, null, count);
   }
 
   @Override
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/ProjectNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/ProjectNode.java
index 5465979bd56..d86fc346234 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/ProjectNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/ProjectNode.java
@@ -16,15 +16,20 @@ 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.SingleChildProcessNode;
 import org.apache.iotdb.db.queryengine.plan.relational.planner.Assignments;
 import org.apache.iotdb.db.queryengine.plan.relational.planner.Symbol;
+import org.apache.iotdb.db.relational.sql.tree.Expression;
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.nio.ByteBuffer;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 public class ProjectNode extends SingleChildProcessNode {
   private final Assignments assignments;
@@ -54,13 +59,33 @@ public class ProjectNode extends SingleChildProcessNode {
   }
 
   @Override
-  protected void serializeAttributes(ByteBuffer byteBuffer) {}
+  protected void serializeAttributes(ByteBuffer byteBuffer) {
+    PlanNodeType.TABLE_PROJECT_NODE.serialize(byteBuffer);
+    ReadWriteIOUtils.write(assignments.getMap().size(), byteBuffer);
+    for (Map.Entry<Symbol, Expression> entry : 
assignments.getMap().entrySet()) {
+      Symbol.serialize(entry.getKey(), byteBuffer);
+      Expression.serialize(entry.getValue(), byteBuffer);
+    }
+  }
 
   @Override
-  protected void serializeAttributes(DataOutputStream stream) throws 
IOException {}
+  protected void serializeAttributes(DataOutputStream stream) throws 
IOException {
+    PlanNodeType.TABLE_PROJECT_NODE.serialize(stream);
+    ReadWriteIOUtils.write(assignments.getMap().size(), stream);
+    for (Map.Entry<Symbol, Expression> entry : 
assignments.getMap().entrySet()) {
+      Symbol.serialize(entry.getKey(), stream);
+      Expression.serialize(entry.getValue(), stream);
+    }
+  }
 
   public static ProjectNode deserialize(ByteBuffer byteBuffer) {
-    return null;
+    int size = ReadWriteIOUtils.readInt(byteBuffer);
+    Map<Symbol, Expression> map = new HashMap<>(size);
+    while (size-- > 0) {
+      map.put(Symbol.deserialize(byteBuffer), 
Expression.deserialize(byteBuffer));
+    }
+    PlanNodeId planNodeId = PlanNodeId.deserialize(byteBuffer);
+    return new ProjectNode(planNodeId, null, new Assignments(map));
   }
 
   @Override

Reply via email to