Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Deduplicate spark_ceil and spark_floor and port floor's decimal boundary tests to ceil

Abierto Apto para principiantes
#6,974 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@med9110 ya está trabajando en esto.

Desde el 15/10/2026.

Evaluación

Dificultad
2/5
Tiempo estimado
Medio día
Aptitud para principiantes
68/100
Tipo de issue
Refactorización
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
rust
Área
backend

Línea de trabajo

Empieza con las pruebas de límites en native/spark-expr/src/math_funcs/floor.rs, test_floor_decimal128_i64_boundary_array y test_floor_decimal128_large_scale_array, y compáralas con ceil.rs, que no las tiene. Porta ambas pruebas a ceil.rs contra decimal_ceil_pow10, manteniendo los valores esperados específicos de ceil. Se considera terminado cuando las pruebas portadas pasan con cargo test en native/spark-expr. El refactor del módulo compartido del segundo paso es trabajo de diseño y debe dejarse a un mantenedor.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

area:expressions enhancement help wanted requires-triage rust tech debt
What is the problem the feature request solves?

native/spark-expr/src/math_funcs/ceil.rs and floor.rs are the same module with ceil/floor and div_ceil/div_floor swapped. The spark_* dispatch, decimal_*_f, decimal_*_pow10::<EXP> with its i64 fast path, and the cold *_wide fallback are identical, as are the first seven tests.

The copies have already diverged in their tests. floor.rs has test_floor_decimal128_i64_boundary_array and test_floor_decimal128_large_scale_array, which exercise the i64/i128 switch and the runtime fallback. ceil.rs has neither, even though decimal_ceil_pow10 has the same boundary logic. Any future fix to the fast path has to be made twice, and today only floor's version is tested at the boundary.

Describe the potential solution
  1. Port floor's boundary and large-scale tests to ceil. This is the quick win and could land on its own.
  2. Move the shared decimal rounding into math_funcs/utils.rs, generic over a rounding mode (e.g. a trait with Ceil/Floor marker types providing the i64 and i128 division), and make spark_ceil/spark_floor thin wrappers over one generic function. Parameterise the tests by mode.
Additional context

Line references are pinned to commit 7d8d9b1544b7.

Lenguaje dominante
Scala
Estrellas
1.3k
Forks
391
Merge medio
2 d 12 h
PR fusionados (30 d)
428

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de apache/datafusion-comet

Todos los issues de apache/datafusion-comet

Issues similares

Más issues de Scala

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.