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 e64b5c567905c3996f44b9bd5b671e39bf8a7185
Author: Minghui Liu <[email protected]>
AuthorDate: Thu Aug 11 20:27:22 2022 +0800

    temp save
---
 .../aggregation/timerangeiterator/AggrWindowIterator.java  |  5 +++++
 .../aggregation/timerangeiterator/ITimeRangeIterator.java  |  2 ++
 .../timerangeiterator/SingleTimeWindowIterator.java        |  5 +++++
 .../source/AbstractSeriesAggregationScanOperator.java      | 14 ++++++++++----
 4 files changed, 22 insertions(+), 4 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/AggrWindowIterator.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/AggrWindowIterator.java
index f27c56223c..98dd32abc0 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/AggrWindowIterator.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/AggrWindowIterator.java
@@ -176,4 +176,9 @@ public class AggrWindowIterator implements 
ITimeRangeIterator {
   public long currentOutputTime() {
     return leftCRightO ? curTimeRange.getMin() : curTimeRange.getMax();
   }
+
+  @Override
+  public int getTotalTimeRangeNum() {
+    return 0;
+  }
 }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/ITimeRangeIterator.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/ITimeRangeIterator.java
index ccc999e810..76161dd684 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/ITimeRangeIterator.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/ITimeRangeIterator.java
@@ -55,4 +55,6 @@ public interface ITimeRangeIterator {
    * @return minTime if leftCloseRightOpen, else maxTime.
    */
   long currentOutputTime();
+
+  int getTotalTimeRangeNum();
 }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/SingleTimeWindowIterator.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/SingleTimeWindowIterator.java
index b998557604..291e4f3b4a 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/SingleTimeWindowIterator.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/SingleTimeWindowIterator.java
@@ -71,4 +71,9 @@ public class SingleTimeWindowIterator implements 
ITimeRangeIterator {
   public long currentOutputTime() {
     return curTimeRange.getMin();
   }
+
+  @Override
+  public int getTotalTimeRangeNum() {
+    return 1;
+  }
 }
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 a88fff89d5..fee5102441 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
@@ -70,6 +70,7 @@ public abstract class AbstractSeriesAggregationScanOperator 
implements DataSourc
 
   protected boolean finished = false;
 
+  private final long maxRetainedSize;
   private final long maxReturnSize;
 
   public AbstractSeriesAggregationScanOperator(
@@ -96,9 +97,9 @@ public abstract class AbstractSeriesAggregationScanOperator 
implements DataSourc
     }
     this.resultTsBlockBuilder = new TsBlockBuilder(dataTypes);
 
-    this.maxReturnSize =
-        (1L + subSensorSize) * 
TSFileDescriptor.getInstance().getConfig().getPageSizeInByte()
-            + DEFAULT_MAX_TSBLOCK_SIZE_IN_BYTES;
+    this.maxRetainedSize =
+        (1L + subSensorSize) * 
TSFileDescriptor.getInstance().getConfig().getPageSizeInByte();
+    this.maxReturnSize = DEFAULT_MAX_TSBLOCK_SIZE_IN_BYTES;
   }
 
   @Override
@@ -118,7 +119,7 @@ public abstract class AbstractSeriesAggregationScanOperator 
implements DataSourc
 
   @Override
   public long calculateMaxPeekMemory() {
-    return maxReturnSize;
+    return maxRetainedSize + maxReturnSize;
   }
 
   @Override
@@ -126,6 +127,11 @@ public abstract class 
AbstractSeriesAggregationScanOperator implements DataSourc
     return maxReturnSize;
   }
 
+  @Override
+  public long calculateRetainedSizeAfterCallingNext() {
+    return maxRetainedSize;
+  }
+
   @Override
   public boolean hasNext() {
     return timeRangeIterator.hasNextTimeRange();

Reply via email to