Danny Milosavljevic wrote:
> Hi,
>
> We (Fabalabs) are looking into adding XA support (distributed
> transactions) to Postgresql.
>
> I have been searching the web and came up with
> http://www.nabble.com/Re%3A-Postgres-XA-support-t226681.html#a633000
> which cites some design difficulty.
That mail discusses problems we had trying to implement XADataSource in
the JDBC driver. Things have evolved from that, and we have a working
solution that works. It doesn't support some of the advanced features,
suspend/resume and transaction interleaving in particular, but support
for those is rather flaky in other DBMS's as well, and it's not a
problem in practice because J2EE application server implementations work
well without them. Please read all the more recent discussions on
pgsql-jdbc mailing list on the subject if you want to contribute.
> It is the case that the X/Open XA standard mandates "transaction
> branches" that are managed by calls to xa_start()/xa_end() in an
> out-of-band manner (via some kind of exported C VMT, sigh), in parallel
> to "native resource manager access" and so Michael Allman's objections
> (see link above) are correct when one assumes one single persistent
> postgresql connection per database prevailing, and a transaction manager
> that arbitrarily commands when to start/end transaction branches.
>
> What is the current status?
As I said above, we have working solution for the JDBC driver. I'm not
sure if what we have would suffice for a native C XA client library.
-- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com