trunc(x) on a column turns -0.0 into 0.0
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 75/100
Línea de trabajo
Busque la implementación de la función trunc en la base de código de DataFusion, probablemente en un archivo como expr/scalar.rs o expr/builtin.rs. El error está en la ruta de columnas donde se usa x == 0_f64. Reemplace esa condición con una verificación que preserve el signo, quizás usando x.trunc() directamente. Escriba una prueba en el módulo de prueba correspondiente para verificar que trunc(-0.0) devuelva -0.0 para una columna. Ejecute las pruebas de funciones SQL existentes para asegurarse de que no haya regresiones.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
trunc(x) drops the sign of -0.0, but only when it runs on a column. On a scalar, and for trunc(x, 0), the sign is kept.
SELECT trunc(column1), trunc(column1, 0) FROM (VALUES (CAST(-0.0 AS DOUBLE)));
-- got: 0.0, -0.0
-- expected: -0.0, -0.0
The column code path returns 0.0 for either zero:
if x == 0_f64 { 0_f64 } else { x.trunc() }
-0.0 == 0.0 is true, so -0.0 becomes 0.0. f64::trunc already keeps the sign, so plain x.trunc() would be enough.
Seen through Lance (pylance 12.0.0): trunc(x, 0) on a -0.0 column returns -0.0. This line is the same on main and in 55.1.0. I found no existing issue or PR for it.
- Lenguaje dominante
- Rust
- Estrellas
- 9.4k
- Forks
- 2.5k
- Merge medio
- 3 d 16 h
- PR fusionados (30 d)
- 372
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apache/datafusion
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
apache/datafusion#26030 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
apache/datafusion#25960 ·
Los mantenedores suelen responder en 1 día
-
Spark `xxhash64` hashes the raw bits of a NaN instead of the canonical NaNPosiblemente ocupada @mrhard9090 la tomó hace 2 días. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
apache/datafusion#25913 ·
Los mantenedores suelen responder en 1 día
-
`percentile_cont` truncates Float64 interpolation weights to six decimal placesPosiblemente ocupada @aoto-tech la tomó hace 21 días. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
apache/datafusion#25266 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
CSV null_regex is applied to schema inference but never to the reader, so matching values are not nullPosiblemente ocupada @Developer1010x la tomó hace 21 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
apache/datafusion#25213 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de apache/datafusion
Issues similares
-
Rust: `const _` gets its file's node ID, so the file node is relabelled `_` and gains a self-loopAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Graphify-Labs/graphify#4064 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
MessageField::clone copies the whole payload, even for an unset field: clone 1.4× slower than prost on small messagesPosiblemente ocupada @benedikt-bartscher la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
anthropics/buffa#549 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100