Writer: a nullable decimal column goes through vortex.masked; Rust keeps the validity on decimal_byte_parts' child or drops it

Abierto
#646 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
25/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
java, rust
Área
data

Línea de trabajo

Start with MaskedEncodingEncoder on the Java writer side, where a nullable decimal gets wrapped in vortex.masked even when all rows are valid, and compare it with Rust's DecimalScheme and split_decimal, which keep validity on the most-significant-part child. The test to run is DecimalBytePartsInteropIntegrationTest, widened to compare the full zoned stats tree. Done means the nullable decimal tree matches the Rust output, and the work should follow the validity-on-leaf approach from #604 and #635.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

perf

A nullable decimal column is encoded by MaskedEncodingEncoder, which wraps the values in vortex.masked(<values>, <validity>) even when every row is valid. Rust's DecimalScheme splits the decimal (split_decimal) keeping its validity on the most-significant-part child, and an all-valid validity writes no bitmap at all (Rust's AllValid).

Seen in the zoned layout's stats table of every decimal column (its min/max columns are nullable): for TPC-H-shaped decimal columns vortex-jni writes them as vortex.constant, vortex.decimal_byte_parts(vortex.primitive) or vortex.decimal, where vortex-java writes vortex.masked(vortex.decimal, vortex.constant):

-        vortex.decimal_byte_parts
-          vortex.primitive
+        vortex.masked
+          vortex.decimal
+          vortex.constant

(DecimalBytePartsInteropIntegrationTest with its comparison widened from the data column to the full tree.) The data column of a nullable decimal holding nulls takes the same path.

This is the decimal counterpart of what #604 did for integers (validity on the leaf, never a vortex.masked wrapper) and of the timestamp change in #635. Found while fixing #644, which covers the non-nullable value child only.

Lenguaje dominante
Java
Estrellas
3
Forks
2
Merge medio
9 h 47 min
PR fusionados (30 d)
128

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de dfa1/vortex-java

Todos los issues de dfa1/vortex-java

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.