Writer: compact zstd writes one frame per array; Rust writes 8192 values per frame

Ouverte Adaptée aux débutants
#636 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

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

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
66/100
Type d'issue
Fonctionnalité
Clarté
Clairement spécifiée
Activité
Active
Stack technique
java
Domaine
data

Piste de recherche

Commence au preset compact qui appelle ZstdEncodingEncoder.forText() côté Java, où valuesPerFrame vaut 0, et compare-le à la référence Rust dans vortex-btrblocks/src/schemes/binary/zstd.rs:59, qui utilise 8192. Vérifie le chemin de lecture multi-frames pour confirmer que les frames sont découpées selon n_values, et vérifie comment la règle de fermeture de frame de 1 GiB de #633 interagit avec la nouvelle taille de frame. C'est terminé lorsque le preset compact écrit 8192 valeurs par frame et que les tests de lecture et d'aller-retour existants passent toujours.

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

Description

bug

Rust's btrblocks binary zstd scheme compresses with 8192 values per frame (vortex-btrblocks/src/schemes/binary/zstd.rs:59, from_var_bin_view_without_dict(&compacted, 3, 8192, ...)). The Java compact preset uses ZstdEncodingEncoder.forText(), i.e. valuesPerFrame = 0: one frame per array.

Both read back (Rust and Java read multiple frames by n_values), so this is an encoding-parity gap, not a correctness bug. It also means a slice scan of a Java-written compact column decompresses the whole array instead of the frames overlapping its row range.

Since #633, a Java varbin frame also closes before 1 GiB of payload (a Java-only rule that keeps every frame under the reader's 2 GiB per-frame cap); adopting Rust's 8192 values per frame would make that cap rarely matter.

Found while reviewing #633.

Langage dominant
Java
Étoiles
3
Forks
2
Merge moyen
9 h 47 min
PR mergées (30 j)
128

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 dfa1/vortex-java

Toutes les issues de dfa1/vortex-java

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

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