This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch dev/1.1
in repository https://gitbox.apache.org/repos/asf/tsfile.git
The following commit(s) were added to refs/heads/dev/1.1 by this push:
new 670a0f59 [to dev/1.1] Add readItimeseriesMetadata method (#312)
670a0f59 is described below
commit 670a0f5915aee9d4b188d9599cb088f097ae3e6d
Author: shuwenwei <[email protected]>
AuthorDate: Tue Nov 26 12:05:32 2024 +0800
[to dev/1.1] Add readItimeseriesMetadata method (#312)
* add readITimeseriesMetadata
* fix compile
---
.../apache/tsfile/read/TsFileSequenceReader.java | 49 ++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
b/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
index 9491afaa..376fc9b9 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
@@ -559,6 +559,55 @@ public class TsFileSequenceReader implements AutoCloseable
{
}
}
+ /**
+ * Read the TimeseriesMetadata of the given measurement and its successors
from the index node
+ * into the list.
+ *
+ * @param timeseriesMetadataList result holder
+ * @param node index node to be read from
+ * @param measurement the desired measurement
+ * @return true if the measurement exists
+ * @throws IOException when read fails
+ */
+ public boolean readITimeseriesMetadata(
+ List<TimeseriesMetadata> timeseriesMetadataList, MetadataIndexNode node,
String measurement)
+ throws IOException {
+ Pair<IMetadataIndexEntry, Long> measurementMetadataIndexPair =
+ getMetadataAndEndOffsetOfMeasurementNode(node, measurement, true,
null);
+
+ if (measurementMetadataIndexPair == null) {
+ return false;
+ }
+ long startOffset = measurementMetadataIndexPair.getLeft().getOffset();
+ long endOffset = measurementMetadataIndexPair.getRight();
+ TimeseriesMetadata timeseriesMetadata;
+ if (endOffset - startOffset >= Integer.MAX_VALUE) {
+ synchronized (this) {
+ this.position(startOffset);
+ try {
+ timeseriesMetadata = TimeseriesMetadata.deserializeFrom(tsFileInput,
true);
+ } catch (Exception e) {
+ logger.error(
+ "Something error happened while deserializing TimeseriesMetadata
of file {}", file);
+ throw e;
+ }
+ }
+ } else {
+ try {
+ ByteBuffer buffer =
+ readData(
+ measurementMetadataIndexPair.left.getOffset(),
measurementMetadataIndexPair.right);
+ timeseriesMetadata = TimeseriesMetadata.deserializeFrom(buffer, true);
+ } catch (Exception e) {
+ logger.error(
+ "Something error happened while deserializing TimeseriesMetadata
of file {}", file);
+ throw e;
+ }
+ }
+ timeseriesMetadataList.add(timeseriesMetadata);
+ return true;
+ }
+
/**
* Find the leaf node that contains path, return all the sensors in that
leaf node which are also
* in allSensors set