This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch ty/InnerTimeJoin
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/ty/InnerTimeJoin by this push:
     new a6693f3188b add visitor override
a6693f3188b is described below

commit a6693f3188bf2e1a99b49344e54eaea1597c8601
Author: JackieTien97 <[email protected]>
AuthorDate: Mon Jan 8 10:58:08 2024 +0800

    add visitor override
---
 .../plan/optimization/ColumnInjectionPushDown.java        |  8 ++++++++
 .../plan/optimization/LimitOffsetPushDown.java            | 15 +++++++++++++++
 2 files changed, 23 insertions(+)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/optimization/ColumnInjectionPushDown.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/optimization/ColumnInjectionPushDown.java
index b8cd9f43453..60282c8df36 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/optimization/ColumnInjectionPushDown.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/optimization/ColumnInjectionPushDown.java
@@ -28,6 +28,7 @@ import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.ColumnInje
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.MultiChildProcessNode;
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.SingleChildProcessNode;
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.SlidingWindowAggregationNode;
+import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.TwoChildProcessNode;
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.SeriesAggregationSourceNode;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
 import org.apache.iotdb.db.queryengine.plan.statement.crud.QueryStatement;
@@ -95,6 +96,13 @@ public class ColumnInjectionPushDown implements 
PlanOptimizer {
       return node;
     }
 
+    @Override
+    public PlanNode visitTwoChildProcess(TwoChildProcessNode node, Void 
context) {
+      node.setLeftChild(node.getLeftChild().accept(this, context));
+      node.setRightChild(node.getRightChild().accept(this, context));
+      return node;
+    }
+
     @Override
     public PlanNode visitColumnInject(ColumnInjectNode node, Void context) {
       PlanNode child = node.getChild();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/optimization/LimitOffsetPushDown.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/optimization/LimitOffsetPushDown.java
index dbb8d35d8e2..1b9bc0e35da 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/optimization/LimitOffsetPushDown.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/optimization/LimitOffsetPushDown.java
@@ -35,6 +35,8 @@ import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.OffsetNode
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.SingleChildProcessNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.SortNode;
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.TransformNode;
+import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.TwoChildProcessNode;
+import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.join.LeftOuterTimeJoinNode;
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.AlignedSeriesScanNode;
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.SeriesScanNode;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
@@ -177,6 +179,19 @@ public class LimitOffsetPushDown implements PlanOptimizer {
       return node;
     }
 
+    @Override
+    public PlanNode visitTwoChildProcess(TwoChildProcessNode node, 
RewriterContext context) {
+      context.setEnablePushDown(false);
+      return node;
+    }
+
+    @Override
+    public PlanNode visitLeftOuterTimeJoin(LeftOuterTimeJoinNode node, 
RewriterContext context) {
+      // TODO we may need to push limit and offset to left child
+      context.setEnablePushDown(false);
+      return node;
+    }
+
     @Override
     public PlanNode visitDeviceView(DeviceViewNode node, RewriterContext 
context) {
       if (node.getChildren().size() == 1) {

Reply via email to