org.postgresql.xa
Class PGXAConnection

java.lang.Object
  extended by org.postgresql.ds.PGPooledConnection
      extended by org.postgresql.xa.PGXAConnection
All Implemented Interfaces:
PooledConnection, XAConnection, XAResource

public class PGXAConnection
extends PGPooledConnection
implements XAConnection, XAResource

The PostgreSQL implementation of XAResource. This implementation doesn't support transaction interleaving (see JTA specification, section 3.4.4) and suspend/resume. Two-phase commit requires PostgreSQL server version 8.1 or higher.

Author:
Heikki Linnakangas ([email protected])

Field Summary
 
Fields inherited from interface javax.transaction.xa.XAResource
TMENDRSCAN, TMFAIL, TMJOIN, TMNOFLAGS, TMONEPHASE, TMRESUME, TMSTARTRSCAN, TMSUCCESS, TMSUSPEND, XA_OK, XA_RDONLY
 
Constructor Summary
PGXAConnection(BaseConnection conn)
           
 
Method Summary
 void commit(Xid xid, boolean onePhase)
           
 void end(Xid xid, int flags)
          Preconditions: 1.
 void forget(Xid xid)
          Does nothing, since we don't do heuristics,
 Connection getConnection()
          XAConnection interface
 int getTransactionTimeout()
          We don't do transaction timeouts.
 XAResource getXAResource()
           
 boolean isSameRM(XAResource xares)
           
 int prepare(Xid xid)
          Preconditions: 1. xid !
 Xid[] recover(int flag)
          Preconditions: 1. flag must be one of TMSTARTRSCAN, TMENDRSCAN, TMNOFLAGS or TMSTARTTRSCAN | TMENDRSCAN 2. if flag isn't TMSTARTRSCAN or TMSTARTRSCAN | TMENDRSCAN, a recovery scan must be in progress Postconditions: 1. list of prepared xids is returned
 void rollback(Xid xid)
          Preconditions: 1. xid is known to the RM or it's in prepared state Implementation deficiency preconditions: 1. xid must be associated with this connection if it's not in prepared state.
 boolean setTransactionTimeout(int seconds)
          We don't do transaction timeouts.
 void start(Xid xid, int flags)
          Preconditions: 1. flags must be one of TMNOFLAGS, TMRESUME or TMJOIN 2. xid !
 
Methods inherited from class org.postgresql.ds.PGPooledConnection
addConnectionEventListener, addStatementEventListener, close, createConnectionEvent, removeConnectionEventListener, removeStatementEventListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface javax.sql.PooledConnection
addConnectionEventListener, addStatementEventListener, close, removeConnectionEventListener, removeStatementEventListener
 

Constructor Detail

PGXAConnection

public PGXAConnection(BaseConnection conn)
               throws SQLException
Throws:
SQLException
Method Detail

getConnection

public Connection getConnection()
                         throws SQLException
XAConnection interface

Specified by:
getConnection in interface PooledConnection
Overrides:
getConnection in class PGPooledConnection
Throws:
SQLException

getXAResource

public XAResource getXAResource()
Specified by:
getXAResource in interface XAConnection

start

public void start(Xid xid,
                  int flags)
           throws XAException
Preconditions: 1. flags must be one of TMNOFLAGS, TMRESUME or TMJOIN 2. xid != null 3. connection must not be associated with a transaction 4. the TM hasn't seen the xid before Implementation deficiency preconditions: 1. TMRESUME not supported. 2. if flags is TMJOIN, we must be in ended state, and xid must be the current transaction 3. unless flags is TMJOIN, previous transaction using the connection must be committed or prepared or rolled back Postconditions: 1. Connection is associated with the transaction

Specified by:
start in interface XAResource
Throws:
XAException

end

public void end(Xid xid,
                int flags)
         throws XAException
Preconditions: 1. Flags is one of TMSUCCESS, TMFAIL, TMSUSPEND 2. xid != null 3. Connection is associated with transaction xid Implementation deficiency preconditions: 1. Flags is not TMSUSPEND Postconditions: 1. connection is disassociated from the transaction.

Specified by:
end in interface XAResource
Throws:
XAException

prepare

public int prepare(Xid xid)
            throws XAException
Preconditions: 1. xid != null 2. xid is in ended state Implementation deficiency preconditions: 1. xid was associated with this connection Postconditions: 1. Transaction is prepared

Specified by:
prepare in interface XAResource
Throws:
XAException

recover

public Xid[] recover(int flag)
              throws XAException
Preconditions: 1. flag must be one of TMSTARTRSCAN, TMENDRSCAN, TMNOFLAGS or TMSTARTTRSCAN | TMENDRSCAN 2. if flag isn't TMSTARTRSCAN or TMSTARTRSCAN | TMENDRSCAN, a recovery scan must be in progress Postconditions: 1. list of prepared xids is returned

Specified by:
recover in interface XAResource
Throws:
XAException

rollback

public void rollback(Xid xid)
              throws XAException
Preconditions: 1. xid is known to the RM or it's in prepared state Implementation deficiency preconditions: 1. xid must be associated with this connection if it's not in prepared state. Postconditions: 1. Transaction is rolled back and disassociated from connection

Specified by:
rollback in interface XAResource
Throws:
XAException

commit

public void commit(Xid xid,
                   boolean onePhase)
            throws XAException
Specified by:
commit in interface XAResource
Throws:
XAException

isSameRM

public boolean isSameRM(XAResource xares)
                 throws XAException
Specified by:
isSameRM in interface XAResource
Throws:
XAException

forget

public void forget(Xid xid)
            throws XAException
Does nothing, since we don't do heuristics,

Specified by:
forget in interface XAResource
Throws:
XAException

getTransactionTimeout

public int getTransactionTimeout()
We don't do transaction timeouts. Just returns 0.

Specified by:
getTransactionTimeout in interface XAResource

setTransactionTimeout

public boolean setTransactionTimeout(int seconds)
We don't do transaction timeouts. Returns false.

Specified by:
setTransactionTimeout in interface XAResource


Copyright © 2017 PostgreSQL Global Development Group. All rights reserved.