Обсуждение: BUG #2444: XA Connections given by posgres driver has auto-commit value false by default
BUG #2444: XA Connections given by posgres driver has auto-commit value false by default
От
"Jagadish Prasath Ramu"
Дата:
The following bug has been logged online: Bug reference: 2444 Logged by: Jagadish Prasath Ramu Email address: jagadish.ramu@Sun.COM PostgreSQL version: posgres driver Operating system: Fedora Core 4, Solaris Description: XA Connections given by posgres driver has auto-commit value false by default Details: Problem with PostgresDriver : postgresql-8.1-405.jdbc3.jar I am using the above driver to get an XA Connection and I found that auto-commit value of it is false by default. Source : org/postgresql/xa/PGXAConnection.java Constructor : PGXAConnection(BaseConnection conn) throws SQLException { super(conn, false); this.conn = conn; this.conn.setAutoCommit(false); this.state = STATE_IDLE; this.logger = conn.getLogger(); } From JDBC Specification 3.0, Chapter 10.1.1 > Disabling AutoCommit mode : " The default is for auto-commit mode to be enabled when the Connection object is created. If the value of auto-commit is changed in the middle of a transaction, the current transaction is committed. It is an error to enable auto-commit for a connection participating in a distributed transaction, as described in Chapter 12 âDistributed Transactionsâ. " Chapter 12 > 12.4 Transaction Management : "In contrast to the local case, the boundaries of a distributed transaction must be controlled by an external transaction manager that is coordinating the work of multiple connections. For this reason, it is an error for applications to call any of the following Connection methods while they are participating in a distributed transaction: setAutoCommit(true) commit rollback setSavepoint The JDBC driver throws an SQLException if one of these operations is attempted on a connection that is participating in a distributed transaction. If the connection is later used for a local transaction, these operations are legal at that point." From these excerpts what I could understand is auto-commit for XA's connection need to be true when created and auto-commit can not be set to true when a transaction in progress. Thanks, -Jagadish