apache / apache/iceberg-cpp

Support column default values (initial-default / write-default)

オープン
#730 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
C++
スター
221
フォーク
124
平均マージ
1日 16時間
マージ済み PR(30日)
21

説明

Sub-issue of #637 (item 2: Column Default Values).
Iceberg v3 allows schema evolution with column default values (spec — Default values (https://iceberg.apache.org/spec/#default-values)):
- initial-default: returned for rows that predate the column's addition, i.e. applied on the read path when a data file does not contain the field.
- write-default: applied on the write path when a writer does not supply a value or the column.

Planned scope:
- [x] Schema model: carry initial-default / write-default on SchemaField
- [x] JSON serde: parse/write the two fields using single-value serialization
- [x] Read path: project missing columns as the initial-default constant instead of null when reading data files written before the column existed
- [x] Write path: apply write-default where values are omitted; validation (e.g. adding a required column requires an initial-default, v3+ gating)
I plan to work on this and will send PR(s) referencing this issue.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

Iceberg v3 の default-values 仕様から始め、SchemaField、JSON serde、および scope で指定された読み取りパスと書き込みパスを追跡します。完了条件は、initial-default と write-default の動作が実装されていることです。これには、欠落したカラムの読み取り、省略された値の書き込み、指定された required-column とバージョンの検証が含まれます。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
cpp
領域
data-engineering
issue の種類
機能追加
難易度
4/5
見積もり時間
3〜5日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
42/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。