apache / apache/arrow-java

Truly unchecked getters

Offen
#1,252 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Type: enhancement
Vorherrschende Sprache
Java
Sterne
94
Forks
152
Ø Merge
3 T. 16 Std.
Gemergte PRs (30 T.)
11

Beschreibung

### 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

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit der Überprüfung der vorhandenen Arrow-Array-Getter-APIs und der Verwendung ungeprüfter Zugriffe in Icebergs VectorizedSparkParquetReaders.java an den verlinkten Zeilen. Das Issue nennt keine arrow-java-Dateien oder Tests; identifiziere daher zunächst, welche Getter-Familien und Teststellen betroffen sind. Als abgeschlossen gilt die Arbeit, wenn die angeforderten ungeprüften APIs durchgängig verfügbar sind und ihr Verhalten, bei dem die Verantwortung beim Aufrufer liegt, durch Tests abgedeckt ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
data-engineering
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Ruhig
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.