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