You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2022/01/15 01:27:59 UTC
[iotdb] branch rel/0.12 updated: [To rel/0.12] [IOTDB-2400] Fix series reader bug (#4828)
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch rel/0.12
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/0.12 by this push:
new 67840ef [To rel/0.12] [IOTDB-2400] Fix series reader bug (#4828)
67840ef is described below
commit 67840effafdb58531b62612cd2081e5cb0822c6d
Author: Jackie Tien <ja...@gmail.com>
AuthorDate: Sat Jan 15 09:27:25 2022 +0800
[To rel/0.12] [IOTDB-2400] Fix series reader bug (#4828)
---
.../iotdb/db/query/reader/series/SeriesReader.java | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 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 62e9518..b024b3a 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
@@ -408,7 +408,7 @@ public class SeriesReader {
*/
if (hasCachedNextOverlappedPage) {
return true;
- } else if (mergeReader.hasNextTimeValuePair()) {
+ } else if (mergeReader.hasNextTimeValuePair() || firstPageOverlapped()) {
if (hasNextOverlappedPage()) {
cachedBatchData = nextOverlappedPage();
if (cachedBatchData != null && cachedBatchData.hasCurrent()) {
@@ -486,6 +486,12 @@ public class SeriesReader {
if (firstPageReader == null) {
return false;
}
+
+ long endpointTime = orderUtils.getOverlapCheckTime(firstPageReader.getStatistics());
+ unpackAllOverlappedTsFilesToTimeSeriesMetadata(endpointTime);
+ unpackAllOverlappedTimeSeriesMetadataToCachedChunkMetadata(endpointTime, false);
+ unpackAllOverlappedChunkMetadataToPageReaders(endpointTime, false);
+
return (!seqPageReaders.isEmpty()
&& orderUtils.isOverlapped(
firstPageReader.getStatistics(), seqPageReaders.get(0).getStatistics()))
@@ -493,8 +499,9 @@ public class SeriesReader {
&& orderUtils.isOverlapped(
firstPageReader.getStatistics(), unSeqPageReaders.peek().getStatistics())
|| (mergeReader.hasNextTimeValuePair()
- && mergeReader.currentTimeValuePair().getTimestamp()
- >= firstPageReader.getStatistics().getStartTime()));
+ && orderUtils.isOverlapped(
+ mergeReader.currentTimeValuePair().getTimestamp(),
+ firstPageReader.getStatistics())));
}
private void unpackAllOverlappedChunkMetadataToPageReaders(long endpointTime, boolean init)
@@ -721,7 +728,8 @@ public class SeriesReader {
cachedBatchData.flip();
hasCachedNextOverlappedPage = cachedBatchData.hasCurrent();
return hasCachedNextOverlappedPage;
- } else {
+ } else if (orderUtils.isOverlapped(
+ timeValuePair.getTimestamp(), firstPageReader.getStatistics())) {
// current timeValuePair is overlapped with firstPageReader, add it to merged reader
// and update endTime to the max end time
mergeReader.addReader(
@@ -748,7 +756,8 @@ public class SeriesReader {
cachedBatchData.flip();
hasCachedNextOverlappedPage = cachedBatchData.hasCurrent();
return hasCachedNextOverlappedPage;
- } else {
+ } else if (orderUtils.isOverlapped(
+ timeValuePair.getTimestamp(), seqPageReaders.get(0).getStatistics())) {
VersionPageReader pageReader = seqPageReaders.remove(0);
mergeReader.addReader(
pageReader