alexjbuck opened a new issue, #1939:
URL: https://github.com/apache/iceberg-rust/issues/1939
### Is your feature request related to a problem or challenge?
In the current implementation you cannot simultaneously create a snapshot
through the FastAppendAction transaction API _and_ add a tag to the new
snapshot reference.
Without the atomic transaction guarantees, it is possible for other
processes to add new snapshots
and cleanup old snapshots (including the one _we_ just created) before a tag
can be added to the
snapshot, thus protecting it from most automated snapshot expiration
policies.
With the atomic guarantees, we can guarantee that either our data was not
committed into the table,
or it was _and_ it has a tagged snapshot reference that is protected from
expiry.
The FastAppendAction currently creates a new snapshot an then updates the
main reference to point to this new snapshot.
There is no set of Transaction actions that supports the SetSnapshotRef
update for custom tags.
### Describe the solution you'd like
I would like a method (`.with_tag(tag:&str)`?) on the `FastAppendAction`
that allows for this sort of calling pattern:
```rust
let tx = Transaction::new(&table);
let action = tx
.fast_append()
.add_data_files(data_files)
.with_tag("v1.0.0");
let tx = action.apply(tx)?;
let table = tx.commit(&catalog).await?;
```
This extends the fast_append() action which already uses the
`SetSnapshotRef`--but specifically for the `main` branch--to be able to also
`SetSnapshotRef` for custom tags.
### Willingness to contribute
I can contribute to this feature independently
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]