Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Deduplicate bucket computation in width_bucket_interval_mdn_exact

Aperta Adatta ai principianti
#26,307 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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
Tipo di issue
Refactoring
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
rust
Ambito
backend

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

enhancement good first issue help wanted spark tech debt
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 0 or num_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

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di apache/datafusion

Tutte le issue di apache/datafusion

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.