apache / apache/iceberg-rust

Gate each transaction action by supported table format versions

Open
#3,041 2 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Rust
Stars
1.4k
Forks
567
Avg merge
2d 2h
Merged PRs (30d)
93

Description

### Is your feature request related to a problem or challenge?

Transaction actions (RowDelta, RewriteFiles, Append) each have logic dependent on the table format version - specifically, their validations. Thus, as we adopt new table format version support we need a way to avoid incorrect behaviors being applied to newer table formats.

Additionally, I'd like to avoid making adopting V3 support a "big bang" change and allow for incremental support.

### Describe the solution you'd like

I propose that we add a method to `TransactionAction` which specifies which table format versions it supports. Thus, one code change can be "update appends to support V3" merged in isolation from, for example, RewriteFiles which needs to check no new manifest delete vectors were applied during its rewrite.

### Willingness to contribute

I can contribute to this feature independently

Contributor guide

Open the contributing guide

Research direction

Start by locating the TransactionAction definition and the RowDelta, RewriteFiles, and Append implementations, then inspect their format-version-dependent validations. Done means each action declares the table format versions it supports and validation is gated so V3 support can be added incrementally for individual actions.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
databases
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.