apache / apache/arrow-java

Truly unchecked getters

Open
#1,252 0 comments 0 reactions 0 assignees View on GitHub
Type: enhancement
Dominant language
Java
Stars
94
Forks
152
Avg merge
3d 16h
Merged PRs (30d)
11

Description

### Describe the enhancement requested

Right now the library integrating with arrow-java needs to resort to hacks of setting environment variable or system property at runtime if it knows its usages of arrow-java can omit null and bounds checking. However, that is not true for all of the usages in the given process leading to invalid data reads or segfaults.

To avoid this pitfall I suggest we add getUnchecked apis that NEVER do any null and bound checking but put the responsibility on the caller to guard against their possibility. For example in apache iceberg https://github.com/apache/iceberg/blob/23b5ce8eeca2d894c7973e19caa5c5ec02b4e4b8/spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkParquetReaders.java#L44-L51

These apis would make it easy to mix libraries that use arrow as an implementation detail along with user code that operates directly on arrow arrays

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the existing Arrow array getter APIs and the unchecked-access usage in Iceberg's VectorizedSparkParquetReaders.java at the linked lines. The issue names no arrow-java files or tests, so first identify which getter families and test locations are affected. Done should mean the requested unchecked APIs are consistently available and their caller-responsibility behavior is covered by tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
data-engineering
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.