Skip to content

feat(rest): support atomic multi-table commits - #3398

Open
YuangGao wants to merge 1 commit into
apache:mainfrom
YuangGao:feat/rest-multi-table-commit
Open

YuangGao wants to merge 1 commit into
apache:mainfrom
YuangGao:feat/rest-multi-table-commit

Conversation

@YuangGao

@YuangGao YuangGao commented Oct 11, 2026 •

Copy link
Copy Markdown

Which issue does this PR close?

What changes are included in this PR?

Adds client support for POST /v1/{prefix}/transactions/commit, which commits changes to several tables atomically. Continues #2786 by @steveis

  • Transaction::prepare_commit() builds a transaction's TableCommit without refreshing or sending it; do_commit now uses it too.
  • RestCatalog::commit_transaction / RestSessionCatalog::commit_transaction send the group in one request. The server returns no metadata, so callers reload the tables; on a conflict nothing is applied.

cc @CTTY: prepare_commit takes &mut self instead of consuming the transaction, so it can still report the commit status for the cleanup planned in RFC-0003. Does that match what you have in mind?

Are these changes tested?

  • Unit tests for prepare_commit and, with mockito, the request body, 409, an unadvertised endpoint, and an empty group.
  • Integration tests against the REST fixture: two tables commit together, and a stale requirement on one table fails the group with 409 while the other table stays unchanged.

AI Disclosure

  • AI-assisted implementation.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

REST catalog: client support for atomic multi-table commits (POST /v1/{prefix}/transactions/commit)

1 participant