PostgresPro cluster team wants to announce proposal for eXtensible Transaction Manager API and reference implementation of distributed transaction manager (pg_dtm). pg_dtm is just a standard PostgreSQL extension which should be installed in normal way.
xtm.patch patches PostgreSQL core by replacing direct calls of 7 TM functions with indirect calls and
At first I was concerned about recovery, but that looks to be covered.
PostgreSQL assumes that top-level xid commit is atomic, along with all of its subtransactions. So the API having access to only Get/Set at the xid level would not work. We would need TransactionIdSetTreeStatus() rather than just SetStatus. GetStatus is not atomic.
adding 3 addition events to transaction commit callbacks:
Those look uncontentious, so we should add those anyway in a sub-patch.
We have also pgDTM implementation which is using timestamps (system time) as CSNs. It is also based on the same XTM transaction API. We will publish it later once we clarify problems with recovery and performance with this approach.
That is most interesting part, so it needs to be published.
At present, I can't tell whether you need subtrans and multixact calls in the API as well. I would imagine we probably do, though we might imagine an implementation that didn't support those concepts.
--
Simon Riggs http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services