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;