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