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

JingsongLi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git


The following commit(s) were added to refs/heads/master by this push:
     new ce56ae9ce4 [format] Fix Parquet delta length reads across vector 
batches (#9366)
ce56ae9ce4 is described below

commit ce56ae9ce49ef510254f64a7c9ee64471a7fbac0
Author: Arnav Balyan <[email protected]>
AuthorDate: Wed Aug 26 13:47:42 2026 +0530

    [format] Fix Parquet delta length reads across vector batches (#9366)
---
 .../reader/VectorizedDeltaLengthByteArrayReader.java     |  2 +-
 .../parquet/reader/DeltaLengthByteArrayEncodingTest.java | 16 ++++++++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git 
a/paimon-format/src/main/java/org/apache/paimon/format/parquet/reader/VectorizedDeltaLengthByteArrayReader.java
 
b/paimon-format/src/main/java/org/apache/paimon/format/parquet/reader/VectorizedDeltaLengthByteArrayReader.java
index 7dfaf868a8..97df39ac57 100644
--- 
a/paimon-format/src/main/java/org/apache/paimon/format/parquet/reader/VectorizedDeltaLengthByteArrayReader.java
+++ 
b/paimon-format/src/main/java/org/apache/paimon/format/parquet/reader/VectorizedDeltaLengthByteArrayReader.java
@@ -58,7 +58,7 @@ public class VectorizedDeltaLengthByteArrayReader extends 
VectorizedReaderBase
         ByteBufferOutputWriter outputWriter = 
ByteBufferOutputWriter::writeArrayByteBuffer;
         int length;
         for (int i = 0; i < total; i++) {
-            length = lengthsVector.getInt(rowId + i);
+            length = lengthsVector.getInt(currentRow + i);
             try {
                 buffer = in.slice(length);
             } catch (EOFException e) {
diff --git 
a/paimon-format/src/test/java/org/apache/paimon/format/parquet/reader/DeltaLengthByteArrayEncodingTest.java
 
b/paimon-format/src/test/java/org/apache/paimon/format/parquet/reader/DeltaLengthByteArrayEncodingTest.java
index 1c73dcca77..f6cd6e891b 100644
--- 
a/paimon-format/src/test/java/org/apache/paimon/format/parquet/reader/DeltaLengthByteArrayEncodingTest.java
+++ 
b/paimon-format/src/test/java/org/apache/paimon/format/parquet/reader/DeltaLengthByteArrayEncodingTest.java
@@ -57,6 +57,22 @@ public class DeltaLengthByteArrayEncodingTest {
         readAndValidate(reader, writer.getBytes().toInputStream(), 
values.length, values);
     }
 
+    @Test
+    public void testReadOnePageAcrossVectorBatches() throws Exception {
+        String[] values = {"a", "bbbb", "ccccc"};
+        writeData(writer, values);
+        reader.initFromPage(values.length, writer.getBytes().toInputStream());
+        HeapBytesVector vector = new HeapBytesVector(values.length);
+
+        reader.readBinary(1, vector, 0);
+        assertArrayEquals(values[0].getBytes(), vector.getBytes(0).getBytes());
+
+        vector.reset();
+        reader.readBinary(2, vector, 0);
+        assertArrayEquals(values[1].getBytes(), vector.getBytes(0).getBytes());
+        assertArrayEquals(values[2].getBytes(), vector.getBytes(1).getBytes());
+    }
+
     @Test
     public void testRandomStrings() throws Exception {
         String[] values = Utils.getRandomStringSamples(1000, 32);

Reply via email to