apache / apache/datafusion

Avoid masking errors and producing suboptimal plans

Aperta
#11,285 0 commenti 1 reazione 0 assegnatari Vedi su GitHub
enhancement
Lingua principale
Rust
Stelle
9.3k
Fork
2.4k
Merge medio
3g 11h
PR unite (30g)
360

Descrizione

### Is your feature request related to a problem or challenge?

`Optimizer` returns early when a rewrite produces a certain plan for the second time.
Producing same plan again is considered a problem. Returning early is to prevent (avoidable) failure for the user, however

- it can masks actual problems (we don't know when optimization finishes early)
- it can lead to suboptimal plan being executed, which may be very expensive -- for example containing cross join because predicates weren't pushed into the join yet

### Describe the solution you'd like

Do not mask problems. Let the code fail fast, so that bugs are clear.
As interim solution, we can have a flag allowing user to recover by restoring current lenient behavior.

This can be modelled after existing `datafusion.optimizer.skip_failed_rules` config which serves similar purpose.

### Describe alternatives you've considered

_No response_

### Additional context

originates from https://github.com/apache/datafusion/pull/5623#discussion_r1664186593
cc @mslapek @alamb

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia individuando il percorso di Optimizer che restituisce in anticipo quando una riscrittura produce due volte lo stesso piano, quindi confronta il suo comportamento con la configurazione esistente datafusion.optimizer.skip_failed_rules. Il lavoro è completo quando i piani ripetuti non nascondono più silenziosamente gli errori di ottimizzazione per impostazione predefinita e un opt-out documentato preserva il comportamento permissivo attuale.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
rust
Ambito
databases
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
42/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.