This is an automated email from the ASF dual-hosted git repository.
rong pushed a commit to branch iotdb-1022-v2
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/iotdb-1022-v2 by this push:
new ce3447c fix RemoveNotOptimizer for where not contain query
ce3447c is described below
commit ce3447c2304be09d09e767af02a1b4a7be435457
Author: SteveYurongSu <[email protected]>
AuthorDate: Tue May 18 13:48:01 2021 +0800
fix RemoveNotOptimizer for where not contain query
---
.../java/org/apache/iotdb/db/qp/logical/crud/SelectOperator.java | 4 +++-
.../apache/iotdb/db/qp/strategy/optimizer/ConcatPathOptimizer.java | 3 ++-
.../apache/iotdb/db/qp/strategy/optimizer/RemoveNotOptimizer.java | 7 ++++++-
3 files changed, 11 insertions(+), 3 deletions(-)
diff --git
a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/SelectOperator.java
b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/SelectOperator.java
index 7030161..a699788 100644
---
a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/SelectOperator.java
+++
b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/SelectOperator.java
@@ -116,7 +116,9 @@ public final class SelectOperator extends Operator {
aggregationFunctionsCache = new ArrayList<>();
for (ResultColumn resultColumn : resultColumns) {
aggregationFunctionsCache.add(
- ((FunctionExpression)
resultColumn.getExpression()).getFunctionName());
+ hasAggregationFunction()
+ ? ((FunctionExpression)
resultColumn.getExpression()).getFunctionName()
+ : null);
}
}
return aggregationFunctionsCache;
diff --git
a/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/ConcatPathOptimizer.java
b/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/ConcatPathOptimizer.java
index cc6a81c..89db221 100644
---
a/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/ConcatPathOptimizer.java
+++
b/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/ConcatPathOptimizer.java
@@ -98,7 +98,8 @@ public class ConcatPathOptimizer implements ILogicalOptimizer
{
private void removeWildcardsInSelectPaths(QueryOperator queryOperator, int
fetchSize)
throws LogicalOptimizeException, PathNumOverLimitException {
- if (queryOperator.getIndexType() != null) {
+ if (queryOperator.isAlignByDevice() && !queryOperator.isLastQuery()
+ || queryOperator.getIndexType() != null) {
return;
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/RemoveNotOptimizer.java
b/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/RemoveNotOptimizer.java
index 598a884..099bcd9 100644
---
a/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/RemoveNotOptimizer.java
+++
b/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/RemoveNotOptimizer.java
@@ -20,11 +20,13 @@ package org.apache.iotdb.db.qp.strategy.optimizer;
import org.apache.iotdb.db.exception.query.LogicalOperatorException;
import org.apache.iotdb.db.exception.query.LogicalOptimizeException;
+import org.apache.iotdb.db.metadata.PartialPath;
import org.apache.iotdb.db.qp.constant.SQLConstant;
import org.apache.iotdb.db.qp.logical.crud.FilterOperator;
import org.apache.iotdb.db.qp.logical.crud.FunctionOperator;
import java.util.List;
+import java.util.Set;
import static org.apache.iotdb.db.qp.constant.SQLConstant.KW_AND;
import static org.apache.iotdb.db.qp.constant.SQLConstant.KW_NOT;
@@ -41,7 +43,10 @@ public class RemoveNotOptimizer implements IFilterOptimizer {
*/
@Override
public FilterOperator optimize(FilterOperator filter) throws
LogicalOperatorException {
- return removeNot(filter);
+ Set<PartialPath> pathSet = filter.getPathSet();
+ FilterOperator optimizedFilterOperator = removeNot(filter);
+ optimizedFilterOperator.setPathSet(pathSet);
+ return optimizedFilterOperator;
}
private FilterOperator removeNot(FilterOperator filter) throws
LogicalOperatorException {