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