Type signature matching errors are overly verbose and show internal details
- Lingua principale
- Rust
- Stelle
- 9.3k
- Fork
- 2.4k
- Merge medio
- 3g 11h
- PR unite (30g)
- 362
Descrizione
## 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
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Riproduci il problema con l’esempio SQL e confronta il comportamento di corrispondenza delle firme introdotto da PR #18769, concentrandoti sulla sostituzione di Signature::user_defined. Traccia il modo in cui vengono segnalati i tipi di argomento degli aggregati non supportati. Il lavoro è completato quando gli errori visibili all’utente sono concisi e azionabili, mantengono il contesto significativo del tipo non supportato e omettono i dettagli interni della firma.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- rust, sql
- Ambito
- databases
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 45/100