apache / apache/datafusion

Replace `Box`es with `Arc` in the `Expr` `enum`.

Aperta
#9,577 17 commenti 2 reazioni 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?

_No response_

### Describe the solution you'd like

According to following stackoverflow [discussion](https://stackoverflow.com/a/76403415/10554257). `Box`s can deep copy when called with `.clone()` method (according to `.clone()` implementation of the underlying type.).

For `Box` this is the case. I think this usage might be the reason of some deep stack usages seen during the planning.

See related issues: [#9375](https://github.com/apache/arrow-datafusion/issues/9375), [#8837](https://github.com/apache/arrow-datafusion/issues/8837).

I think, replacing `Box` usages with `Arc` under the `enum Expr` would improve performance. I am not familiar with the implications of these two approaches in other places. I wonder what community thinks about this change. Would it be better, unnecessary, etc?

### Describe alternatives you've considered

_No response_

### Additional context

_No response_

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia con l’enum Expr e i suoi utilizzi di Box, poi leggi le issue correlate #9375 e #8837 e la discussione collegata su Stack Overflow. Individua le implicazioni della sostituzione di questi box con Arc per tutti i caller e i test; il lavoro sarà completato quando sarà stato concordato un design e sarà dimostrato che la modifica migliora l’utilizzo dello stack segnalato senza alterare il comportamento.

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

Valutazione

Stack tecnologico
rust
Ambito
backend, performance
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.