This is an automated email from the ASF dual-hosted git repository.

hui pushed a commit to branch lmh/aggrOpRefactor
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit df14f23bef4c8b8c6cf7b3bf6515d0477f7480ac
Author: Minghui Liu <[email protected]>
AuthorDate: Fri Jul 1 15:56:47 2022 +0800

    move some static method to AggregationUtil
---
 .../db/mpp/execution/operator/AggregationUtil.java | 135 +++++++++++++++++++++
 .../operator/process/AggregationOperator.java      |  27 +----
 .../process/RawDataAggregationOperator.java        |  62 +---------
 .../process/SlidingWindowAggregationOperator.java  |   8 +-
 .../AlignedSeriesAggregationScanOperator.java      |  25 ++--
 .../source/SeriesAggregationScanOperator.java      |  51 ++------
 6 files changed, 171 insertions(+), 137 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/AggregationUtil.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/AggregationUtil.java
new file mode 100644
index 0000000000..a7ec92ec8c
--- /dev/null
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/AggregationUtil.java
@@ -0,0 +1,135 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.mpp.execution.operator;
+
+import org.apache.iotdb.db.mpp.aggregation.Aggregator;
+import 
org.apache.iotdb.db.mpp.aggregation.timerangeiterator.ITimeRangeIterator;
+import 
org.apache.iotdb.db.mpp.aggregation.timerangeiterator.SingleTimeWindowIterator;
+import 
org.apache.iotdb.db.mpp.aggregation.timerangeiterator.TimeRangeIteratorFactory;
+import 
org.apache.iotdb.db.mpp.plan.planner.plan.parameter.GroupByTimeParameter;
+import org.apache.iotdb.tsfile.read.common.TimeRange;
+import org.apache.iotdb.tsfile.read.common.block.TsBlock;
+import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
+import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
+import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
+
+import java.util.List;
+
+public class AggregationUtil {
+
+  public static TsBlock updateResultTsBlockFromAggregators(
+      TsBlockBuilder tsBlockBuilder,
+      List<? extends Aggregator> aggregators,
+      ITimeRangeIterator timeRangeIterator) {
+    tsBlockBuilder.reset();
+    TimeColumnBuilder timeColumnBuilder = 
tsBlockBuilder.getTimeColumnBuilder();
+    // Use start time of current time range as time column
+    timeColumnBuilder.writeLong(timeRangeIterator.currentOutputTime());
+    ColumnBuilder[] columnBuilders = tsBlockBuilder.getValueColumnBuilders();
+    int columnIndex = 0;
+    for (Aggregator aggregator : aggregators) {
+      ColumnBuilder[] columnBuilder = new 
ColumnBuilder[aggregator.getOutputType().length];
+      columnBuilder[0] = columnBuilders[columnIndex++];
+      if (columnBuilder.length > 1) {
+        columnBuilder[1] = columnBuilders[columnIndex++];
+      }
+      aggregator.outputResult(columnBuilder);
+    }
+    tsBlockBuilder.declarePosition();
+    return tsBlockBuilder.build();
+  }
+
+  /**
+   * If groupByTimeParameter is null, which means it's an aggregation query 
without down sampling.
+   * Aggregation query has only one time window and the result set of it does 
not contain a
+   * timestamp, so it doesn't matter what the time range returns.
+   */
+  public static ITimeRangeIterator initTimeRangeIterator(
+      GroupByTimeParameter groupByTimeParameter,
+      boolean ascending,
+      boolean outputPartialTimeWindow) {
+    if (groupByTimeParameter == null) {
+      return new SingleTimeWindowIterator(0, Long.MAX_VALUE);
+    } else {
+      return TimeRangeIteratorFactory.getTimeRangeIterator(
+          groupByTimeParameter.getStartTime(),
+          groupByTimeParameter.getEndTime(),
+          groupByTimeParameter.getInterval(),
+          groupByTimeParameter.getSlidingStep(),
+          ascending,
+          groupByTimeParameter.isIntervalByMonth(),
+          groupByTimeParameter.isSlidingStepByMonth(),
+          groupByTimeParameter.isLeftCRightO(),
+          outputPartialTimeWindow);
+    }
+  }
+
+  // skip points that cannot be calculated
+  public static TsBlock skipOutOfTimeRangePoints(
+      TsBlock tsBlock, TimeRange curTimeRange, boolean ascending) {
+    TimeColumn timeColumn = tsBlock.getTimeColumn();
+    long targetTime = ascending ? curTimeRange.getMin() : 
curTimeRange.getMax();
+    int left = 0, right = timeColumn.getPositionCount() - 1, mid;
+    // if ascending, find the first greater than or equal to targetTime
+    // else, find the first less than or equal to targetTime
+    while (left < right) {
+      mid = (left + right) >> 1;
+      if (timeColumn.getLongWithoutCheck(mid) < targetTime) {
+        if (ascending) {
+          left = mid + 1;
+        } else {
+          right = mid;
+        }
+      } else if (timeColumn.getLongWithoutCheck(mid) > targetTime) {
+        if (ascending) {
+          right = mid;
+        } else {
+          left = mid + 1;
+        }
+      } else if (timeColumn.getLongWithoutCheck(mid) == targetTime) {
+        return tsBlock.subTsBlock(mid);
+      }
+    }
+    return tsBlock.subTsBlock(left);
+  }
+
+  public static boolean satisfied(TsBlock tsBlock, TimeRange timeRange, 
boolean ascending) {
+    TsBlock.TsBlockSingleColumnIterator tsBlockIterator = 
tsBlock.getTsBlockSingleColumnIterator();
+    if (tsBlockIterator == null || !tsBlockIterator.hasNext()) {
+      return false;
+    }
+
+    return ascending
+        ? (tsBlockIterator.getEndTime() >= timeRange.getMin()
+            && tsBlockIterator.currentTime() <= timeRange.getMax())
+        : (tsBlockIterator.getEndTime() <= timeRange.getMax()
+            && tsBlockIterator.currentTime() >= timeRange.getMin());
+  }
+
+  public static boolean isEndCalc(List<Aggregator> aggregators) {
+    for (Aggregator aggregator : aggregators) {
+      if (!aggregator.hasFinalResult()) {
+        return false;
+      }
+    }
+    return true;
+  }
+}
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/AggregationOperator.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/AggregationOperator.java
index e4de130719..0027328e1e 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/AggregationOperator.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/AggregationOperator.java
@@ -27,8 +27,6 @@ import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.read.common.TimeRange;
 import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import com.google.common.util.concurrent.ListenableFuture;
 
