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();
