You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iceberg.apache.org by bl...@apache.org on 2022/06/23 01:56:54 UTC

[iceberg] branch master updated: Parquet: Fix VectorizedParquetDefinitionLevelReader with direct ByteBuffer (#5079)

This is an automated email from the ASF dual-hosted git repository.

blue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iceberg.git


The following commit(s) were added to refs/heads/master by this push:
     new ae19482cd Parquet: Fix VectorizedParquetDefinitionLevelReader with direct ByteBuffer (#5079)
ae19482cd is described below

commit ae19482cd7f9ee3e9e95d7198cfc1e5068254d75
Author: Huaxin Gao <hu...@apple.com>
AuthorDate: Wed Jun 22 18:56:48 2022 -0700

    Parquet: Fix VectorizedParquetDefinitionLevelReader with direct ByteBuffer (#5079)
---
 .../parquet/VectorizedDictionaryEncodedParquetValuesReader.java    | 6 ++----
 .../vectorized/parquet/VectorizedParquetDefinitionLevelReader.java | 7 ++-----
 2 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/arrow/src/main/java/org/apache/iceberg/arrow/vectorized/parquet/VectorizedDictionaryEncodedParquetValuesReader.java b/arrow/src/main/java/org/apache/iceberg/arrow/vectorized/parquet/VectorizedDictionaryEncodedParquetValuesReader.java
index 1e694fc47..1773d7487 100644
--- a/arrow/src/main/java/org/apache/iceberg/arrow/vectorized/parquet/VectorizedDictionaryEncodedParquetValuesReader.java
+++ b/arrow/src/main/java/org/apache/iceberg/arrow/vectorized/parquet/VectorizedDictionaryEncodedParquetValuesReader.java
@@ -121,8 +121,7 @@ public class VectorizedDictionaryEncodedParquetValuesReader extends BaseVectoriz
     @Override
     protected void nextVal(FieldVector vector, Dictionary dict, int idx, int currentVal, int typeWidth) {
       ByteBuffer buffer = dict.decodeToBinary(currentVal).toByteBuffer();
-      vector.getDataBuffer()
-          .setBytes(idx, buffer.array(), buffer.position() + buffer.arrayOffset(), buffer.limit() - buffer.position());
+      vector.getDataBuffer().setBytes(idx, buffer);
     }
   }
 
@@ -134,8 +133,7 @@ public class VectorizedDictionaryEncodedParquetValuesReader extends BaseVectoriz
       System.arraycopy(decimalBytes, 0, vectorBytes, 0, typeWidth);
       ((DecimalVector) vector).setBigEndian(idx, vectorBytes);
       ByteBuffer buffer = dict.decodeToBinary(currentVal).toByteBuffer();
-      vector.getDataBuffer()
-          .setBytes(idx, buffer.array(), buffer.position() + buffer.arrayOffset(), buffer.limit() - buffer.position());
+      vector.getDataBuffer().setBytes(idx, buffer);
     }
   }
 
diff --git a/arrow/src/main/java/org/apache/iceberg/arrow/vectorized/parquet/VectorizedParquetDefinitionLevelReader.java b/arrow/src/main/java/org/apache/iceberg/arrow/vectorized/parquet/VectorizedParquetDefinitionLevelReader.java
index eecf6e1fa..dbfb4054e 100644
--- a/arrow/src/main/java/org/apache/iceberg/arrow/vectorized/parquet/VectorizedParquetDefinitionLevelReader.java
+++ b/arrow/src/main/java/org/apache/iceberg/arrow/vectorized/parquet/VectorizedParquetDefinitionLevelReader.java
@@ -348,9 +348,7 @@ public final class VectorizedParquetDefinitionLevelReader extends BaseVectorized
             .nextBatch(vector, idx, numValuesToRead, dict, nullabilityHolder, typeWidth);
       } else if (Mode.PACKED.equals(mode)) {
         ByteBuffer buffer = dict.decodeToBinary(reader.readInteger()).toByteBuffer();
-        vector.getDataBuffer().setBytes(
-            (long) idx * typeWidth, buffer.array(),
-            buffer.position() + buffer.arrayOffset(), buffer.limit() - buffer.position());
+        vector.getDataBuffer().setBytes((long) idx * typeWidth, buffer);
       }
     }
   }
@@ -415,8 +413,7 @@ public final class VectorizedParquetDefinitionLevelReader extends BaseVectorized
       int startOffset = ((BaseVariableWidthVector) vector).getStartOffset(idx);
       // It is possible that the data buffer was reallocated. So it is important to
       // not cache the data buffer reference but instead use vector.getDataBuffer().
-      vector.getDataBuffer().setBytes(startOffset, buffer.array(), buffer.position() + buffer.arrayOffset(),
-          buffer.limit() - buffer.position());
+      vector.getDataBuffer().setBytes(startOffset, buffer);
       // Similarly, we need to get the latest reference to the validity buffer as well
       // since reallocation changes reference of the validity buffers as well.
       if (setArrowValidityVector) {