Add sqllogictests for scans after a schema change with no write since
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
Start with the sqllogictest files in the datafusion-iceberg repo and the engine setup that runs DataFusion only, then find where a test could call Transaction::update_schema() in iceberg-rust. Confirm the dependency includes apache/iceberg-rust#2904 before writing tests. Done means sqllogictests cover column add, drop, drop-and-re-add with the same name, and rename after a schema change with no write, and they pass.
索引モデルが issue の本文から書いたものです。
説明
Is your feature request related to a problem or challenge?
apache/iceberg-rust#2904 changes TableScanBuilder::build so that a scan that doesn't pin a snapshot projects the table's current schema, not the schema of the snapshot it reads. Before it, a scan of a table whose schema changed after its last write resolved columns against the older schema. That is the root cause of #42.
That PR checks the snapshot and schema a scan resolves with unit tests. End-to-end checks of the rows read back were asked to live here as sqllogictests rather than as integration tests in iceberg-rust (review comment).
Describe the solution you'd like
Once this crate depends on an iceberg-rust release that includes apache/iceberg-rust#2904, add sqllogictests that change a table's schema after its last write, with no write since, and check what queries return:
- Column added:
SELECT *returns the new column as NULL for every existing row.WHERE c IS NULLmatches every row, andWHERE c = <value>matches none. This covers #42. - Column dropped: selecting the dropped column fails with a column-not-found error, and
SELECT *no longer returns it. - Column dropped and added back under the same name: the new column reads as NULL, not the old column's values. Data files are matched by field ID, and the new field ID isn't in any file.
- Column renamed: the values read back under the new name.
The sqllogictest engine here runs only DataFusion, and DataFusion SQL can't change an Iceberg table's schema. These tests need a way to do it, for example a setup step that calls Transaction::update_schema() or a Spark engine, as the README lists.
Additional context
- #42:
SELECT *fails after a column is added until the next write to the table. - #57 is related but not covered here: a provider built before the schema change keeps its cached schema.
- 主要言語
- Rust
- スター
- 30
- フォーク
- 30
- 平均マージ
- 3日 19時間
- マージ済み PR(30日)
- 15
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/datafusion-iceberg のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
apache/datafusion-iceberg#100 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
apache/datafusion-iceberg#85 · コメント 1 件 · リアクション 5 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
apache/datafusion-iceberg#84 ·
メンテナーはふだん 1 日以内に返信
-
Slow CI runnersオープン
難易度 4/5 3〜5日 初心者へのやさしさ 18/100
apache/datafusion-iceberg#74 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
apache/datafusion-iceberg#73 ·
メンテナーはふだん 1 日以内に返信
apache/datafusion-iceberg の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
pop-os/cosmic-applets#1619 ·
メンテナーはふだん 3 日以内に返信
-
binding:python bug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
coollabsio/orbit#72 ·
メンテナーはふだん 1 日以内に返信
-
swc_common: Mark::least_ancestor never returns when the answer is the root mark (ANT-2026-JYDQGGRT)オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
swc-project/swc-ai-issues#137 ·
-
Synth suite fails unless run from the repo root: signal_flow's default machine path is cwd-relativeオープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 80/100
Nimblesite/osprey#370 ·
メンテナーはふだん 1 日以内に返信