trunc(x) on a column turns -0.0 into 0.0
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 75/100
Piste de recherche
Recherchez l'implémentation de la fonction trunc dans la base de code DataFusion, probablement dans un fichier comme expr/scalar.rs ou expr/builtin.rs. Le bogue se trouve dans le chemin de colonne où x == 0_f64 est utilisé. Remplacez cette condition par une vérification qui préserve le signe, peut-être en utilisant directement x.trunc(). Écrivez un test dans le module de test correspondant pour vérifier que trunc(-0.0) renvoie -0.0 pour une colonne. Exécutez les tests de fonctions SQL existants pour vous assurer qu'il n'y a pas de régressions.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- Rust
- Étoiles
- 9.6k
- Forks
- 2.6k
- Merge moyen
- 4 j 5 h
- PR mergées (30 j)
- 319
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de apache/datafusion
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
apache/datafusion#26999 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
apache/datafusion#26998 ·
Les mainteneurs répondent en général sous 1 jour
-
`repeat` on `LargeUtf8` aborts the process on a result size no allocation can satisfyPeut-être pris @huong8373tt-beep l’a pris aujourd’hui. Ouvertebug good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
apache/datafusion#26948 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
[Bug] atan2 does not normalize -0.0 the way Spark doesPeut-être pris @pujitha24 l’a pris il y a 4 jours. Ouvertebug spark
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
apache/datafusion#26333 ·
Les mainteneurs répondent en général sous 1 jour
-
Unparser turns NULL list literals into `[]` and fails on NULL struct/map literalsPeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouvertebug help wanted unparser
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
apache/datafusion#26316 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de apache/datafusion
Issues similaires
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 70/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
limitlessprojects/Go-Hybrid#3342 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
librespeed/speedtest-rust#52 · 1 commentaire ·
-
enhancement needs-triage
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
bherbruck/solvecraft#11246 · 1 commentaire · 1 réaction ·
-
example
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
rust-lang-nursery/rust-cookbook#954 ·
Les mainteneurs répondent en général sous 1 jour