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

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


The following commit(s) were added to refs/heads/auto_compressor by this push:
     new 3c147facd77 fix uncompress length
3c147facd77 is described below

commit 3c147facd77b8b92d85154bb970b761cd5cdb865
Author: Tian Jiang <[email protected]>
AuthorDate: Mon May 29 11:59:58 2023 +0800

    fix uncompress length
---
 .../iotdb/tsfile/compress/auto/AutoUncompressor.java     | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/compress/auto/AutoUncompressor.java
 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/compress/auto/AutoUncompressor.java
index 037ffedabd7..df09bd74f86 100644
--- 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/compress/auto/AutoUncompressor.java
+++ 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/compress/auto/AutoUncompressor.java
@@ -31,7 +31,7 @@ public class AutoUncompressor implements IUnCompressor {
     byte realType = array[offset + length - 1];
     IUnCompressor unCompressor = IUnCompressor.getUnCompressor(
         CompressionType.deserialize(realType));
-    return unCompressor.getUncompressedLength(array, offset, length);
+    return unCompressor.getUncompressedLength(array, offset, length - 1);
   }
 
   @Override
@@ -39,7 +39,9 @@ public class AutoUncompressor implements IUnCompressor {
     byte realType = buffer.array()[buffer.position() + buffer.remaining() - 1];
     IUnCompressor unCompressor = IUnCompressor.getUnCompressor(
         CompressionType.deserialize(realType));
-    return unCompressor.getUncompressedLength(buffer);
+    ByteBuffer slice = buffer.slice();
+    slice.limit(slice.limit() - 1);
+    return unCompressor.getUncompressedLength(slice);
   }
 
   @Override
@@ -47,7 +49,9 @@ public class AutoUncompressor implements IUnCompressor {
     byte realType = byteArray[byteArray.length - 1];
     IUnCompressor unCompressor = IUnCompressor.getUnCompressor(
         CompressionType.deserialize(realType));
-    return unCompressor.uncompress(byteArray);
+    byte[] realData = new byte[byteArray.length - 1];
+    System.arraycopy(byteArray, 0, realData, 0, byteArray.length - 1);
+    return unCompressor.uncompress(realData);
   }
 
   @Override
@@ -56,7 +60,7 @@ public class AutoUncompressor implements IUnCompressor {
     byte realType = byteArray[offset + length - 1];
     IUnCompressor unCompressor = IUnCompressor.getUnCompressor(
         CompressionType.deserialize(realType));
-    return unCompressor.uncompress(byteArray, offset, length, output, 
outOffset);
+    return unCompressor.uncompress(byteArray, offset, length - 1, output, 
outOffset);
   }
 
   @Override
@@ -64,7 +68,9 @@ public class AutoUncompressor implements IUnCompressor {
     byte realType = compressed.array()[compressed.position() + 
compressed.remaining() - 1];
     IUnCompressor unCompressor = IUnCompressor.getUnCompressor(
         CompressionType.deserialize(realType));
-    return unCompressor.uncompress(compressed, uncompressed);
+    ByteBuffer slice = compressed.slice();
+    slice.limit(slice.limit() - 1);
+    return unCompressor.uncompress(slice, uncompressed);
   }
 
   @Override

Reply via email to