Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search archives
  Advanced Search

Re: a simple example of XA (not working)


  • From: Kris Jurka <books(at)ejurka(dot)com>
  • To: Heikki Linnakangas <heikki(at)enterprisedb(dot)com>
  • Cc: Luca Ferrari <fluca1978(at)infinito(dot)it>, pgsql-jdbc(at)postgresql(dot)org
  • Subject: Re: a simple example of XA (not working)
  • Date: Fri, 22 Jun 2007 17:05:02 -0400 (EDT)
  • Message-id: <Pine.BSO.4.64.0706221659120.23726@leary.csoft.net> <text/plain>



On Sun, 17 Jun 2007, Heikki Linnakangas wrote:

getConnection sets autocommit to false, so even though start set it to true, it's reset to false in the call to getConnection. Attached patch fixes that by explicitly setting autocommit to the right mode in PGXAConnection.getConnection.


I don't think this fixes the problem completely if you have code that calls XAConnection.getConnection more than once:

PGXADataSource xads = new PGXADataSource();
XAConnection xaconn = xads.getXAConnection();
XAResource xares = xaconn.getXAResource();

xares.start(xid, XAResource.TMNOFLAGS);

Connection conn1 = xaconn.getConnection();
conn1.createStatement().executeUpdate(...);

Connection conn2 = xaconn.getConnection();

The second call to get connection will result in:

setAutoCommit(true);
setAutoCommit(false);

on the real underlying connection, which will end up committing that part of the transaction.

Kris Jurka



Home | Main Index | Thread Index

Privacy Policy | About PostgreSQL
Copyright © 1996 – 2012 PostgreSQL Global Development Group