Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 8 additions & 0 deletions crates/iceberg/src/spec/manifest/writer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,14 @@ impl ManifestWriter {
Ok(())
}

/// Add a deleted manifest entry, preserving the original sequence numbers.
pub(crate) fn add_deleted_entry(&mut self, mut entry: ManifestEntry) -> Result<()> {
self.check_data_file(&entry.data_file)?;
entry.status = ManifestStatus::Deleted;
self.add_entry_inner(entry)?;
Ok(())
}

/// Add an file as existing manifest entry. The original data and file sequence numbers, snapshot ID,
/// which were assigned at commit, must be preserved when adding an existing entry.
pub fn add_existing_file(
Expand Down
5 changes: 4 additions & 1 deletion crates/iceberg/src/transaction/append.rs
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ impl TransactionAction for FastAppendAction {
self.key_metadata.clone(),
self.snapshot_properties.clone(),
self.added_data_files.clone(),
vec![],
);

// validate added files
Expand Down Expand Up @@ -138,7 +139,9 @@ impl SnapshotProduceOperation for FastAppendOperation {
Ok(manifest_list
.entries()
.iter()
.filter(|entry| entry.has_added_files() || entry.has_existing_files())
.filter(|entry| {
entry.has_added_files() || entry.has_existing_files() || entry.has_deleted_files()
})
.cloned()
.collect())
}
Expand Down
7 changes: 7 additions & 0 deletions crates/iceberg/src/transaction/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ mod action;

pub use action::*;
mod append;
mod overwrite;
mod snapshot;
mod sort_order;
mod update_location;
Expand All @@ -71,6 +72,7 @@ use crate::spec::TableProperties;
use crate::table::Table;
use crate::transaction::action::BoxedTransactionAction;
use crate::transaction::append::FastAppendAction;
use crate::transaction::overwrite::OverwriteAction;
use crate::transaction::sort_order::ReplaceSortOrderAction;
use crate::transaction::update_location::UpdateLocationAction;
use crate::transaction::update_properties::UpdatePropertiesAction;
Expand Down Expand Up @@ -141,6 +143,11 @@ impl Transaction {
FastAppendAction::new()
}

/// Creates an overwrite action.
pub fn overwrite(&self) -> OverwriteAction {
OverwriteAction::new()
}

/// Creates replace sort order action.
pub fn replace_sort_order(&self) -> ReplaceSortOrderAction {
ReplaceSortOrderAction::new()
Expand Down
Loading
Loading