diff --git a/java/c/src/main/java/org/apache/arrow/c/ArrayImporter.java b/java/c/src/main/java/org/apache/arrow/c/ArrayImporter.java index e82cef6a8a6..48891616eac 100644 --- a/java/c/src/main/java/org/apache/arrow/c/ArrayImporter.java +++ b/java/c/src/main/java/org/apache/arrow/c/ArrayImporter.java @@ -143,7 +143,10 @@ private List importBuffers(ArrowArray.Snapshot snapshot) { if (bufferPtr != NULL) { // TODO(roee88): an API for getting the size for each buffer is not yet // available - buffer = new ArrowBuf(referenceManager, null, Integer.MAX_VALUE, bufferPtr); + // When the buffer is StructVector#validityBuffer, the length need + // to set Integer.MAX_VALUE / 8. Otherwise it will throw int overflow + // exception when calling StructVector#getValidityBufferValueCapacity(). + buffer = new ArrowBuf(referenceManager, null, Integer.MAX_VALUE / 8, bufferPtr); } result.add(buffer); }