jbrown9513 opened a new pull request, #3013: URL: https://github.com/apache/iceberg-rust/pull/3013
## Which issue does this PR close? None filed — happy to open one if preferred. ## What changes are included in this PR? Adds a public constructor `TableCommit::from_parts(ident, requirements, updates)`. Today `TableCommit` can only be produced by the transaction action set, which covers the common commit shapes (fast-append, schema/property updates, and since 0.10 snapshot expiry) but not commits built at the manifest/metadata layer. The concrete case: an engine running external compaction writes rewritten data files and new manifests itself, and needs to submit a REPLACE snapshot through `Catalog::update_table` with compare-and-swap requirements on the branch head. There is currently no public way to construct that `TableCommit`, so such engines end up forking the crate or transmuting around the privacy boundary. This exposes the same construction the transaction layer uses internally. The doc comment states the caller's obligations: requirements that make the commit safe to retry, and updates that keep the metadata consistent. No behavior change for existing APIs; `public-api.txt` updated. ## Are these changes tested? Covered by existing construction/`apply` tests via the transaction path; the constructor itself is a plain field assembly. We (Verglas) have been running this exact patch in production against 0.9.1 and 0.10.1 for external compaction commits, exercised by our compaction integration tests. -- 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]
