This is an automated email from the ASF dual-hosted git repository. hui pushed a commit to branch lmh/planOpt in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit a43c323e0671ccc7df3a3d2479abd50c959cec1f Author: Minghui Liu <[email protected]> AuthorDate: Mon Oct 31 10:38:44 2022 +0800 fix --- .../apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java index 74b2b9b5c5..493b6814ca 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java @@ -287,21 +287,24 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext> Filter globalTimeFilter = null; boolean hasValueFilter = false; if (queryStatement.getWhereCondition() != null) { - Expression predicate = queryStatement.getWhereCondition().getPredicate(); WhereCondition whereCondition = queryStatement.getWhereCondition(); + Expression predicate = whereCondition.getPredicate(); + Pair<Filter, Boolean> resultPair = ExpressionAnalyzer.extractGlobalTimeFilter(predicate, true, true); + globalTimeFilter = resultPair.left; + hasValueFilter = resultPair.right; + predicate = ExpressionAnalyzer.evaluatePredicate(predicate); - // set where condition to null if predicate is true - if (predicate.getExpressionType().equals(ExpressionType.CONSTANT) - && Boolean.parseBoolean(predicate.getExpressionString())) { + // set where condition to null if predicate is true or time filter. + if (!hasValueFilter + || (predicate.getExpressionType().equals(ExpressionType.CONSTANT) + && Boolean.parseBoolean(predicate.getExpressionString()))) { queryStatement.setWhereCondition(null); } else { whereCondition.setPredicate(predicate); } - globalTimeFilter = resultPair.left; - hasValueFilter = resultPair.right; } if (queryStatement.isGroupByTime()) { GroupByTimeComponent groupByTimeComponent = queryStatement.getGroupByTimeComponent();
