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 2023/12/18 07:28:21 UTC

(iotdb) 03/04: fix query

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

haonan pushed a commit to branch 2G_metadata_read
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit ec191a2a4b2f68e1a99ff2784ea73fe5dbd5a159
Author: HTHou <hh...@outlook.com>
AuthorDate: Mon Dec 18 12:47:14 2023 +0800

    fix query
---
 .../iotdb/tsfile/read/TsFileSequenceReader.java    | 41 ++++++++++++++++------
 1 file changed, 30 insertions(+), 11 deletions(-)

diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
index 45c63122246..ee0d9c953d2 100644
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
+++ b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
@@ -500,18 +500,37 @@ public class TsFileSequenceReader implements AutoCloseable {
     }
     List<TimeseriesMetadata> timeseriesMetadataList = new ArrayList<>();
 
-    ByteBuffer buffer = readData(metadataIndexPair.left.getOffset(), metadataIndexPair.right);
-    while (buffer.hasRemaining()) {
-      TimeseriesMetadata timeseriesMetadata;
-      try {
-        timeseriesMetadata = TimeseriesMetadata.deserializeFrom(buffer, true);
-      } catch (Exception e) {
-        logger.error(
-            "Something error happened while deserializing TimeseriesMetadata of file {}", file);
-        throw e;
+    try {
+      ByteBuffer buffer = readData(metadataIndexPair.left.getOffset(), metadataIndexPair.right);
+      while (buffer.hasRemaining()) {
+        TimeseriesMetadata timeseriesMetadata;
+        try {
+          timeseriesMetadata = TimeseriesMetadata.deserializeFrom(buffer, true);
+        } catch (Exception e) {
+          logger.error(
+              "Something error happened while deserializing TimeseriesMetadata of file {}", file);
+          throw e;
+        }
+        if (allSensors.contains(timeseriesMetadata.getMeasurementId())) {
+          timeseriesMetadataList.add(timeseriesMetadata);
+        }
       }
-      if (allSensors.contains(timeseriesMetadata.getMeasurementId())) {
-        timeseriesMetadataList.add(timeseriesMetadata);
+    } catch (ByteBufferAllocateException e) {
+      // when the buffer length is over than Integer.MAX_VALUE,
+      // using tsFileInput to get timeseriesMetadataList
+      tsFileInput.position(metadataIndexPair.left.getOffset());
+      while (tsFileInput.position() < metadataIndexPair.right) {
+        TimeseriesMetadata timeseriesMetadata;
+        try {
+          timeseriesMetadata = TimeseriesMetadata.deserializeFrom(tsFileInput, true);
+        } catch (Exception e1) {
+          logger.error(
+              "Something error happened while deserializing TimeseriesMetadata of file {}", file);
+          throw e1;
+        }
+        if (allSensors.contains(timeseriesMetadata.getMeasurementId())) {
+          timeseriesMetadataList.add(timeseriesMetadata);
+        }
       }
     }
     return timeseriesMetadataList;