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()); + } }
