You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by hu...@apache.org on 2022/10/31 02:46:39 UTC
[iotdb] 03/03: Revert "Revert "fix""
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 8c6b1bfa438127692732a253be0cf5f957af1f54
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Mon Oct 31 10:45:59 2022 +0800
Revert "Revert "fix""
This reverts commit 68636cf898811f3ae8bd3466f509406b30822649.
---
.../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();