This is an automated email from the ASF dual-hosted git repository. jackietien pushed a commit to branch iotdb in repository https://gitbox.apache.org/repos/asf/tsfile.git
commit bf6a2f32853c9f4e72ff1d26780a3702a43ad641 Author: Liao Lanyu <[email protected]> AuthorDate: Fri Jun 21 10:49:44 2024 +0800 Fix ZstdUncompressor --- .../org/apache/tsfile/compress/IUnCompressor.java | 3 +-- .../java/org/apache/tsfile/compress/ZstdTest.java | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/java/tsfile/src/main/java/org/apache/tsfile/compress/IUnCompressor.java b/java/tsfile/src/main/java/org/apache/tsfile/compress/IUnCompressor.java index c3560bc2..ddb402c7 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/compress/IUnCompressor.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/compress/IUnCompressor.java @@ -336,8 +336,7 @@ public interface IUnCompressor { public int uncompress(byte[] byteArray, int offset, int length, byte[] output, int outOffset) throws IOException { return (int) - Zstd.decompressByteArray( - output, outOffset, output.length, byteArray, offset, byteArray.length); + Zstd.decompressByteArray(output, outOffset, output.length, byteArray, offset, length); } /** diff --git a/java/tsfile/src/test/java/org/apache/tsfile/compress/ZstdTest.java b/java/tsfile/src/test/java/org/apache/tsfile/compress/ZstdTest.java index 5c5c7050..803de712 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/compress/ZstdTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/compress/ZstdTest.java @@ -85,4 +85,25 @@ public class ZstdTest { byte[] uncompressed = unCompressor.uncompress(compressed); Assert.assertArrayEquals(uncom, uncompressed); } + + @Test + public void testBytes3() throws IOException { + ICompressor.ZstdCompressor compressor = new ICompressor.ZstdCompressor(); + IUnCompressor.ZstdUnCompressor unCompressor = new IUnCompressor.ZstdUnCompressor(); + + int n = 500000; + int offset = 100; + String input = randomString(n); + byte[] origin = input.getBytes(StandardCharsets.UTF_8); + byte[] compressed = new byte[origin.length * 2]; + int compressedLength = compressor.compress(origin, 0, origin.length, compressed); + System.arraycopy(compressed, 0, compressed, offset, compressedLength); + for (int i = 0; i < offset; i++) { + compressed[i] = 0; + } + + byte[] uncompressed = new byte[origin.length]; + unCompressor.uncompress(compressed, offset, compressedLength, uncompressed, 0); + Assert.assertArrayEquals(origin, uncompressed); + } }
