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/09/21 01:13:16 UTC

[iotdb] 01/01: AlignedChunkReader should uncompress value page by the compress type in chunkHeader (#7368)

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

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

commit 2a0e2b9317148f85c30992dd13d2a41108479f68
Author: Haonan <hh...@outlook.com>
AuthorDate: Wed Sep 21 08:59:09 2022 +0800

    AlignedChunkReader should uncompress value page by the compress type in chunkHeader (#7368)
---
 .../tsfile/read/reader/chunk/AlignedChunkReader.java      |  1 +
 .../apache/iotdb/tsfile/utils/TsFileGeneratorForTest.java | 15 +++++++++------
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AlignedChunkReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AlignedChunkReader.java
index db8b3ff6c5..3dcec665fe 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AlignedChunkReader.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AlignedChunkReader.java
@@ -248,6 +248,7 @@ public class AlignedChunkReader implements IChunkReader {
         Decoder.getDecoderByType(chunkHeader.getEncodingType(), chunkHeader.getDataType());
     byte[] uncompressedPageData = new byte[pageHeader.getUncompressedSize()];
     try {
+      IUnCompressor unCompressor = IUnCompressor.getUnCompressor(chunkHeader.getCompressionType());
       unCompressor.uncompress(
           compressedPageBody, 0, compressedPageBodyLength, uncompressedPageData, 0);
     } catch (Exception e) {
diff --git a/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/TsFileGeneratorForTest.java b/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/TsFileGeneratorForTest.java
index 486131ffad..713299790f 100755
--- a/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/TsFileGeneratorForTest.java
+++ b/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/TsFileGeneratorForTest.java
@@ -287,19 +287,22 @@ public class TsFileGeneratorForTest {
       // register align timeseries
       List<MeasurementSchema> alignedMeasurementSchemas = new ArrayList<>();
       alignedMeasurementSchemas.add(
-          new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.PLAIN));
+          new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.PLAIN, CompressionType.LZ4));
       alignedMeasurementSchemas.add(
-          new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.PLAIN));
+          new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.PLAIN, CompressionType.SNAPPY));
       alignedMeasurementSchemas.add(
-          new MeasurementSchema("s3", TSDataType.INT64, TSEncoding.PLAIN));
+          new MeasurementSchema("s3", TSDataType.INT64, TSEncoding.PLAIN, CompressionType.GZIP));
       alignedMeasurementSchemas.add(new MeasurementSchema("s4", TSDataType.INT64, TSEncoding.RLE));
       tsFileWriter.registerAlignedTimeseries(new Path("d1"), alignedMeasurementSchemas);
 
       // register nonAlign timeseries
       List<MeasurementSchema> measurementSchemas = new ArrayList<>();
-      measurementSchemas.add(new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.PLAIN));
-      measurementSchemas.add(new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.PLAIN));
-      measurementSchemas.add(new MeasurementSchema("s3", TSDataType.INT64, TSEncoding.PLAIN));
+      measurementSchemas.add(
+          new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.PLAIN, CompressionType.LZ4));
+      measurementSchemas.add(
+          new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.PLAIN, CompressionType.SNAPPY));
+      measurementSchemas.add(
+          new MeasurementSchema("s3", TSDataType.INT64, TSEncoding.PLAIN, CompressionType.SNAPPY));
       tsFileWriter.registerTimeseries(new Path("d2"), measurementSchemas);
 
       TsFileGeneratorUtils.writeWithTsRecord(