You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ca...@apache.org on 2025/02/10 07:51:13 UTC

(iotdb) 02/02: fix asof plan

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

caogaofei pushed a commit to branch asof_join
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 1be000021af8073df549031e2f7b6a1f4b432ba7
Author: Beyyes <cg...@foxmail.com>
AuthorDate: Mon Feb 10 15:50:55 2025 +0800

    fix asof plan
---
 .../db/queryengine/plan/relational/analyzer/Analysis.java      | 10 +++++++---
 .../plan/relational/analyzer/StatementAnalyzer.java            |  2 +-
 .../queryengine/plan/relational/planner/RelationPlanner.java   |  7 +++++--
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analysis.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analysis.java
index dc2d47b72cc..90a5f5a4439 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analysis.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analysis.java
@@ -547,12 +547,16 @@ public class Analysis implements IAnalysis {
     joins.put(NodeRef.of(node), criteria);
   }
 
-  public void setAsofJoinCriteria(Join node, List<LongLiteral> tolerance) {
+  public Expression getJoinCriteria(Join join) {
+    return joins.get(NodeRef.of(join));
+  }
+
+  public void setAsofJoinTolerance(Join node, List<LongLiteral> tolerance) {
     asofJoinTolerances.put(NodeRef.of(node), tolerance);
   }
 
-  public Expression getJoinCriteria(Join join) {
-    return joins.get(NodeRef.of(join));
+  public List<LongLiteral> getAsofJoinTolerance(Join node) {
+    return asofJoinTolerances.get(NodeRef.of(node));
   }
 
   public boolean hasJoinNode() {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/StatementAnalyzer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/StatementAnalyzer.java
index 22b2ff0c265..62d47e55e2d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/StatementAnalyzer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/StatementAnalyzer.java
@@ -2116,7 +2116,7 @@ public class StatementAnalyzer {
         analysis.recordSubqueries(node, expressionAnalysis);
         analysis.setJoinCriteria(node, expression);
         if (criteria instanceof AsofJoinOn) {
-          analysis.setAsofJoinCriteria(node, ((AsofJoinOn) criteria).getToleranceValue());
+          analysis.setAsofJoinTolerance(node, ((AsofJoinOn) criteria).getToleranceValue());
         }
       } else {
         throw new UnsupportedOperationException(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationPlanner.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationPlanner.java
index cec65c2d66a..8e45344ef46 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationPlanner.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationPlanner.java
@@ -68,6 +68,7 @@ import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Join;
 import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.JoinUsing;
 import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.LoadTsFile;
 import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.LogicalExpression;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.LongLiteral;
 import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Node;
 import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PipeEnriched;
 import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.QualifiedName;
@@ -277,7 +278,8 @@ public class RelationPlanner extends AstVisitor<RelationPlan, Void> {
         analysis.getScope(node),
         leftPlan,
         rightPlan,
-        analysis.getSubqueries(node));
+        analysis.getSubqueries(node),
+        analysis.getAsofJoinTolerance(node));
   }
 
   private RelationPlan planJoinUsing(Join node, RelationPlan left, RelationPlan right) {
@@ -407,7 +409,8 @@ public class RelationPlanner extends AstVisitor<RelationPlan, Void> {
       Scope scope,
       RelationPlan leftPlan,
       RelationPlan rightPlan,
-      Analysis.SubqueryAnalysis subqueries) {
+      Analysis.SubqueryAnalysis subqueries,
+      List<LongLiteral> asofJoinTolerance) {
     // NOTE: symbols must be in the same order as the outputDescriptor
     List<Symbol> outputSymbols =
         ImmutableList.<Symbol>builder()