kkewwei commented on code in PR #14397:
URL: https://github.com/apache/lucene/pull/14397#discussion_r2019696179


##########
lucene/core/src/java/org/apache/lucene/codecs/lucene90/LZ4WithPresetDictCompressionMode.java:
##########
@@ -144,10 +148,85 @@ public void decompress(DataInput in, int originalLength, 
int offset, int length,
       assert bytes.isValid();
     }
 
+    @Override
+    public void decompress(
+        IndexInput in, int originalLength, int offset, int length, BytesRef 
bytes)
+        throws IOException {
+      assert offset + length <= originalLength;
+
+      if (length == 0) {
+        bytes.length = 0;
+        return;
+      }
+
+      final int dictLength = in.readVInt();
+      final int blockLength = in.readVInt();
+
+      final int numBlocks = readCompressedLengths(in, originalLength, 
dictLength, blockLength);
+
+      buffer = ArrayUtil.grow(buffer, dictLength + blockLength);
+      long startPointer = in.getFilePointer();
+      bytes.length = 0;
+      if (cachedDictFilPointer == startPointer) {
+        assert cachedDictLength == dictLength && dictEndFilePointer > 0;
+        in.seek(dictEndFilePointer);

Review Comment:
   Yes, you are right.
   
   Initially, I intended to utilize IndexInput for seek. But the 
compressedLengths already holds the compressed length of the dictionary. I can 
directly use it.



##########
lucene/core/src/java/org/apache/lucene/codecs/lucene90/LZ4WithPresetDictCompressionMode.java:
##########
@@ -144,10 +148,85 @@ public void decompress(DataInput in, int originalLength, 
int offset, int length,
       assert bytes.isValid();
     }
 
+    @Override
+    public void decompress(
+        IndexInput in, int originalLength, int offset, int length, BytesRef 
bytes)
+        throws IOException {
+      assert offset + length <= originalLength;
+
+      if (length == 0) {
+        bytes.length = 0;
+        return;
+      }
+
+      final int dictLength = in.readVInt();
+      final int blockLength = in.readVInt();
+
+      final int numBlocks = readCompressedLengths(in, originalLength, 
dictLength, blockLength);
+
+      buffer = ArrayUtil.grow(buffer, dictLength + blockLength);
+      long startPointer = in.getFilePointer();
+      bytes.length = 0;
+      if (cachedDictFilPointer == startPointer) {
+        assert cachedDictLength == dictLength && dictEndFilePointer > 0;
+        in.seek(dictEndFilePointer);

Review Comment:
   Yes, you are right.
   
   Initially, I intended to utilize IndexInput for seek. But the 
compressedLengths already holds the compressed length of the dictionary, I can 
directly use it.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to