Improve consistency and documentation on error handling in in UDFs
- 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
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