iceberg-catalog-glue pushes all historical schema fields to Glue, causing duplicate columns in Glue UI
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 72/100
Research direction
Start in crates/catalog/glue/src/schema.rs at from_iceberg and the visit_schema loop around lines 57-63. Verify how current and historical schemas become Glue TableInput.storage_descriptor.columns; done means Glue receives only the current schema's fields while historical schemas remain in Iceberg metadata.
Written by the indexing model from the issue text.
Description
Apache Iceberg Rust version
None
Describe the bug
When using iceberg-catalog-glue, every call to update_table pushes ALL historical schema versions' fields to AWS Glue's column definition. This causes Glue Console to display duplicate columns — one entry per schema version for every field that existed in any past schema.
To Reproduce
- Create an Iceberg table via the Glue catalog
- Insert data with new fields, triggering schema evolution (AddSchema + SetCurrentSchema)
- Observe the table in AWS Glue Console → Table → Schema
Expected behavior
Only the current schema's fields should be pushed to Glue's column definition. Historical schema versions are already preserved in the Iceberg metadata file on S3.
https://github.com/apache/iceberg-rust/blob/main/crates/catalog/glue/src/schema.rs#L57-L63
for schema in metadata.schemas_iter() {
if schema.schema_id() == current_schema.schema_id() {
continue;
}
visit_schema(schema, &mut builder)?;
}
The from_iceberg function visits the current schema (marked as current=true), then iterates over all historical schemas and visits them too (marked as current=false). All of these are included in the Glue TableInput.storage_descriptor.columns. Glue's API does not filter by iceberg.field.current, so the UI displays all of them.
Willingness to contribute
None
- Dominant language
- Rust
- Stars
- 1.4k
- Forks
- 574
- Avg merge
- 1d 18h
- Merged PRs (30d)
- 84
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from apache/iceberg-rust
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
apache/iceberg-rust#3234 · 1 reaction ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
apache/iceberg-rust#3229 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
apache/iceberg-rust#3222 · 1 comment ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
apache/iceberg-rust#2929 · 1 comment ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
apache/iceberg-rust#2923 · 1 comment · 2 reactions ·
All issues in apache/iceberg-rust
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
gitbutlerapp/gitbutler#15998 · 1 comment ·
-
bug triage:deciding
Difficulty 1/5 Under an hour Newbie friendliness 88/100
open-telemetry/otel-arrow#4132 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
bitcoindevkit/bdk-ffi#1125 ·