Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

RecordBatchTransformer does not apply initial-default for nested fields

Aperta
#3,261 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 4 giorni

@ewoodbury ci sta già lavorando.

Dal 13/10/2026.

  • #3438 di @ewoodbury — aperta

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
45/100
Tipo di issue
Funzionalità
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
rust
Ambito
databases

Direzione di ricerca

The issue is in RecordBatchTransformer's handling of nested struct fields with initial-default. Start by examining the RecordBatchTransformer code and ColumnSource::Add for top-level defaults. Look at how defaults are tracked per field in the spec. The goal is to apply a nested field's own default when it's missing from old data, not return null or FeatureUnsupported. Check the spec's point example for the expected behavior. Running existing tests related to RecordBatchTransformer and initial-default will verify the fix.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Is your feature request related to a problem or challenge?

Problem - regarding an edge case with nested struct fields and Iceberg's initial-default option in the spec

Describe the solution you'd like

RecordBatchTransformer null-fills a nested field that is missing from an older data file. If that field has an initial-default, it returns FeatureUnsupported instead of applying the default:

initial-default of nested field {name} is not supported

Top-level fields already apply initial-default through ColumnSource::Add, but nested fields don't.

The spec tracks defaults on each field, including fields inside a struct. A parent struct's default must not embed its children's defaults. The effective value is built by applying each field's own default.

From the spec's point example: point.y has initial-default 0, and an older file has {"x": 3}. The read should return {"x": 3, "y": 0}, not null for y.

https://iceberg.apache.org/spec/#default-values

This shows up on v3 tables when a nested field was added with a non-null initial-default and older files are still in the snapshot. Those reads fail until this is implemented, which is preferable to silently returning nulls.

(Created to track as for the future since it's out of scope for #3255)

Willingness to contribute

I can contribute to this feature independently

Lingua principale
Rust
Stelle
1.4k
Fork
604
Merge medio
5g 4h
PR unite (30g)
64

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di apache/iceberg-rust

Tutte le issue di apache/iceberg-rust

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.