@@ -36,7 +34,8 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-import static 
org.apache.iotdb.db.mpp.execution.operator.source.SeriesAggregationScanOperator.initTimeRangeIterator;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.initTimeRangeIterator;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.updateResultTsBlockFromAggregators;
 
 /**
  * AggregationOperator can process the situation: aggregation of intermediate 
aggregate result, it
@@ -139,26 +138,4 @@ public class AggregationOperator implements 
ProcessOperator {
   public boolean isFinished() {
     return !this.hasNext();
   }
-
-  public static TsBlock updateResultTsBlockFromAggregators(
-      TsBlockBuilder tsBlockBuilder,
-      List<? extends Aggregator> aggregators,
-      ITimeRangeIterator timeRangeIterator) {
-    tsBlockBuilder.reset();
-    TimeColumnBuilder timeColumnBuilder = 
tsBlockBuilder.getTimeColumnBuilder();
-    // Use start time of current time range as time column
-    timeColumnBuilder.writeLong(timeRangeIterator.currentOutputTime());
-    ColumnBuilder[] columnBuilders = tsBlockBuilder.getValueColumnBuilders();
-    int columnIndex = 0;
-    for (Aggregator aggregator : aggregators) {
-      ColumnBuilder[] columnBuilder = new 
ColumnBuilder[aggregator.getOutputType().length];
-      columnBuilder[0] = columnBuilders[columnIndex++];
-      if (columnBuilder.length > 1) {
-        columnBuilder[1] = columnBuilders[columnIndex++];
-      }
-      aggregator.outputResult(columnBuilder);
-    }
-    tsBlockBuilder.declarePosition();
-    return tsBlockBuilder.build();
-  }
 }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/RawDataAggregationOperator.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/RawDataAggregationOperator.java
index 01b0625c60..a64a924426 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/RawDataAggregationOperator.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/RawDataAggregationOperator.java
@@ -27,9 +27,7 @@ import 
org.apache.iotdb.db.mpp.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.read.common.TimeRange;
 import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import 
org.apache.iotdb.tsfile.read.common.block.TsBlock.TsBlockSingleColumnIterator;
 import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
 
 import com.google.common.util.concurrent.ListenableFuture;
 
@@ -37,7 +35,11 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-import static 
org.apache.iotdb.db.mpp.execution.operator.source.SeriesAggregationScanOperator.initTimeRangeIterator;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.initTimeRangeIterator;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.isEndCalc;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.satisfied;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.skipOutOfTimeRangePoints;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.updateResultTsBlockFromAggregators;
 
 /**
  * RawDataAggregationOperator is used to process raw data tsBlock input 
calculating using value
@@ -122,8 +124,7 @@ public class RawDataAggregationOperator implements 
ProcessOperator {
 
     // 2. Update result using aggregators
     curTimeRange = null;
-    return AggregationOperator.updateResultTsBlockFromAggregators(
-        tsBlockBuilder, aggregators, timeRangeIterator);
+    return updateResultTsBlockFromAggregators(tsBlockBuilder, aggregators, 
timeRangeIterator);
   }
 
   @Override
@@ -176,55 +177,4 @@ public class RawDataAggregationOperator implements 
ProcessOperator {
                 : preCachedData.getEndTime() < curTimeRange.getMin()))
         || isEndCalc(aggregators);
   }
-
-  // skip points that cannot be calculated
-  public static TsBlock skipOutOfTimeRangePoints(
-      TsBlock tsBlock, TimeRange curTimeRange, boolean ascending) {
-    TimeColumn timeColumn = tsBlock.getTimeColumn();
-    long targetTime = ascending ? curTimeRange.getMin() : 
curTimeRange.getMax();
-    int left = 0, right = timeColumn.getPositionCount() - 1, mid;
-    // if ascending, find the first greater than or equal to targetTime
-    // else, find the first less than or equal to targetTime
-    while (left < right) {
-      mid = (left + right) >> 1;
-      if (timeColumn.getLongWithoutCheck(mid) < targetTime) {
-        if (ascending) {
-          left = mid + 1;
-        } else {
-          right = mid;
-        }
-      } else if (timeColumn.getLongWithoutCheck(mid) > targetTime) {
-        if (ascending) {
-          right = mid;
-        } else {
-          left = mid + 1;
-        }
-      } else if (timeColumn.getLongWithoutCheck(mid) == targetTime) {
-        return tsBlock.subTsBlock(mid);
-      }
-    }
-    return tsBlock.subTsBlock(left);
-  }
-
-  public static boolean satisfied(TsBlock tsBlock, TimeRange timeRange, 
boolean ascending) {
-    TsBlockSingleColumnIterator tsBlockIterator = 
tsBlock.getTsBlockSingleColumnIterator();
-    if (tsBlockIterator == null || !tsBlockIterator.hasNext()) {
-      return false;
-    }
-
-    return ascending
-        ? (tsBlockIterator.getEndTime() >= timeRange.getMin()
-            && tsBlockIterator.currentTime() <= timeRange.getMax())
-        : (tsBlockIterator.getEndTime() <= timeRange.getMax()
-            && tsBlockIterator.currentTime() >= timeRange.getMin());
-  }
-
-  public static boolean isEndCalc(List<Aggregator> aggregators) {
-    for (Aggregator aggregator : aggregators) {
-      if (!aggregator.hasFinalResult()) {
-        return false;
-      }
-    }
-    return true;
-  }
 }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/SlidingWindowAggregationOperator.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/SlidingWindowAggregationOperator.java
index 2685e3e465..9e1a3fcf14 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/SlidingWindowAggregationOperator.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/SlidingWindowAggregationOperator.java
@@ -37,10 +37,10 @@ import java.util.Arrays;
 import java.util.List;
 
 import static com.google.common.base.Preconditions.checkArgument;
-import static 
org.apache.iotdb.db.mpp.execution.operator.process.AggregationOperator.updateResultTsBlockFromAggregators;
-import static 
org.apache.iotdb.db.mpp.execution.operator.process.RawDataAggregationOperator.satisfied;
-import static 
org.apache.iotdb.db.mpp.execution.operator.process.RawDataAggregationOperator.skipOutOfTimeRangePoints;
-import static 
org.apache.iotdb.db.mpp.execution.operator.source.SeriesAggregationScanOperator.initTimeRangeIterator;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.initTimeRangeIterator;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.satisfied;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.skipOutOfTimeRangePoints;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.updateResultTsBlockFromAggregators;
 
 public class SlidingWindowAggregationOperator implements ProcessOperator {
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/AlignedSeriesAggregationScanOperator.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/AlignedSeriesAggregationScanOperator.java
index 375b203976..f90d8a26f3 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/AlignedSeriesAggregationScanOperator.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/AlignedSeriesAggregationScanOperator.java
@@ -24,7 +24,6 @@ import org.apache.iotdb.db.metadata.path.AlignedPath;
 import org.apache.iotdb.db.mpp.aggregation.Aggregator;
 import 
org.apache.iotdb.db.mpp.aggregation.timerangeiterator.ITimeRangeIterator;
 import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
-import org.apache.iotdb.db.mpp.execution.operator.process.AggregationOperator;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
 import 
org.apache.iotdb.db.mpp.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -41,9 +40,10 @@ import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 
-import static 
org.apache.iotdb.db.mpp.execution.operator.process.RawDataAggregationOperator.isEndCalc;
-import static 
org.apache.iotdb.db.mpp.execution.operator.process.RawDataAggregationOperator.skipOutOfTimeRangePoints;
-import static 
org.apache.iotdb.db.mpp.execution.operator.source.SeriesAggregationScanOperator.initTimeRangeIterator;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.initTimeRangeIterator;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.isEndCalc;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.skipOutOfTimeRangePoints;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.updateResultTsBlockFromAggregators;
 
 /** This operator is responsible to do the aggregation calculation especially 
for aligned series. */
 public class AlignedSeriesAggregationScanOperator implements 
