You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@paimon.apache.org by lz...@apache.org on 2026/08/26 08:17:49 UTC

(paimon) branch master updated: [format] Fix Parquet delta length reads across vector batches (#9366)

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 <60...@users.noreply.github.com>
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);