Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
6e4fc17
feat(transaction): add MergingSnapshotProducer and RewriteFilesAction
hotcache Aug 21, 2026
64a5b1f
fix(transaction): support non-default partition specs in manifest fil…
hotcache Aug 21, 2026
b02fb8e
refactor(transaction): encapsulate MergingSnapshotProducer fields
hotcache Aug 21, 2026
1f412f8
refactor(transaction): address review feedback for PR1
hotcache Aug 21, 2026
0fb348c
test(transaction): add coverage for empty table rewrite and manifest …
hotcache Aug 21, 2026
1d48610
Merge branch 'main' into feat/rewrite-files-action
hotcache Aug 25, 2026
4208c44
fix(transaction): address review feedback from #3046
hotcache Aug 25, 2026
1dd97f0
Preserve survivor entries as Existing when filtering manifests
jopdorp Sep 18, 2026
243f8f3
Allow a rewrite to set the data sequence number of added files
jopdorp Sep 18, 2026
291b9b6
Run the producer validations before committing a rewrite
jopdorp Sep 18, 2026
d969ab3
Keep manifest names unique across commit attempts
jopdorp Sep 18, 2026
82ad3ae
Drop manifests an earlier snapshot left all-deleted
jopdorp Sep 18, 2026
ddafede
Refuse a rewrite when deletes landed after its starting snapshot
jopdorp Sep 18, 2026
5f81639
Run the compaction and partial rewrites against a V2 table
jopdorp Sep 18, 2026
021c3b3
Format the new code and record the rewrite action in the public API
jopdorp Sep 18, 2026
4886b5a
Merge apache/main into feat/rewrite-files-action
hotcache Sep 28, 2026
7d63061
test(transaction): run the rewrite tests against a V1 table
hotcache Sep 28, 2026
318758c
fix(transaction): name the file in the added-file content type error
hotcache Sep 28, 2026
1af9f1d
fix(transaction): fail a rewrite whose starting snapshot is gone
hotcache Sep 28, 2026
9c9f1ed
fix(transaction): fail a rewrite planned before the table had a snapshot
hotcache Sep 28, 2026
544a91f
docs(transaction): describe when a rewrite refuses to commit
hotcache Sep 28, 2026
ebf1946
refactor(transaction): build the rewrite errors with invalid_data!
hotcache Sep 28, 2026
43a09a5
test(transaction): cover rewrites on a spec-evolved table
rexminnis Sep 28, 2026
89786a8
fix(transaction): keep partition metrics in the rewrite summary
rexminnis Sep 28, 2026
8a4f780
fix(transaction): record removed files as DELETED manifest entries
hotcache Sep 29, 2026
04e4668
Merge apache/main into feat/rewrite-files-action
hotcache Sep 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions crates/iceberg/public-api.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3262,13 +3262,19 @@ pub fn iceberg::transaction::ReplaceSortOrderAction::asc(self, name: &str, null_
pub fn iceberg::transaction::ReplaceSortOrderAction::asc_with_transform(self, name: &str, transform: iceberg::spec::Transform, null_order: iceberg::spec::NullOrder) -> Self
pub fn iceberg::transaction::ReplaceSortOrderAction::desc(self, name: &str, null_order: iceberg::spec::NullOrder) -> Self
pub fn iceberg::transaction::ReplaceSortOrderAction::desc_with_transform(self, name: &str, transform: iceberg::spec::Transform, null_order: iceberg::spec::NullOrder) -> Self
pub struct iceberg::transaction::RewriteFilesAction
impl iceberg::transaction::RewriteFilesAction
pub fn iceberg::transaction::RewriteFilesAction::add_file(self, file: iceberg::spec::DataFile) -> Self
pub fn iceberg::transaction::RewriteFilesAction::data_sequence_number(self, sequence_number: i64) -> Self
pub fn iceberg::transaction::RewriteFilesAction::delete_file(self, file: iceberg::spec::DataFile) -> Self
pub struct iceberg::transaction::Transaction
impl iceberg::transaction::Transaction
pub async fn iceberg::transaction::Transaction::commit(self, catalog: &dyn iceberg::Catalog) -> iceberg::Result<iceberg::table::Table>
pub fn iceberg::transaction::Transaction::expire_snapshots(&self) -> iceberg::transaction::ExpireSnapshotsAction
pub fn iceberg::transaction::Transaction::fast_append(&self) -> iceberg::transaction::FastAppendAction
pub fn iceberg::transaction::Transaction::new(table: &iceberg::table::Table) -> Self
pub fn iceberg::transaction::Transaction::replace_sort_order(&self) -> iceberg::transaction::ReplaceSortOrderAction
pub fn iceberg::transaction::Transaction::rewrite_files(&self) -> iceberg::transaction::RewriteFilesAction
pub fn iceberg::transaction::Transaction::update_location(&self) -> iceberg::transaction::UpdateLocationAction
pub fn iceberg::transaction::Transaction::update_schema(&self) -> iceberg::transaction::UpdateSchemaAction
pub fn iceberg::transaction::Transaction::update_statistics(&self) -> iceberg::transaction::UpdateStatisticsAction
Expand Down
8 changes: 0 additions & 8 deletions crates/iceberg/src/spec/manifest/writer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -315,10 +315,6 @@ impl ManifestWriter {
/// Add a delete manifest entry. This method will update following status of the entry:
/// - Update the entry status to `Deleted`
/// - Set the snapshot id to the current snapshot id
///
/// # TODO
/// Remove this allow later
#[allow(dead_code)]
pub(crate) fn add_delete_entry(&mut self, mut entry: ManifestEntry) -> Result<()> {
self.check_data_file(&entry.data_file)?;
entry.status = ManifestStatus::Deleted;
Expand Down Expand Up @@ -350,10 +346,6 @@ impl ManifestWriter {

/// Add an existing manifest entry. This method will update following status of the entry:
/// - Update the entry status to `Existing`
///
/// # TODO
/// Remove this allow later
#[allow(dead_code)]
pub(crate) fn add_existing_entry(&mut self, mut entry: ManifestEntry) -> Result<()> {
self.check_data_file(&entry.data_file)?;
entry.status = ManifestStatus::Existing;
Expand Down
1 change: 1 addition & 0 deletions crates/iceberg/src/spec/snapshot_summary.rs
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,7 @@ pub(crate) fn update_snapshot_summaries(
if summary.operation != Operation::Append
&& summary.operation != Operation::Overwrite
&& summary.operation != Operation::Delete
&& summary.operation != Operation::Replace
{
return Err(invalid_data!("Operation is not supported."));
}
Expand Down
Loading
Loading