DataSourceOperator {
@@ -132,19 +132,19 @@ public class AlignedSeriesAggregationScanOperator 
implements DataSourceOperator
 
       // 2. Calculate aggregation result based on current time window
       if (calcFromCacheData(curTimeRange)) {
-        updateResultTsBlockFromAggregators();
+        updateResultTsBlock();
         return true;
       }
 
       // read page data firstly
       if (readAndCalcFromPage(curTimeRange)) {
-        updateResultTsBlockFromAggregators();
+        updateResultTsBlock();
         return true;
       }
 
       // read chunk data secondly
       if (readAndCalcFromChunk(curTimeRange)) {
-        updateResultTsBlockFromAggregators();
+        updateResultTsBlock();
         return true;
       }
 
@@ -154,7 +154,7 @@ public class AlignedSeriesAggregationScanOperator 
implements DataSourceOperator
           Statistics fileTimeStatistics = 
alignedSeriesScanUtil.currentFileTimeStatistics();
           if (fileTimeStatistics.getStartTime() > curTimeRange.getMax()) {
             if (ascending) {
-              updateResultTsBlockFromAggregators();
+              updateResultTsBlock();
               return true;
             } else {
               alignedSeriesScanUtil.skipCurrentFile();
@@ -180,12 +180,12 @@ public class AlignedSeriesAggregationScanOperator 
implements DataSourceOperator
 
         // read chunk
         if (readAndCalcFromChunk(curTimeRange)) {
-          updateResultTsBlockFromAggregators();
+          updateResultTsBlock();
           return true;
         }
       }
 
-      updateResultTsBlockFromAggregators();
+      updateResultTsBlock();
       return true;
     } catch (IOException e) {
       throw new RuntimeException("Error while scanning the file", e);
@@ -207,10 +207,9 @@ public class AlignedSeriesAggregationScanOperator 
implements DataSourceOperator
     return sourceId;
   }
 
-  private void updateResultTsBlockFromAggregators() {
+  private void updateResultTsBlock() {
     resultTsBlock =
-        AggregationOperator.updateResultTsBlockFromAggregators(
-            tsBlockBuilder, aggregators, timeRangeIterator);
+        updateResultTsBlockFromAggregators(tsBlockBuilder, aggregators, 
timeRangeIterator);
     hasCachedTsBlock = true;
   }
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/SeriesAggregationScanOperator.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/SeriesAggregationScanOperator.java
index 56b1a33b4a..42a9776015 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/SeriesAggregationScanOperator.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/SeriesAggregationScanOperator.java
@@ -22,10 +22,7 @@ import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
 import org.apache.iotdb.db.mpp.aggregation.Aggregator;
 import 
org.apache.iotdb.db.mpp.aggregation.timerangeiterator.ITimeRangeIterator;
-import 
org.apache.iotdb.db.mpp.aggregation.timerangeiterator.SingleTimeWindowIterator;
-import 
org.apache.iotdb.db.mpp.aggregation.timerangeiterator.TimeRangeIteratorFactory;
 import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
-import org.apache.iotdb.db.mpp.execution.operator.process.AggregationOperator;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
 import 
org.apache.iotdb.db.mpp.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -42,8 +39,10 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Set;
 
-import static 
org.apache.iotdb.db.mpp.execution.operator.process.RawDataAggregationOperator.isEndCalc;
-import static 
org.apache.iotdb.db.mpp.execution.operator.process.RawDataAggregationOperator.skipOutOfTimeRangePoints;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.initTimeRangeIterator;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.isEndCalc;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.skipOutOfTimeRangePoints;
+import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.updateResultTsBlockFromAggregators;
 
 /**
  * This operator is responsible to do the aggregation calculation for one 
series based on global
@@ -106,31 +105,6 @@ public class SeriesAggregationScanOperator implements 
DataSourceOperator {
     this.isGroupByQuery = groupByTimeParameter != null;
   }
 
-  /**
-   * If groupByTimeParameter is null, which means it's an aggregation query 
without down sampling.
-   * Aggregation query has only one time window and the result set of it does 
not contain a
-   * timestamp, so it doesn't matter what the time range returns.
-   */
-  public static ITimeRangeIterator initTimeRangeIterator(
-      GroupByTimeParameter groupByTimeParameter,
-      boolean ascending,
-      boolean outputPartialTimeWindow) {
-    if (groupByTimeParameter == null) {
-      return new SingleTimeWindowIterator(0, Long.MAX_VALUE);
-    } else {
-      return TimeRangeIteratorFactory.getTimeRangeIterator(
-          groupByTimeParameter.getStartTime(),
-          groupByTimeParameter.getEndTime(),
-          groupByTimeParameter.getInterval(),
-          groupByTimeParameter.getSlidingStep(),
-          ascending,
-          groupByTimeParameter.isIntervalByMonth(),
-          groupByTimeParameter.isSlidingStepByMonth(),
-          groupByTimeParameter.isLeftCRightO(),
-          outputPartialTimeWindow);
-    }
-  }
-
   @Override
   public OperatorContext getOperatorContext() {
     return operatorContext;
@@ -164,19 +138,19 @@ public class SeriesAggregationScanOperator implements 
DataSourceOperator {
 
       // 2. Calculate aggregation result based on current time window
       if (calcFromCacheData(curTimeRange)) {
-        updateResultTsBlockFromAggregators();
+        updateResultTsBlock();
         return true;
       }
 
       // read page data firstly
       if (readAndCalcFromPage(curTimeRange)) {
-        updateResultTsBlockFromAggregators();
+        updateResultTsBlock();
         return true;
       }
 
       // read chunk data secondly
       if (readAndCalcFromChunk(curTimeRange)) {
-        updateResultTsBlockFromAggregators();
+        updateResultTsBlock();
         return true;
       }
 
@@ -186,7 +160,7 @@ public class SeriesAggregationScanOperator implements 
DataSourceOperator {
           Statistics fileStatistics = seriesScanUtil.currentFileStatistics();
           if (fileStatistics.getStartTime() > curTimeRange.getMax()) {
             if (ascending) {
-              updateResultTsBlockFromAggregators();
+              updateResultTsBlock();
               return true;
             } else {
               seriesScanUtil.skipCurrentFile();
@@ -207,22 +181,21 @@ public class SeriesAggregationScanOperator implements 
DataSourceOperator {
 
         // read chunk
         if (readAndCalcFromChunk(curTimeRange)) {
-          updateResultTsBlockFromAggregators();
+          updateResultTsBlock();
           return true;
         }
       }
 
-      updateResultTsBlockFromAggregators();
+      updateResultTsBlock();
       return true;
     } catch (IOException e) {
       throw new RuntimeException("Error while scanning the file", e);
     }
   }
 
-  private void updateResultTsBlockFromAggregators() {
+  private void updateResultTsBlock() {
     resultTsBlock =
-        AggregationOperator.updateResultTsBlockFromAggregators(
-            tsBlockBuilder, aggregators, timeRangeIterator);
+        updateResultTsBlockFromAggregators(tsBlockBuilder, aggregators, 
timeRangeIterator);
     hasCachedTsBlock = true;
   }
 

Reply via email to