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

JackieTien97 pushed a commit to branch fix-retry-bug
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 36240de2076de06774491ce8c8f15ef9d396a276
Author: JackieTien97 <[email protected]>
AuthorDate: Thu Jul 9 22:56:38 2026 +0800

    Fix retry bug in tree model query which ignore the time filter
---
 .../iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java  |  7 +++++++
 .../db/queryengine/plan/statement/crud/QueryStatement.java | 14 ++++++++++++++
 2 files changed, 21 insertions(+)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
index d8f1781bdaf..28fb15bad6a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
@@ -275,6 +275,9 @@ public class AnalyzeVisitor extends 
StatementVisitor<Analysis, MPPQueryContext>
 
   @Override
   public Analysis visitQuery(QueryStatement queryStatement, MPPQueryContext 
context) {
+    // used for retry
+    queryStatement.setWhereConditionBackToOriginal();
+
     Analysis analysis = new Analysis();
     analysis.setLastLevelUseWildcard(queryStatement.isLastLevelUseWildcard());
 
@@ -524,6 +527,8 @@ public class AnalyzeVisitor extends 
StatementVisitor<Analysis, MPPQueryContext>
       WhereCondition whereCondition = queryStatement.getWhereCondition();
       Expression predicate = whereCondition.getPredicate();
 
+      WhereCondition originalWhereCondition = new WhereCondition(predicate);
+
       Pair<Expression, Boolean> resultPair =
           PredicateUtils.extractGlobalTimePredicate(predicate, true, true);
       globalTimePredicate = resultPair.left;
@@ -540,6 +545,8 @@ public class AnalyzeVisitor extends 
StatementVisitor<Analysis, MPPQueryContext>
       } else {
         whereCondition.setPredicate(predicate);
       }
+
+      queryStatement.setOriginalWhereCondition(originalWhereCondition);
     }
     analysis.setGlobalTimePredicate(globalTimePredicate);
     analysis.setHasValueFilter(hasValueFilter);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/QueryStatement.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/QueryStatement.java
index 8c199f6c19c..151bd6b9660 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/QueryStatement.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/QueryStatement.java
@@ -82,6 +82,10 @@ public class QueryStatement extends 
AuthorityInformationStatement {
   private SelectComponent selectComponent;
   private FromComponent fromComponent;
   private WhereCondition whereCondition;
+
+  // used for retry
+  private WhereCondition originalWhereCondition;
+
   private HavingCondition havingCondition;
 
   // row limit for result set. The default value is 0, which means no limit
@@ -241,6 +245,16 @@ public class QueryStatement extends 
AuthorityInformationStatement {
     this.whereCondition = whereCondition;
   }
 
+  public void setWhereConditionBackToOriginal() {
+    if (originalWhereCondition != null) {
+      this.whereCondition = originalWhereCondition;
+    }
+  }
+
+  public void setOriginalWhereCondition(WhereCondition originalWhereCondition) 
{
+    this.originalWhereCondition = originalWhereCondition;
+  }
+
   public boolean hasHaving() {
     return havingCondition != null;
   }

Reply via email to