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

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

commit f5f0bbec659a73665ec231b9a7f704d61cc48a24
Author: Minghui Liu <[email protected]>
AuthorDate: Fri Jun 24 21:25:14 2022 +0800

    fix bug
---
 .../groupby/LocalAlignedGroupByExecutor.java       | 81 +++++++++++-----------
 .../dataset/groupby/LocalGroupByExecutor.java      | 56 +++++++--------
 2 files changed, 71 insertions(+), 66 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/LocalAlignedGroupByExecutor.java
 
b/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/LocalAlignedGroupByExecutor.java
index 87faffebbb..fd00c3d3e3 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/LocalAlignedGroupByExecutor.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/LocalAlignedGroupByExecutor.java
@@ -124,27 +124,29 @@ public class LocalAlignedGroupByExecutor implements 
AlignedGroupByExecutor {
     // read from file
     while (reader.hasNextFile()) {
       // try to calc from fileMetaData
-      Statistics fileTimeStatistics = reader.currentFileTimeStatistics();
-      if (fileTimeStatistics.getStartTime() >= curEndTime) {
-        if (ascending) {
-          return results;
-        } else {
+      if (reader.canUseCurrentFileStatistics()) {
+        Statistics fileTimeStatistics = reader.currentFileTimeStatistics();
+        if (fileTimeStatistics.getStartTime() >= curEndTime) {
+          if (ascending) {
+            return results;
+          } else {
+            reader.skipCurrentFile();
+            continue;
+          }
+        }
+        if (timeRange.contains(
+            fileTimeStatistics.getStartTime(), 
fileTimeStatistics.getEndTime())) {
+          // calc from fileMetaData
+          while (reader.hasNextSubSeries()) {
+            Statistics currentFileStatistics = reader.currentFileStatistics();
+            calcFromStatistics(currentFileStatistics, 
results.get(reader.getCurIndex()));
+            reader.nextSeries();
+          }
           reader.skipCurrentFile();
           continue;
         }
       }
-      if (reader.canUseCurrentFileStatistics()
-          && timeRange.contains(
-              fileTimeStatistics.getStartTime(), 
fileTimeStatistics.getEndTime())) {
-        // calc from fileMetaData
-        while (reader.hasNextSubSeries()) {
-          Statistics currentFileStatistics = reader.currentFileStatistics();
-          calcFromStatistics(currentFileStatistics, 
results.get(reader.getCurIndex()));
-          reader.nextSeries();
-        }
-        reader.skipCurrentFile();
-        continue;
-      }
+
       // read chunk
       if (readAndCalcFromChunk(curStartTime, curEndTime)) {
         return results;
@@ -175,27 +177,29 @@ public class LocalAlignedGroupByExecutor implements 
AlignedGroupByExecutor {
       throws IOException, QueryProcessException {
     while (reader.hasNextChunk()) {
       // try to calc from chunkMetaData
-      Statistics chunkTimeStatistics = reader.currentChunkTimeStatistics();
-      if (chunkTimeStatistics.getStartTime() >= curEndTime) {
-        if (ascending) {
-          return true;
-        } else {
+      if (reader.canUseCurrentChunkStatistics()) {
+        Statistics chunkTimeStatistics = reader.currentChunkTimeStatistics();
+        if (chunkTimeStatistics.getStartTime() >= curEndTime) {
+          if (ascending) {
+            return true;
+          } else {
+            reader.skipCurrentChunk();
+            continue;
+          }
+        }
+        if (timeRange.contains(
+            chunkTimeStatistics.getStartTime(), 
chunkTimeStatistics.getEndTime())) {
+          // calc from chunkMetaData
+          while (reader.hasNextSubSeries()) {
+            Statistics currentChunkStatistics = 
reader.currentChunkStatistics();
+            calcFromStatistics(currentChunkStatistics, 
results.get(reader.getCurIndex()));
+            reader.nextSeries();
+          }
           reader.skipCurrentChunk();
           continue;
         }
       }
-      if (reader.canUseCurrentChunkStatistics()
-          && timeRange.contains(
-              chunkTimeStatistics.getStartTime(), 
chunkTimeStatistics.getEndTime())) {
-        // calc from chunkMetaData
-        while (reader.hasNextSubSeries()) {
-          Statistics currentChunkStatistics = reader.currentChunkStatistics();
-          calcFromStatistics(currentChunkStatistics, 
results.get(reader.getCurIndex()));
-          reader.nextSeries();
-        }
-        reader.skipCurrentChunk();
-        continue;
-      }
+
       // read page
       if (readAndCalcFromPage(curStartTime, curEndTime)) {
         return true;
@@ -208,8 +212,8 @@ public class LocalAlignedGroupByExecutor implements 
AlignedGroupByExecutor {
       throws IOException, QueryProcessException {
     while (reader.hasNextPage()) {
       // try to calc from pageHeader
-      Statistics pageTimeStatistics = reader.currentPageTimeStatistics();
-      if (pageTimeStatistics != null) {
+      if (reader.canUseCurrentPageStatistics()) {
+        Statistics pageTimeStatistics = reader.currentPageTimeStatistics();
         // current page max than time range
         if (pageTimeStatistics.getStartTime() >= curEndTime) {
           if (ascending) {
@@ -219,9 +223,8 @@ public class LocalAlignedGroupByExecutor implements 
AlignedGroupByExecutor {
             continue;
           }
         }
-        if (reader.canUseCurrentPageStatistics()
-            && timeRange.contains(
-                pageTimeStatistics.getStartTime(), 
pageTimeStatistics.getEndTime())) {
+        if (timeRange.contains(
+            pageTimeStatistics.getStartTime(), 
pageTimeStatistics.getEndTime())) {
           // calc from pageHeader
           while (reader.hasNextSubSeries()) {
             int subIndex = reader.getCurIndex();
diff --git 
a/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/LocalGroupByExecutor.java
 
b/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/LocalGroupByExecutor.java
index fd692c410a..1b96765e21 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/LocalGroupByExecutor.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/LocalGroupByExecutor.java
@@ -212,22 +212,23 @@ public class LocalGroupByExecutor implements 
GroupByExecutor {
 
     // read from file first
     while (reader.hasNextFile()) {
-      Statistics fileStatistics = reader.currentFileStatistics();
-      if (fileStatistics.getStartTime() >= curEndTime) {
-        if (ascending) {
-          return results;
-        } else {
+      if (reader.canUseCurrentFileStatistics()) {
+        Statistics fileStatistics = reader.currentFileStatistics();
+        if (fileStatistics.getStartTime() >= curEndTime) {
+          if (ascending) {
+            return results;
+          } else {
+            reader.skipCurrentFile();
+            continue;
+          }
+        }
+        // calc from fileMetaData
+        if (timeRange.contains(fileStatistics.getStartTime(), 
fileStatistics.getEndTime())) {
+          calcFromStatistics(fileStatistics);
           reader.skipCurrentFile();
           continue;
         }
       }
-      // calc from fileMetaData
-      if (reader.canUseCurrentFileStatistics()
-          && timeRange.contains(fileStatistics.getStartTime(), 
fileStatistics.getEndTime())) {
-        calcFromStatistics(fileStatistics);
-        reader.skipCurrentFile();
-        continue;
-      }
 
       // read chunk
       if (readAndCalcFromChunk(curStartTime, curEndTime)) {
@@ -281,22 +282,24 @@ public class LocalGroupByExecutor implements 
GroupByExecutor {
   private boolean readAndCalcFromChunk(long curStartTime, long curEndTime)
       throws IOException, QueryProcessException {
     while (reader.hasNextChunk()) {
-      Statistics chunkStatistics = reader.currentChunkStatistics();
-      if (chunkStatistics.getStartTime() >= curEndTime) {
-        if (ascending) {
-          return true;
-        } else {
+      if (reader.canUseCurrentChunkStatistics()) {
+        Statistics chunkStatistics = reader.currentChunkStatistics();
+        if (chunkStatistics.getStartTime() >= curEndTime) {
+          if (ascending) {
+            return true;
+          } else {
+            reader.skipCurrentChunk();
+            continue;
+          }
+        }
+        // calc from chunkMetaData
+        if (timeRange.contains(chunkStatistics.getStartTime(), 
chunkStatistics.getEndTime())) {
+          calcFromStatistics(chunkStatistics);
           reader.skipCurrentChunk();
           continue;
         }
       }
-      // calc from chunkMetaData
-      if (reader.canUseCurrentChunkStatistics()
-          && timeRange.contains(chunkStatistics.getStartTime(), 
chunkStatistics.getEndTime())) {
-        calcFromStatistics(chunkStatistics);
-        reader.skipCurrentChunk();
-        continue;
-      }
+
       // read page
       if (readAndCalcFromPage(curStartTime, curEndTime)) {
         return true;
@@ -309,9 +312,8 @@ public class LocalGroupByExecutor implements 
GroupByExecutor {
   private boolean readAndCalcFromPage(long curStartTime, long curEndTime)
       throws IOException, QueryProcessException {
     while (reader.hasNextPage()) {
-      Statistics pageStatistics = reader.currentPageStatistics();
-      // must be non overlapped page
-      if (pageStatistics != null) {
+      if (reader.canUseCurrentPageStatistics()) {
+        Statistics pageStatistics = reader.currentPageStatistics();
         // current page max than time range
         if (pageStatistics.getStartTime() >= curEndTime) {
           if (ascending) {

Reply via email to