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) {