This is an automated email from the ASF dual-hosted git repository. xingtanzjr pushed a commit to branch xingtanzjr/align_by_device_distribution in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 3ca56219823e537eafeb8c40541618a8139cea17 Author: Jinrui.Zhang <[email protected]> AuthorDate: Fri May 27 18:04:26 2022 +0800 complete ExchangeNode Adder --- .../planner/distribution/ExchangeNodeAdder.java | 12 +++++++ .../planner/plan/node/process/DeviceMergeNode.java | 2 +- .../planner/plan/node/process/DeviceViewNode.java | 2 +- .../plan/distribution/AlignedByDeviceTest.java | 37 ++++++++++++++++++++++ 4 files changed, 51 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/ExchangeNodeAdder.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/ExchangeNodeAdder.java index 6c502c464f..d3e8a9385b 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/ExchangeNodeAdder.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/distribution/ExchangeNodeAdder.java @@ -31,6 +31,8 @@ import org.apache.iotdb.db.mpp.plan.planner.plan.node.metedata.read.SchemaQueryM import org.apache.iotdb.db.mpp.plan.planner.plan.node.metedata.read.SchemaQueryScanNode; import org.apache.iotdb.db.mpp.plan.planner.plan.node.metedata.write.DeleteTimeSeriesNode; import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.AggregationNode; +import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.DeviceMergeNode; +import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.DeviceViewNode; import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.ExchangeNode; import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.GroupByLevelNode; import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.LastQueryMergeNode; @@ -197,6 +199,16 @@ public class ExchangeNodeAdder extends PlanVisitor<PlanNode, NodeGroupContext> { return node; } + @Override + public PlanNode visitDeviceView(DeviceViewNode node, NodeGroupContext context) { + return processMultiChildNode(node, context); + } + + @Override + public PlanNode visitDeviceMerge(DeviceMergeNode node, NodeGroupContext context) { + return processMultiChildNode(node, context); + } + @Override public PlanNode visitLastQueryMerge(LastQueryMergeNode node, NodeGroupContext context) { return processMultiChildNode(node, context); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/DeviceMergeNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/DeviceMergeNode.java index 613277bd67..d8456f4968 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/DeviceMergeNode.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/DeviceMergeNode.java @@ -32,7 +32,7 @@ import java.util.List; import java.util.Objects; import java.util.stream.Collectors; -public class DeviceMergeNode extends ProcessNode { +public class DeviceMergeNode extends MultiChildNode { // The result output order, which could sort by device and time. // The size of this list is 2 and the first OrderBy in this list has higher priority. diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/DeviceViewNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/DeviceViewNode.java index 589e666297..be26f899d2 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/DeviceViewNode.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/DeviceViewNode.java @@ -40,7 +40,7 @@ import java.util.Objects; * same between these TsBlocks. If the input TsBlock contains n columns, the device-based view will * contain n+1 columns where the new column is Device column. */ -public class DeviceViewNode extends ProcessNode { +public class DeviceViewNode extends MultiChildNode { // The result output order, which could sort by device and time. // The size of this list is 2 and the first OrderBy in this list has higher priority. diff --git a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/distribution/AlignedByDeviceTest.java b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/distribution/AlignedByDeviceTest.java new file mode 100644 index 0000000000..f10817ab8a --- /dev/null +++ b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/distribution/AlignedByDeviceTest.java @@ -0,0 +1,37 @@ +/* + * 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.mpp.plan.plan.distribution; + +import org.apache.iotdb.db.mpp.plan.planner.plan.LogicalQueryPlan; +import org.junit.Test; + +import java.util.List; + +public class AlignedByDeviceTest { + + @Test + public void test1Device1Region() { + + } + + private LogicalQueryPlan constructLogicalPlan(List<String> series) { + return null; + } +}
