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

qiaojialin pushed a commit to branch optimize_series_reader
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git


The following commit(s) were added to refs/heads/optimize_series_reader by this 
push:
     new fe759e8  remove set chunkmetadata=null in hasNextChunk
fe759e8 is described below

commit fe759e8b8282eb0764ac9034fab750b0590c8125
Author: qiaojialin <[email protected]>
AuthorDate: Sun Mar 1 18:36:17 2020 +0800

    remove set chunkmetadata=null in hasNextChunk
---
 .../iotdb/db/query/reader/series/SeriesReader.java       | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReader.java
 
b/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReader.java
index 7b5fc3e..ddd4b4e 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReader.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReader.java
@@ -125,7 +125,6 @@ public class SeriesReader {
         .hasNextTimeValuePair()) {
       throw new IOException("all cached pages should be consumed first");
     }
-    firstChunkMetaData = null;
 
     // init first chunk metadata whose startTime is minimum
     tryToUnpackAllOverlappedFilesToChunkMetadatas();
@@ -237,6 +236,7 @@ public class SeriesReader {
 
     BatchData pageData = firstPageReader.data.getAllSatisfiedPageData();
     firstPageReader = null;
+
     /*
      * no value filter
      * only need to consider valueFilter because timeFilter has been set into 
the page reader
@@ -400,10 +400,10 @@ public class SeriesReader {
       QueryUtils.modifyChunkMetaData(currentChunkMetaDataList, 
pathModifications);
     }
 
-    for (ChunkMetaData data : currentChunkMetaDataList) {
+    for (ChunkMetaData chunkMetaData : currentChunkMetaDataList) {
       TsFileSequenceReader tsFileSequenceReader = 
FileReaderManager.getInstance()
           .get(resource, resource.isClosed());
-      data.setChunkLoader(new DiskChunkLoader(tsFileSequenceReader));
+      chunkMetaData.setChunkLoader(new DiskChunkLoader(tsFileSequenceReader));
     }
     List<ReadOnlyMemChunk> memChunks = resource.getReadOnlyMemChunk();
     if (memChunks != null) {
@@ -414,10 +414,12 @@ public class SeriesReader {
       }
     }
 
-    if (timeFilter != null) {
-      currentChunkMetaDataList.removeIf(
-          a -> !timeFilter.satisfyStartEndTime(a.getStartTime(), 
a.getEndTime()));
-    }
+    /*
+     * remove empty and not satisfied ChunkMetaData
+     */
+    currentChunkMetaDataList.removeIf(chunkMetaData -> (timeFilter != null && 
!timeFilter
+        .satisfyStartEndTime(chunkMetaData.getStartTime(), 
chunkMetaData.getEndTime()))
+        || chunkMetaData.getStartTime() > chunkMetaData.getEndTime());
     return currentChunkMetaDataList;
   }
 

Reply via email to