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 {

Reply via email to