You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@iotdb.apache.org by GitBox <gi...@apache.org> on 2021/05/25 00:51:07 UTC

[GitHub] [iotdb] qiaojialin commented on a change in pull request #3236: [IOTDB-1022] ANTLR Grammar & Logical Operator for Arithmetic Operations and Nested Operations in SELECT Clauses

qiaojialin commented on a change in pull request #3236:
URL: https://github.com/apache/iotdb/pull/3236#discussion_r637907886



##########
File path: antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlBase.g4
##########
@@ -523,14 +482,6 @@ nodeName
     | COUNT

Review comment:
       remove this also

##########
File path: server/src/main/java/org/apache/iotdb/db/qp/Planner.java
##########
@@ -146,82 +82,42 @@ public PhysicalPlan rawDataQueryReqToPhysicalPlan(
    * @return optimized logical operator
    * @throws LogicalOptimizeException exception in logical optimizing
    */
-  protected Operator logicalOptimize(Operator operator, int maxDeduplicatedPathNum)
+  protected Operator logicalOptimize(Operator operator, int fetchSize)
       throws LogicalOperatorException, PathNumOverLimitException {
-    switch (operator.getType()) {
-      case AUTHOR:
-      case METADATA:
-      case SET_STORAGE_GROUP:
-      case DELETE_STORAGE_GROUP:
-      case CREATE_TIMESERIES:
-      case DELETE_TIMESERIES:
-      case ALTER_TIMESERIES:
-      case LOADDATA:
-      case INSERT:
-      case GRANT_WATERMARK_EMBEDDING:
-      case REVOKE_WATERMARK_EMBEDDING:
-      case TTL:
-      case LOAD_CONFIGURATION:
-      case SHOW:
-      case LOAD_FILES:
-      case REMOVE_FILE:
-      case MOVE_FILE:
-      case FLUSH:
-      case MERGE:
-      case TRACING:
-      case CLEAR_CACHE:
-      case NULL:
-      case SHOW_MERGE_STATUS:
-      case DELETE_PARTITION:
-      case CREATE_SCHEMA_SNAPSHOT:
-      case KILL:
-      case CREATE_FUNCTION:
-      case DROP_FUNCTION:
-      case CREATE_TRIGGER:
-      case DROP_TRIGGER:
-      case START_TRIGGER:
-      case STOP_TRIGGER:
-        return operator;
-      case QUERY:
-      case DELETE:
-      case CREATE_INDEX:
-      case DROP_INDEX:
-      case QUERY_INDEX:
-        SFWOperator root = (SFWOperator) operator;
-        return optimizeSFWOperator(root, maxDeduplicatedPathNum);
-      default:
-        throw new LogicalOperatorException(operator.getType().toString(), "");
-    }
+    return operator.getType().equals(QUERY) || operator.getType().equals(QUERY_INDEX)
+        ? optimizeQueryOperator((QueryOperator) operator, fetchSize)
+        : operator;
   }
 
   /**
-   * given an unoptimized select-from-where operator and return an optimized result.
+   * given an unoptimized query operator and return an optimized result.
    *
-   * @param root unoptimized select-from-where operator
-   * @return optimized select-from-where operator
-   * @throws LogicalOptimizeException exception in SFW optimizing
+   * @param root unoptimized query operator
+   * @return optimized query operator
+   * @throws LogicalOptimizeException exception in query optimizing
    */
-  private SFWOperator optimizeSFWOperator(SFWOperator root, int maxDeduplicatedPathNum)
+  private QueryOperator optimizeQueryOperator(QueryOperator root, int fetchSize)
       throws LogicalOperatorException, PathNumOverLimitException {
-    ConcatPathOptimizer concatPathOptimizer = getConcatPathOptimizer();
-    root = (SFWOperator) concatPathOptimizer.transform(root, maxDeduplicatedPathNum);
+    root = (QueryOperator) getConcatPathOptimizer().transform(root, fetchSize);
+
     FilterOperator filter = root.getFilterOperator();
     if (filter == null) {
       return root;
     }
-    Set<PartialPath> pathSet = filter.getPathSet();
-    RemoveNotOptimizer removeNot = new RemoveNotOptimizer();
-    filter = removeNot.optimize(filter);
-    DnfFilterOptimizer dnf = new DnfFilterOptimizer();
-    filter = dnf.optimize(filter);
-    MergeSingleFilterOptimizer merge = new MergeSingleFilterOptimizer();
-    filter = merge.optimize(filter);
+    filter = new RemoveNotOptimizer().optimize(filter);
+    filter = new DnfFilterOptimizer().optimize(filter);
+    filter = new MergeSingleFilterOptimizer().optimize(filter);

Review comment:
       could these be changed to static method?




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org