apache / apache/datafusion

Improve consistency and documentation on error handling in in UDFs

Offen
#11,618 12 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
enhancement
Vorherrschende Sprache
Rust
Sterne
9.3k
Forks
2.4k
Ø Merge
3 T. 11 Std.
Gemergte PRs (30 T.)
362

Beschreibung

### Is your feature request related to a problem or challenge?

When writing a new UDF, a developer needs to decide how to perform error management in functions that return `Result`, such as `return_type` and `invoke`. Looking at the existing codebase it is not obvious what are the error management best practices

# Errors in return type
- Regexp like uses an `plan_err` data types of args do not match the expected types https://github.com/apache/datafusion/blob/77311a5896272c7ed252d8cd53d48ec6ea7c0ccf/datafusion/functions/src/regex/regexplike.rs#L74 . Is this check redundant?

- Except expects two arguments but doesn't check the length, just the type https://github.com/apache/datafusion/blob/77311a5896272c7ed252d8cd53d48ec6ea7c0ccf/datafusion/functions-array/src/except.rs#L55.

# Errors in invoke

In the resize function, there is a check on argument lengths in invoke which is not present in the `return_type` function
https://github.com/apache/datafusion/blob/77311a5896272c7ed252d8cd53d48ec6ea7c0ccf/datafusion/functions-array/src/resize.rs#L27

The same function also returns `exec_err`, and `internal_datafusion_err`

### Describe the solution you'd like

As a developers of custom UDF I would like to know:
- what errors I need to check for and what are already checked by the planner (number of arguments?)
- what type of errors need to be raised in which conditions

### Describe alternatives you've considered

_No response_

### Additional context

_No response_

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit dem Vergleich von return_type und invoke in datafusion/functions/src/regex/regexplike.rs sowie datafusion/functions-array/src/except.rs und resize.rs und konzentriere dich dabei auf die Argumentprüfungen und die gemeldeten Fehlervarianten. Überprüfe, wie die Planner-Validierung mit diesen Funktionen zusammenhängt; die Aufgabe ist abgeschlossen, wenn die erwarteten Prüfungen und Fehlertypen dokumentiert sind und alle Konsistenzänderungen durch Tests abgedeckt werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rust
Bereich
documentation
Issue-Typ
Dokumentation
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
38/100

Neue Issues direkt in Ihr Postfach

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