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);
+  }
 }

Reply via email to