Parquet: accept zstd compression level 0 and negative levels in `ZstdLevel`
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 72/100
Direzione di ricerca
I limiti del livello sono le costanti MINIMUM_LEVEL e MAXIMUM_LEVEL in parquet/src/compression.rs, controllate da ZstdLevel::try_new. Inizia leggendo questa validazione e i test esistenti accanto ad essa. Poiché zstd::compression_level_range() non è const, il controllo deve essere eseguito al momento della chiamata, quindi decidi come ottenere i limiti. È fatto quando i livelli 0 e i valori negativi all'interno dell'intervallo zstd vengono accettati e passati invariati, i valori fuori intervallo continuano a essere rifiutati e i test di compressione passano.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Is your feature request related to a problem or challenge? Please describe what you are trying to do.
parquet::basic::ZstdLevel::try_new accepts only levels 1 to 22 (MINIMUM_LEVEL = 1, MAXIMUM_LEVEL = 22 in parquet/src/compression.rs). zstd itself also accepts:
- level
0, which means its default level (ZSTD_CLEVEL_DEFAULT, 3) - negative "fast" levels, down to
ZSTD_minCLevel(), which trade compression ratio for speed
parquet-java (through zstd-jni) accepts both, so a writer that wants to honor a table's configured zstd level cannot do so with parquet-rs. Apache Iceberg tables, for example, can set write.parquet.compression-level to 0 or a negative value, and iceberg-java writes them; DataFusion Comet's native Iceberg writer has to fall back to the JVM writer for those tables.
Describe the solution you'd like
Let ZstdLevel accept the full range the linked zstd library supports (zstd::compression_level_range()), including 0 and negative levels, and pass them through to the encoder unchanged.
Describe alternatives you've considered
Callers can map 0 to 3 themselves, but there is no equivalent for the negative levels.
Additional context
compression_level_range() is not const, which is presumably why the bounds are hard-coded today.
- Lingua principale
- Rust
- Stelle
- 3.7k
- Fork
- 1.4k
- Merge medio
- 2g 7h
- PR unite (30g)
- 292
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/arrow-rs
-
development-process
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
apache/arrow-rs#12145 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
parquet: panic "Decoder for dict should have been set" reading a primitive column whose dictionary page is missingForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
apache/arrow-rs#12129 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
`substring` errors when the bytes under a null `Utf8` slot would be cut inside a characterForse già presa @cakeni l’ha presa 25 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
apache/arrow-rs#11590 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
i256::to_f32 double-rounds through f64Forse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
apache/arrow-rs#11316 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
`null_if_overflow_precision` resets decimal precision and scale, changing valid valuesForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di apache/arrow-rs
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
ci javascript tests
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
jonathanong/no-mistakes#3258 ·
I maintainer di solito rispondono entro 1 giorno
-
Add to bmi docsAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
eWaterCycle/bmi-rust#2 ·
-
area: cpu-engines area: fuzzer good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 91/100
hffgzktbcc-blip/ounce-core#402 ·
I maintainer di solito rispondono entro 1 giorno
-
compiler
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
HerringtonDarkholme/hd-lang#1699 ·
I maintainer di solito rispondono entro 1 giorno