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 f3da8fdaae [format] Optimize Vectorized readBytes with direct array
access for heap buffers (#8673)
f3da8fdaae is described below
commit f3da8fdaae6e9baac0ee2033ee8a1e40298133a2
Author: Arnav Balyan <[email protected]>
AuthorDate: Thu Jul 16 10:47:43 2026 +0530
[format] Optimize Vectorized readBytes with direct array access for heap
buffers (#8673)
---
.../parquet/reader/VectorizedPlainValuesReader.java | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git
a/paimon-format/src/main/java/org/apache/paimon/format/parquet/reader/VectorizedPlainValuesReader.java
b/paimon-format/src/main/java/org/apache/paimon/format/parquet/reader/VectorizedPlainValuesReader.java
index 14f393b113..0db3dd7b0d 100644
---
a/paimon-format/src/main/java/org/apache/paimon/format/parquet/reader/VectorizedPlainValuesReader.java
+++
b/paimon-format/src/main/java/org/apache/paimon/format/parquet/reader/VectorizedPlainValuesReader.java
@@ -200,10 +200,18 @@ public class VectorizedPlainValuesReader extends
ValuesReader implements Vectori
int requiredBytes = total * 4;
ByteBuffer buffer = getBuffer(requiredBytes);
- for (int i = 0; i < total; i += 1) {
- c.setByte(rowId + i, buffer.get());
- // skip the next 3 bytes
- buffer.position(buffer.position() + 3);
+ if (buffer.hasArray()) {
+ byte[] array = buffer.array();
+ int offset = buffer.arrayOffset() + buffer.position();
+ for (int i = 0; i < total; i++) {
+ c.setByte(rowId + i, array[offset + i * 4]);
+ }
+ } else {
+ for (int i = 0; i < total; i += 1) {
+ c.setByte(rowId + i, buffer.get());
+ // skip the next 3 bytes
+ buffer.position(buffer.position() + 3);
+ }
}
}