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

Aberta Para iniciantes
#636 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
66/100
Tipo de issue
Funcionalidade
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
java
Domínio
data

Direção de pesquisa

Comece no preset compact que chama ZstdEncodingEncoder.forText() do lado Java, onde valuesPerFrame é 0, e compare-o com a referência em Rust em vortex-btrblocks/src/schemes/binary/zstd.rs:59, que usa 8192. Verifique o caminho de leitura com múltiplos frames para confirmar que os frames são divididos por n_values, e verifique como a regra de fechamento de frame de 1 GiB do #633 interage com o novo tamanho de frame. Está concluído quando o preset compact grava 8192 valores por frame e os testes existentes de leitura e de ida e volta continuam passando.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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.

Linguagem predominante
Java
Estrelas
3
Forks
2
Merge médio
14h 59min
PRs com merge (30d)
137

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de dfa1/vortex-java

Todas as issues de dfa1/vortex-java

Issues semelhantes

Mais issues de Java

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.