@@ -121,14 +121,20 @@ public TimeseriesMetadata(TimeseriesMetadata timeseriesMetadata) {
121121 }
122122
123123 public static TimeseriesMetadata deserializeFrom (ByteBuffer buffer , boolean needChunkMetadata ) {
124+ return deserializeFrom (buffer , needChunkMetadata , needChunkMetadata );
125+ }
126+
127+ public static TimeseriesMetadata deserializeFrom (
128+ ByteBuffer buffer , boolean needChunkMetadataForNonBlob , boolean needChunkMetadataForBlob ) {
124129 TimeseriesMetadata timeseriesMetaData = new TimeseriesMetadata ();
125130 timeseriesMetaData .setTimeSeriesMetadataType (ReadWriteIOUtils .readByte (buffer ));
126131 timeseriesMetaData .setMeasurementId (ReadWriteIOUtils .readVarIntString (buffer ));
127132 timeseriesMetaData .setTsDataType (ReadWriteIOUtils .readDataType (buffer ));
128133 int chunkMetaDataListDataSize = ReadWriteForEncodingUtils .readUnsignedVarInt (buffer );
129134 timeseriesMetaData .setDataSizeOfChunkMetaDataList (chunkMetaDataListDataSize );
130135 timeseriesMetaData .setStatistics (Statistics .deserialize (buffer , timeseriesMetaData .dataType ));
131- if (needChunkMetadata ) {
136+ if ((timeseriesMetaData .getTsDataType () != TSDataType .BLOB && needChunkMetadataForNonBlob )
137+ || (timeseriesMetaData .getTsDataType () == TSDataType .BLOB && needChunkMetadataForBlob )) {
132138 ByteBuffer byteBuffer = buffer .slice ();
133139 byteBuffer .limit (chunkMetaDataListDataSize );
134140 timeseriesMetaData .chunkMetadataList = new ArrayList <>();
@@ -145,6 +151,14 @@ public static TimeseriesMetadata deserializeFrom(ByteBuffer buffer, boolean need
145151
146152 public static TimeseriesMetadata deserializeFrom (
147153 TsFileInput tsFileInput , boolean needChunkMetadata ) throws IOException {
154+ return deserializeFrom (tsFileInput , needChunkMetadata , needChunkMetadata );
155+ }
156+
157+ public static TimeseriesMetadata deserializeFrom (
158+ TsFileInput tsFileInput ,
159+ boolean needChunkMetadataForNonBlob ,
160+ boolean needChunkMetadataForBlob )
161+ throws IOException {
148162 InputStream inputStream = tsFileInput .wrapAsInputStream ();
149163 TimeseriesMetadata timeseriesMetaData = new TimeseriesMetadata ();
150164 timeseriesMetaData .setTimeSeriesMetadataType (ReadWriteIOUtils .readByte (inputStream ));
@@ -155,7 +169,8 @@ public static TimeseriesMetadata deserializeFrom(
155169 timeseriesMetaData .setStatistics (
156170 Statistics .deserialize (inputStream , timeseriesMetaData .dataType ));
157171 long startOffset = tsFileInput .position ();
158- if (needChunkMetadata ) {
172+ if ((timeseriesMetaData .getTsDataType () != TSDataType .BLOB && needChunkMetadataForNonBlob )
173+ || (timeseriesMetaData .getTsDataType () == TSDataType .BLOB && needChunkMetadataForBlob )) {
159174 timeseriesMetaData .chunkMetadataList = new ArrayList <>();
160175 while (tsFileInput .position () < startOffset + chunkMetaDataListDataSize ) {
161176 timeseriesMetaData .chunkMetadataList .add (
@@ -175,6 +190,14 @@ public static TimeseriesMetadata deserializeFrom(
175190 */
176191 public static TimeseriesMetadata deserializeFrom (
177192 ByteBuffer buffer , Set <String > excludedMeasurements , boolean needChunkMetadata ) {
193+ return deserializeFrom (buffer , excludedMeasurements , needChunkMetadata , needChunkMetadata );
194+ }
195+
196+ public static TimeseriesMetadata deserializeFrom (
197+ ByteBuffer buffer ,
198+ Set <String > excludedMeasurements ,
199+ boolean needChunkMetadataForNonBlob ,
200+ boolean needChunkMetadataForBlob ) {
178201 byte timeseriesType = ReadWriteIOUtils .readByte (buffer );
179202 String measurementID = ReadWriteIOUtils .readVarIntString (buffer );
180203 TSDataType tsDataType = ReadWriteIOUtils .readDataType (buffer );
@@ -188,7 +211,9 @@ public static TimeseriesMetadata deserializeFrom(
188211 timeseriesMetaData .setDataSizeOfChunkMetaDataList (chunkMetaDataListDataSize );
189212 timeseriesMetaData .setStatistics (statistics );
190213
191- if (!excludedMeasurements .contains (measurementID ) && needChunkMetadata ) {
214+ if (!excludedMeasurements .contains (measurementID )
215+ && ((tsDataType != TSDataType .BLOB && needChunkMetadataForNonBlob )
216+ || (tsDataType == TSDataType .BLOB && needChunkMetadataForBlob ))) {
192217 // measurement is not in the excluded set and need chunk metadata
193218 ByteBuffer byteBuffer = buffer .slice ();
194219 byteBuffer .limit (chunkMetaDataListDataSize );
0 commit comments