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; }
