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
