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