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

Reply via email to