You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2020/11/11 13:49:11 UTC

[iotdb] branch master updated: [IOTDB-1000] Read redundant data while select with value filter with unseq data (#2020)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new adcb89c  [IOTDB-1000] Read redundant data while select with value filter with unseq data (#2020)
adcb89c is described below

commit adcb89c77e7ed154692e22ee2f95d1ca871c18cd
Author: Xiangwei Wei <34...@users.noreply.github.com>
AuthorDate: Wed Nov 11 21:49:00 2020 +0800

    [IOTDB-1000] Read redundant data while select with value filter with unseq data (#2020)
---
 .../apache/iotdb/db/query/reader/series/SeriesReader.java  |  6 ++++++
 .../apache/iotdb/db/integration/IoTDBOverlappedPageIT.java | 14 +++++++++++++-
 2 files changed, 19 insertions(+), 1 deletion(-)

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 e0618ff..c116da8 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
@@ -410,6 +410,12 @@ public class SeriesReader {
     while (firstPageReader == null && (!seqPageReaders.isEmpty() || !unSeqPageReaders.isEmpty())) {
 
       initFirstPageReader();
+      if (firstPageReader != null) {
+        long endpointTime = orderUtils.getOverlapCheckTime(firstPageReader.getStatistics());
+        unpackAllOverlappedTsFilesToTimeSeriesMetadata(endpointTime);
+        unpackAllOverlappedTimeSeriesMetadataToCachedChunkMetadata(endpointTime, false);
+        unpackAllOverlappedChunkMetadataToCachedPageReaders(endpointTime, false);
+      }
 
       if (firstPageOverlapped()) {
         /*
diff --git a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBOverlappedPageIT.java b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBOverlappedPageIT.java
index daea618..bbfcf64 100644
--- a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBOverlappedPageIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBOverlappedPageIT.java
@@ -115,17 +115,29 @@ public class IoTDBOverlappedPageIT {
         statement.execute(sql);
       }
       statement.execute("flush");
+
+      for (long time = 11; time <= 20; time++) {
+        String sql = String
+            .format("insert into root.vehicle.d0(timestamp,s0) values(%s,%s)", time, time+100);
+        statement.execute(sql);
+      }
       for (long time = 100; time <= 120; time++) {
         String sql = String
                 .format("insert into root.vehicle.d0(timestamp,s0) values(%s,%s)", time, time);
         statement.execute(sql);
       }
       statement.execute("flush");
-      for (long time = 1; time <= 20; time++) {
+
+      for (long time = 1; time <= 10; time++) {
         String sql = String
                 .format("insert into root.vehicle.d0(timestamp,s0) values(%s,%s)", time, time+100);
         statement.execute(sql);
       }
+      for (long time = 11; time <= 20; time++) {
+        String sql = String
+            .format("insert into root.vehicle.d0(timestamp,s0) values(%s,%s)", time, time+100);
+        statement.execute(sql);
+      }
       statement.execute("flush");
     } catch (Exception e) {
       e.printStackTrace();