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
The following commit(s) were added to refs/heads/ty/TableModelGrammar by this
push:
new 7d49f61b5b8 Add TableOperatorGenerator
new 9e7a196e8ee Merge branch 'ty/TableModelGrammar' of
https://github.com/apache/iotdb into ty/TableModelGrammar
7d49f61b5b8 is described below
commit 7d49f61b5b8a7ea762da0502759462da851871f1
Author: JackieTien97 <[email protected]>
AuthorDate: Tue Apr 16 10:56:46 2024 +0800
Add TableOperatorGenerator
---
.../plan/planner/TableOperatorGenerator.java | 87 ++++++++++++++++++++++
.../plan/planner/plan/node/PlanVisitor.java | 30 ++++++++
2 files changed, 117 insertions(+)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java
new file mode 100644
index 00000000000..9899ce6922e
--- /dev/null
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java
@@ -0,0 +1,87 @@
+/*
+ * 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.planner;
+
+import org.apache.iotdb.db.queryengine.execution.operator.Operator;
+import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
+import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
+import org.apache.iotdb.db.queryengine.plan.relational.planner.node.FilterNode;
+import org.apache.iotdb.db.queryengine.plan.relational.planner.node.LimitNode;
+import
org.apache.iotdb.db.queryengine.plan.relational.planner.node.MergeSortNode;
+import org.apache.iotdb.db.queryengine.plan.relational.planner.node.OffsetNode;
+import org.apache.iotdb.db.queryengine.plan.relational.planner.node.OutputNode;
+import
org.apache.iotdb.db.queryengine.plan.relational.planner.node.ProjectNode;
+import org.apache.iotdb.db.queryengine.plan.relational.planner.node.SortNode;
+import
org.apache.iotdb.db.queryengine.plan.relational.planner.node.TableScanNode;
+import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TopKNode;
+
+/** This Visitor is responsible for transferring Table PlanNode Tree to Table
Operator Tree. */
+public class TableOperatorGenerator extends PlanVisitor<Operator,
LocalExecutionPlanContext> {
+
+ @Override
+ public Operator visitPlan(PlanNode node, LocalExecutionPlanContext context) {
+ throw new UnsupportedOperationException("should call the concrete
visitXX() method");
+ }
+
+ @Override
+ public Operator visitTableScan(TableScanNode node, LocalExecutionPlanContext
context) {
+ return super.visitTableScan(node, context);
+ }
+
+ @Override
+ public Operator visitFilter(FilterNode node, LocalExecutionPlanContext
context) {
+ return super.visitFilter(node, context);
+ }
+
+ @Override
+ public Operator visitProject(ProjectNode node, LocalExecutionPlanContext
context) {
+ return super.visitProject(node, context);
+ }
+
+ @Override
+ public Operator visitLimit(LimitNode node, LocalExecutionPlanContext
context) {
+ return super.visitLimit(node, context);
+ }
+
+ @Override
+ public Operator visitOffset(OffsetNode node, LocalExecutionPlanContext
context) {
+ return super.visitOffset(node, context);
+ }
+
+ @Override
+ public Operator visitMergeSort(MergeSortNode node, LocalExecutionPlanContext
context) {
+ return super.visitMergeSort(node, context);
+ }
+
+ @Override
+ public Operator visitOutput(OutputNode node, LocalExecutionPlanContext
context) {
+ return super.visitOutput(node, context);
+ }
+
+ @Override
+ public Operator visitSort(SortNode node, LocalExecutionPlanContext context) {
+ return super.visitSort(node, context);
+ }
+
+ @Override
+ public Operator visitTopK(TopKNode node, LocalExecutionPlanContext context) {
+ return super.visitTopK(node, context);
+ }
+}
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 393f46a43ba..a9ce391d353 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
@@ -523,4 +523,34 @@ public abstract class PlanVisitor<R, C> {
org.apache.iotdb.db.queryengine.plan.relational.planner.node.ProjectNode
node, C context) {
return visitPlan(node, context);
}
+
+ public R visitLimit(
+ org.apache.iotdb.db.queryengine.plan.relational.planner.node.LimitNode
node, C context) {
+ return visitPlan(node, context);
+ }
+
+ public R visitOffset(
+ org.apache.iotdb.db.queryengine.plan.relational.planner.node.OffsetNode
node, C context) {
+ return visitPlan(node, context);
+ }
+
+ public R visitMergeSort(
+
org.apache.iotdb.db.queryengine.plan.relational.planner.node.MergeSortNode
node, C context) {
+ return visitPlan(node, context);
+ }
+
+ public R visitOutput(
+ org.apache.iotdb.db.queryengine.plan.relational.planner.node.OutputNode
node, C context) {
+ return visitPlan(node, context);
+ }
+
+ public R visitSort(
+ org.apache.iotdb.db.queryengine.plan.relational.planner.node.SortNode
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);
+ }
}