This is an automated email from the ASF dual-hosted git repository. hui pushed a commit to branch lmh/addJoinNode in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 467a09bc86ed1f547868e29f8cd3504b88215f9a Author: Minghui Liu <[email protected]> AuthorDate: Wed Dec 20 11:29:35 2023 +0800 add serde UT --- .../plan/planner/plan/node/PlanNodeType.java | 3 + .../process/FullOuterTimeJoinNodeSerdeTest.java | 68 ------------- .../plan/node/process/TimeJoinNodeSerdeTest.java | 106 +++++++++++++++++++++ 3 files changed, 109 insertions(+), 68 deletions(-) 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 17e9af3c9a4..d5e1ca7124d 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 @@ -83,6 +83,7 @@ import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.TopKNode; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.TransformNode; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.join.FullOuterTimeJoinNode; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.join.InnerTimeJoinNode; +import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.join.LeftOuterTimeJoinNode; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.last.LastQueryCollectNode; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.last.LastQueryMergeNode; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.last.LastQueryNode; @@ -422,6 +423,8 @@ public enum PlanNodeType { return PipeEnrichedConfigSchemaNode.deserialize(buffer); case 87: return InnerTimeJoinNode.deserialize(buffer); + case 88: + return LeftOuterTimeJoinNode.deserialize(buffer); default: throw new IllegalArgumentException("Invalid node type: " + nodeType); } diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/plan/node/process/FullOuterTimeJoinNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/plan/node/process/FullOuterTimeJoinNodeSerdeTest.java deleted file mode 100644 index b48d4072f74..00000000000 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/plan/node/process/FullOuterTimeJoinNodeSerdeTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.iotdb.db.queryengine.plan.plan.node.process; - -import org.apache.iotdb.commons.exception.IllegalPathException; -import org.apache.iotdb.commons.path.MeasurementPath; -import org.apache.iotdb.db.queryengine.plan.plan.node.PlanNodeDeserializeHelper; -import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId; -import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.join.FullOuterTimeJoinNode; -import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.SeriesScanNode; -import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering; -import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; - -import org.junit.Test; - -import java.nio.ByteBuffer; - -import static org.junit.Assert.assertEquals; - -public class FullOuterTimeJoinNodeSerdeTest { - @Test - public void testSerializeAndDeserialize() throws IllegalPathException { - SeriesScanNode seriesScanNode1 = - new SeriesScanNode( - new PlanNodeId("TestSeriesScanNode"), - new MeasurementPath("root.sg.d1.s1", TSDataType.INT32), - Ordering.DESC, - null, - 100, - 100, - null); - SeriesScanNode seriesScanNode2 = - new SeriesScanNode( - new PlanNodeId("TestSeriesScanNode"), - new MeasurementPath("root.sg.d1.s2", TSDataType.INT32), - Ordering.DESC, - null, - 100, - 100, - null); - - FullOuterTimeJoinNode fullOuterTimeJoinNode = - new FullOuterTimeJoinNode(new PlanNodeId("TestTimeJoinNode"), Ordering.ASC); - fullOuterTimeJoinNode.addChild(seriesScanNode1); - fullOuterTimeJoinNode.addChild(seriesScanNode2); - - ByteBuffer byteBuffer = ByteBuffer.allocate(2048); - fullOuterTimeJoinNode.serialize(byteBuffer); - byteBuffer.flip(); - assertEquals(PlanNodeDeserializeHelper.deserialize(byteBuffer), fullOuterTimeJoinNode); - } -} diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/plan/node/process/TimeJoinNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/plan/node/process/TimeJoinNodeSerdeTest.java new file mode 100644 index 00000000000..0918cbe664b --- /dev/null +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/plan/node/process/TimeJoinNodeSerdeTest.java @@ -0,0 +1,106 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.iotdb.db.queryengine.plan.plan.node.process; + +import org.apache.iotdb.commons.exception.IllegalPathException; +import org.apache.iotdb.commons.path.MeasurementPath; +import org.apache.iotdb.db.queryengine.plan.plan.node.PlanNodeDeserializeHelper; +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.process.join.FullOuterTimeJoinNode; +import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.join.InnerTimeJoinNode; +import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.join.LeftOuterTimeJoinNode; +import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.SeriesScanNode; +import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering; +import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; + +import org.junit.Assert; +import org.junit.Test; + +import java.nio.ByteBuffer; + +import static org.junit.Assert.assertEquals; + +public class TimeJoinNodeSerdeTest { + + private static SeriesScanNode seriesScanNode1; + private static SeriesScanNode seriesScanNode2; + + static { + try { + seriesScanNode1 = + new SeriesScanNode( + new PlanNodeId("TestSeriesScanNode"), + new MeasurementPath("root.sg.d1.s1", TSDataType.INT32), + Ordering.DESC, + null, + 100, + 100, + null); + seriesScanNode2 = + new SeriesScanNode( + new PlanNodeId("TestSeriesScanNode"), + new MeasurementPath("root.sg.d1.s2", TSDataType.INT32), + Ordering.DESC, + null, + 100, + 100, + null); + } catch (IllegalPathException e) { + Assert.fail(e.getMessage()); + } + } + + @Test + public void testSerializeAndDeserializeFullOuterTimeJoin() throws IllegalPathException { + FullOuterTimeJoinNode fullOuterTimeJoinNode = + new FullOuterTimeJoinNode(new PlanNodeId("TestFullOuterTimeJoinNode"), Ordering.ASC); + fullOuterTimeJoinNode.addChild(seriesScanNode1); + fullOuterTimeJoinNode.addChild(seriesScanNode2); + + testSerde(fullOuterTimeJoinNode); + } + + @Test + public void testSerializeAndDeserializeInnerTimeJoin() throws IllegalPathException { + InnerTimeJoinNode innerTimeJoinNode = + new InnerTimeJoinNode(new PlanNodeId("TestInnerTimeJoinNode"), Ordering.ASC); + innerTimeJoinNode.addChild(seriesScanNode1); + innerTimeJoinNode.addChild(seriesScanNode2); + + testSerde(innerTimeJoinNode); + } + + @Test + public void testSerializeAndDeserializeLeftOuterTimeJoin() throws IllegalPathException { + LeftOuterTimeJoinNode leftOuterTimeJoinNode = + new LeftOuterTimeJoinNode(new PlanNodeId("TestLeftOuterTimeJoinNode"), Ordering.ASC); + leftOuterTimeJoinNode.addChild(seriesScanNode1); + leftOuterTimeJoinNode.addChild(seriesScanNode2); + + testSerde(leftOuterTimeJoinNode); + } + + private void testSerde(PlanNode node) throws IllegalPathException { + ByteBuffer byteBuffer = ByteBuffer.allocate(2048); + node.serialize(byteBuffer); + byteBuffer.flip(); + assertEquals(PlanNodeDeserializeHelper.deserialize(byteBuffer), node); + } +}
