Deduplicate bucket computation in width_bucket_interval_mdn_exact
I maintainer di solito rispondono entro 1 giorno
@nightcityblade ci sta già lavorando.
Dal 14/10/2026.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 85/100
Direzione di ricerca
Parti da width_bucket_interval_mdn_exact in spark/src/function/math/width_bucket.rs, dove i rami "only month" e "months equals" ripetono i controlli di fuori intervallo, la guardia sulla larghezza e il clamp dei bucket. Confronta i due rami per capire quali parti differiscono, soprattutto come x, l e h vengono proiettati su f64. Estrai una funzione helper condivisa che riceve i valori proiettati e restituisce Option<i64>, poi fai in modo che entrambi i rami la chiamino. È completato quando entrambi i rami usano l'helper e i test esistenti di width_bucket passano senza modifiche.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Is your feature request related to a problem or challenge?
width_bucket_interval_mdn_exact (spark/src/function/math/width_bucket.rs#L300-L431) contains two near-identical blocks, "only month" (about L330-L366) and "months equals" (about L368-L424). Each repeats:
- the ascending/descending out-of-range checks (bucket
0ornum_buckets + 1), - the bucket-width computation with its zero / non-finite null guard,
- the floor-plus-one bucket clamp.
They differ only in how x, l and h are projected to f64 (months vs. day/nanosecond offset relative to l). Duplicated numeric edge-case handling like this is where a boundary fix ends up in only one copy.
Describe the solution you'd like
Extract fn bucket_from_f64(x: f64, l: f64, h: f64, num_buckets: i64, ascending: bool) -> Option<i64> (returning None for null). Each branch then only computes its projected (x, l, h) and calls it. Optionally move the per-row body into a helper returning Option<i64> so the continue chains disappear. The existing width_bucket tests cover the behaviour.
Describe alternatives you've considered
None.
Additional context
This is small and self-contained, a good first issue. Line references are pinned to commit 0d79252f61bd.
- Lingua principale
- Rust
- Stelle
- 9.4k
- Fork
- 2.5k
- Merge medio
- 4g 9h
- PR unite (30g)
- 329
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/datafusion
-
bug help wanted unparser
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
apache/datafusion#26316 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Use the shared aggr_test_schema in CSV scan tests instead of a local copyForse già presa @med9110 l’ha presa oggi. Apertacore enhancement good first issue help wanted tech debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
apache/datafusion#26306 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
gcd benchmarks pass number_rows: 0 for 100k-row inputsForse già presa @med9110 l’ha presa oggi. Apertabug functions good first issue help wanted tech debt
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
apache/datafusion#26297 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Struct union type coercion takes field nullability from the wrong field when field order differsForse già presa @med9110 l’ha presa oggi. Apertabug help wanted logical-expr tech debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
apache/datafusion#26296 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
apache/datafusion#26290 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di apache/datafusion
Issue simili
-
rustix::termios::Termios::OutputModes does not expost some const e.g. OLCUC for musl and macOSAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
bytecodealliance/rustix#1706 · 1 commento ·
I maintainer di solito rispondono entro 11 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
wormhole-foundation/wormhole#5062 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
RUSTSEC-2026-0348: Brotli certificate decompression can allocate up to 1 GiB before authenticationAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 60/100