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

JackieTien97 pushed a commit to branch codex/backport-pr-18179-dev-1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit e72ab8523ea0d369e4787e7da4794c6e7ac1c000
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 ab81236e9ab..973b3553c78 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
@@ -284,6 +284,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());
 
@@ -575,6 +578,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;
@@ -591,6 +596,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 6d36d4fd64e..39055f716d6 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
@@ -86,6 +86,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
@@ -258,6 +262,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