apache / apache/datafusion

Type signature matching errors are overly verbose and show internal details

Aperta
#20,501 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub
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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.