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

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

commit 4969e63980343a11c60bb677ce1d637a38747c33
Author: shuwenwei <[email protected]>
AuthorDate: Thu Mar 28 20:02:11 2024 +0800

    Fix uncompress byte buffer in RepairDataFileScanUtil
---
 .../compaction/repair/RepairDataFileScanUtil.java  |  6 +----
 .../repair/RepairDataFileScanUtilTest.java         | 29 ++++++++++++++++++++++
 2 files changed, 30 insertions(+), 5 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtil.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtil.java
index 29c961095c7..57e553002d0 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtil.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtil.java
@@ -195,11 +195,7 @@ public class RepairDataFileScanUtil {
     IUnCompressor unCompressor = 
IUnCompressor.getUnCompressor(compressionType);
     byte[] uncompressedData = new byte[pageHeader.getUncompressedSize()];
     unCompressor.uncompress(
-        pageData.array(),
-        0,
-        pageHeader.getCompressedSize(),
-        uncompressedData,
-        pageHeader.getUncompressedSize());
+        pageData.array(), 0, pageHeader.getCompressedSize(), uncompressedData, 
0);
     return ByteBuffer.wrap(uncompressedData);
   }
 
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtilTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtilTest.java
index 0d528ebcc3a..7b4ac9d6788 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtilTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtilTest.java
@@ -135,4 +135,33 @@ public class RepairDataFileScanUtilTest extends 
AbstractCompactionTest {
     Assert.assertFalse(scanUtil2.isBrokenFile());
     Assert.assertTrue(scanUtil2.hasUnsortedData());
   }
+
+  @Test
+  public void testScanFileWithDifferentCompressionTypes() throws IOException {
+    TsFileResource resource = createEmptyFileAndResource(true);
+    try (CompactionTestFileWriter writer = new 
CompactionTestFileWriter(resource)) {
+      writer.startChunkGroup("d1");
+      writer.generateSimpleNonAlignedSeriesToCurrentDevice(
+          "s0",
+          new TimeRange[] {new TimeRange(10, 40), new TimeRange(50, 60)},
+          TSEncoding.PLAIN,
+          CompressionType.SNAPPY);
+      writer.generateSimpleNonAlignedSeriesToCurrentDevice(
+          "s0",
+          new TimeRange[] {new TimeRange(10, 40), new TimeRange(50, 60)},
+          TSEncoding.PLAIN,
+          CompressionType.GZIP);
+      writer.generateSimpleNonAlignedSeriesToCurrentDevice(
+          "s1",
+          new TimeRange[] {new TimeRange(10, 40), new TimeRange(20, 50)},
+          TSEncoding.PLAIN,
+          CompressionType.ZSTD);
+      writer.endChunkGroup();
+      writer.endFile();
+    }
+    RepairDataFileScanUtil scanUtil = new RepairDataFileScanUtil(resource);
+    scanUtil.scanTsFile();
+    Assert.assertFalse(scanUtil.isBrokenFile());
+    Assert.assertTrue(scanUtil.hasUnsortedData());
+  }
 }

Reply via email to