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]

Reply via email to