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

Reply via email to