Type signature matching errors are overly verbose and show internal details
- Vorherrschende Sprache
- Rust
- Sterne
- 9.3k
- Forks
- 2.4k
- Ø Merge
- 3 T. 11 Std.
- Gemergte PRs (30 T.)
- 360
Beschreibung
## Description
After upgrading to DataFusion 52, error messages for function signature mismatches have become less concise and helpful. When a user tries to call an aggregate function with an unsupported type, they now see verbose internal errors instead of user-friendly messages.
This regression was introduced in PR #18769 ("Refactor avg & sum signatures away from user defined"), which was part of the broader effort in #12725 to avoid use of `Signature::user_defined`.
## To Reproduce
```sql
CREATE TABLE test (bool_col BOOLEAN);
SELECT SUM(bool_col) FROM test;
```
**Before (DataFusion 51):**
```
Error during planning: Execution error: Function 'sum' user-defined coercion failed with "Execution error: Sum not supported for Boolean" No function matches the given name and argument types 'sum(Boolean)'. You might need to add explicit type casts.
Candidate functions:
sum(UserDefined)
```
The key message **"Sum not supported for Boolean"** was clear and actionable.
**After (DataFusion 52):**
```
Error during planning: Internal error: Function 'sum' failed to match any signature, errors: Internal error: Expect TypeSignatureClass::Decimal but received NativeType::Boolean, DataType: Boolean.
This issue was likely caused by a bug in DataFusion's code. Please help us to resolve this by filing a bug report in our issue tracker: https://github.com/apache/datafusion/issues,Internal error: Expect TypeSignatureClass::Native(LogicalType(Native(UInt64), UInt64)) but received NativeType::Boolean, DataType: Boolean.
This issue was likely caused by a bug in DataFusion's code...
[repeats for each signature variant]
Candidate functions:
sum(Coercion(TypeSignatureClass::Decimal))
sum(Coercion(TypeSignatureClass::Native(LogicalType(Native(UInt64), UInt64)), implicit_coercion=...))
...
```
### Problems With New Error
1. **Misleading**: Says "Internal error" and asks users to file a bug report, but this is a user error (wrong argument type), not a DataFusion bug
2. **Verbose**: Shows every failed signature match attempt with internal type system details (`TypeSignatureClass::Native(LogicalType(...))`)
3. **Lost context**: The meaningful message "Sum not supported for Boolean" is no longer present
Beitragsleitfaden
Rechercherichtung
Reproduziere das Problem mit dem SQL-Beispiel und vergleiche das durch PR #18769 eingeführte Verhalten beim Abgleich von Signaturen, wobei der Ersatz für Signature::user_defined im Mittelpunkt steht. Verfolge, wie nicht unterstützte Argumenttypen von Aggregatfunktionen gemeldet werden. Als abgeschlossen gilt die Änderung, wenn benutzerseitige Fehlermeldungen prägnant und handlungsorientiert sind, den aussagekräftigen Kontext des nicht unterstützten Typs beibehalten und interne Signaturdetails auslassen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- rust, sql
- Bereich
- databases
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100