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
commit 8785e5bf41c524f0d10e99f753c223b9ee4b337d Author: JackieTien97 <[email protected]> AuthorDate: Thu May 30 11:01:52 2024 +0800 Add StreamSortNode and add field for TableScanNode --- .../process/relational/StreamSortOperator.java | 1 - .../plan/planner/plan/node/PlanVisitor.java | 5 ++ .../relational/planner/node/StreamSortNode.java | 63 ++++++++++++++++++++++ .../relational/planner/node/TableScanNode.java | 6 +++ 4 files changed, 74 insertions(+), 1 deletion(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/relational/StreamSortOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/relational/StreamSortOperator.java index 9c4d65bc12d..e34112c2903 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/relational/StreamSortOperator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/relational/StreamSortOperator.java @@ -79,7 +79,6 @@ public class StreamSortOperator implements ProcessOperator { private List<SortReader> sortReaders; private boolean[] noMoreData; - private final int maxReturnSize = TSFileDescriptor.getInstance().getConfig().getMaxTsBlockSizeInBytes(); 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 91f695c7348..c6831331651 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 @@ -575,6 +575,11 @@ public abstract class PlanVisitor<R, C> { return visitPlan(node, context); } + public R visitStreamSort( + org.apache.iotdb.db.queryengine.plan.relational.planner.node.StreamSortNode node, C context) { + return visitPlan(node, context); + } + public R visitTopK( org.apache.iotdb.db.queryengine.plan.relational.planner.node.TopKNode node, C context) { return visitPlan(node, context); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/StreamSortNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/StreamSortNode.java new file mode 100644 index 00000000000..f90a02df4ea --- /dev/null +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/StreamSortNode.java @@ -0,0 +1,63 @@ +/* + * 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.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.PlanVisitor; +import org.apache.iotdb.db.queryengine.plan.relational.planner.OrderingScheme; + +import java.io.DataOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; + +public class StreamSortNode extends SortNode { + + private final int streamCompareKeyEndIndex; + + public StreamSortNode( + PlanNodeId id, + PlanNode child, + OrderingScheme scheme, + boolean partial, + int streamCompareKeyEndIndex) { + super(id, child, scheme, partial); + this.streamCompareKeyEndIndex = streamCompareKeyEndIndex; + } + + public int getStreamCompareKeyEndIndex() { + return streamCompareKeyEndIndex; + } + + @Override + public <R, C> R accept(PlanVisitor<R, C> visitor, C context) { + return visitor.visitStreamSort(this, context); + } + + @Override + protected void serializeAttributes(ByteBuffer byteBuffer) {} + + @Override + protected void serializeAttributes(DataOutputStream stream) throws IOException {} + + public static SortNode deserialize(ByteBuffer byteBuffer) { + return null; + } +} diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/TableScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/TableScanNode.java index bbead688b12..33dfa3e04bc 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/TableScanNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/TableScanNode.java @@ -65,6 +65,8 @@ public class TableScanNode extends SourceNode { // push down offset for result set. The default value is 0 private long pushDownOffset; + private boolean pushLimitToEachDevice = false; + // The id of DataRegion where the node will run private TRegionReplicaSet regionReplicaSet; @@ -310,6 +312,10 @@ public class TableScanNode extends SourceNode { return this.pushDownOffset; } + public boolean isPushLimitToEachDevice() { + return pushLimitToEachDevice; + } + public TRegionReplicaSet getRegionReplicaSet() { return this.regionReplicaSet; }
