Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

[R] Silent loss of metadata integrity for date-time and numeric attributes in write_parquet()/read_parquet()

Ouverte Adaptée aux débutants
#51,695 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@james-finn-travers y travaille déjà.

Depuis le 3/10/2026.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
72/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
r

Piste de recherche

Commencez par la sérialisation des métadonnées R utilisée par write_parquet() et read_parquet(), en vous concentrant sur l’appel à serialize() dans le correctif suggéré. Vérifiez que les attributs de type double, y compris les dates-heures, sont conservés exactement lors du passage par write_parquet()/read_parquet(), tout en garantissant que les fichiers existants restent lisibles et qu’aucune modification du lecteur n’est nécessaire.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Component: R Type: bug
Describe the bug, including details regarding any error messages, version, and platform.

Double-valued attributes, including date-times, do not round-trip through Arrow's R metadata. No warning is raised. (Tested on arrow 25.0.1, R 4.6.1, Linux.)

library(arrow)
options(digits.secs = 6)

df <- data.frame(x = 1:3)
attr(df, "updated") <- as.POSIXct("2026-10-02 14:30:15.987654321", tz = "UTC")

f <- tempfile(fileext = ".parquet")
write_parquet(df, f)
back <- read_parquet(f)

attr(df, "updated")
#> [1] "2026-10-02 14:30:15.987654 UTC"
attr(back, "updated")
#> [1] "2026-10-02 14:30:15.987653 UTC"
identical(attr(back, "updated"), attr(df, "updated"))
#> [1] FALSE
Suggested fix

Fortuitously, R already has an exact variant of the ASCII format, so the fix is simple and fully backwards compatible.

Arrow uses R_pstream_ascii_format (ascii = TRUE in base::serialize). Instead use R_pstream_asciihex_format (ascii = NA).

out <- serialize(safe_r_metadata(x, on_save = TRUE), NULL, ascii = NA)

The hex format means that doubles are written out in hex instead of decimal.

Either way, the output still starts with "A" (arrow's check) and base unserialize() reads it fine, so the reader needs no change and previous versions work with the output.

Component(s)

R

Langage dominant
C++
Étoiles
17.2k
Forks
4.4k
Merge moyen
3 j 5 h
PR mergées (30 j)
76

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de apache/arrow

Toutes les issues de apache/arrow

Issues similaires

Plus d'issues C++

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.