apache / apache/datafusion

Additional `IN` / `NOT IN` simplifications

Aperta
#8,970 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)
360

Descrizione

In the following on PR, I think we can move inlist related simplifier logic to `inlist_simplifier`.
Steps in inlist_simplifier
1. early stage simplification like `expr IN () --> false`, `null IN/NOT IN`
2. convert long OR chain or AND chain to InList expressions like what `or_in_list_simplifier` does
3. shorten InList expressions like what `inlist_simplifier` in this PR does
4. convert final inlist to OR chain or AND chain if len < 3. Move inlist related simplifier out from `expr_simplifier`

In this way, when the logic grows more complex, we can easily find out related conversion about specific Expr

_Originally posted by @jayzhan211 in https://github.com/apache/arrow-datafusion/issues/8949#issuecomment-1906115890_

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia leggendo la logica esistente di expr_simplifier, inlist_simplifier e or_in_list_simplifier per tracciare come vengono gestite le espressioni IN e NOT IN. Il refactoring è completato quando i passaggi elencati di semplificazione iniziale, conversione delle catene, accorciamento ed espansione finale sono organizzati tramite inlist_simplifier, senza che rimanga logica specifica di inlist in expr_simplifier.

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

Valutazione

Stack tecnologico
rust, sql
Ambito
databases
Tipo di issue
Refactoring
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
38/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.