In #13664 we introduced the Diagnostic
type and DataFusionError::Diagnostic
. They allow enriching errors with messages meant for consumption by end users of an application built on top of DataFusion, by providing rich information and context that directly references locations in the SQL query. They enable features like:
See datafusion/sql/tests/cases/diagnostic
for examples on how to extract and use diagnostics:
In that PR, we only implemented diagnostics for:
GROUP BY
clauseUNION
)This issue is about using Diagnostic
in more places, and adding related tests to datafusion/sql/tests/cases/diagnostic
. We think we should at least implement the following, but suggestions are welcome and encouraged:
Diagnostic
to "function x does not exist" error #14430Diagnostic
to "invalid function argument types" error #14431Diagnostic
to "wrong number of arguments" error #14432Diagnostic
to "incompatible type in unary expression" error #14433Diagnostic
when doing = NULL
#14434Diagnostic
to "duplicate table name" error #14436Diagnostic
to syntax errors #14437Diagnostic
to "more than one column in subquery" error #14438Diagnostic
#15276The implementation should follow the steps of #13664, by calling DataFusionError.with_diagnostic
to attach a Diagnostic
to an error that is currently being returned. Tests should be added to datafusion/sql/tests/cases/diagnostic
for each newly supported scenario.
For some of these items, it might be necessary to enrich the logical types with the Span
information coming from the parser. This should be done using the datafusion::common::Spans
type (note the "s"), introduced in #13664 to add span information to datafusion::common::Column
.
It is desirable that the implementation is as little invasive as possible, in that it shouldn't require changing tons of function calls and types, unless absolutely necessary. The public facing API shouldn't change. The Diagnostic
should be attached as soon as possible to the creation of the wrapped DataFusionError
(i.e. deep in the call stack) and every error should ideally have just one Diagnostic
.
No response
Additional contextNo response
mkarbo, alan910127, alamb, edmondop, Chen-Yuan-Lai and 2 more
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4