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

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

commit ad8467a3a8c664d8f5ca0de4327f7a8f33bdba13
Author: Minghui Liu <[email protected]>
AuthorDate: Wed Aug 10 11:21:33 2022 +0800

    memory control for SeriesAggregationScanOperator
---
 .../source/AbstractSeriesAggregationScanOperator.java  | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/AbstractSeriesAggregationScanOperator.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/AbstractSeriesAggregationScanOperator.java
index 2d7d671be9..a88fff89d5 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/AbstractSeriesAggregationScanOperator.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/AbstractSeriesAggregationScanOperator.java
@@ -25,6 +25,7 @@ import 
org.apache.iotdb.db.mpp.aggregation.timerangeiterator.ITimeRangeIterator;
 import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
 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.common.conf.TSFileDescriptor;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
 import org.apache.iotdb.tsfile.read.common.TimeRange;
@@ -42,6 +43,7 @@ import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.appendA
 import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.calculateAggregationFromRawData;
 import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.initTimeRangeIterator;
 import static 
org.apache.iotdb.db.mpp.execution.operator.AggregationUtil.isAllAggregatorsHasFinalResult;
+import static 
org.apache.iotdb.tsfile.read.common.block.TsBlockBuilderStatus.DEFAULT_MAX_TSBLOCK_SIZE_IN_BYTES;
 
 public abstract class AbstractSeriesAggregationScanOperator implements 
DataSourceOperator {
 
@@ -68,6 +70,8 @@ public abstract class AbstractSeriesAggregationScanOperator 
implements DataSourc
 
   protected boolean finished = false;
 
+  private final long maxReturnSize;
+
   public AbstractSeriesAggregationScanOperator(
       PlanNodeId sourceId,
       OperatorContext context,
@@ -91,6 +95,10 @@ public abstract class AbstractSeriesAggregationScanOperator 
implements DataSourc
       dataTypes.addAll(Arrays.asList(aggregator.getOutputType()));
     }
     this.resultTsBlockBuilder = new TsBlockBuilder(dataTypes);
+
+    this.maxReturnSize =
+        (1L + subSensorSize) * 
TSFileDescriptor.getInstance().getConfig().getPageSizeInByte()
+            + DEFAULT_MAX_TSBLOCK_SIZE_IN_BYTES;
   }
 
   @Override
@@ -108,6 +116,16 @@ public abstract class 
AbstractSeriesAggregationScanOperator implements DataSourc
     seriesScanUtil.initQueryDataSource(dataSource);
   }
 
+  @Override
+  public long calculateMaxPeekMemory() {
+    return maxReturnSize;
+  }
+
+  @Override
+  public long calculateMaxReturnSize() {
+    return maxReturnSize;
+  }
+
   @Override
   public boolean hasNext() {
     return timeRangeIterator.hasNextTimeRange();

Reply via email to