
|
If you were logged in you would be able to see more operations.
|
|
|
|
File Attachments:
|
|
|
Issue Links:
|
Duplicate
|
|
|
|
This issue is duplicated by:
|
|
DERBY-346
running jdbcapi/xaSimplePostive.sql under the DerbyNetClient framework gives error "Cannot set holdability ResultSet.HOLD_CURSORS_OVER_COMMIT for a global transaction."
|
|
|
|
|
|
|
| Resolution Date: |
12/Apr/06 02:26 AM
|
|
Reporting for Mamta Satoor, filed on Derby-dev list.
I think there is a bug in Derby when the user code tries to get the
Connection object from XAConnection "inside" the global transaction.
In this case, the Connection object gets created with un-supported
holdability. Look at the following piece of code and it's output to
see what exactly happens
EmbeddedXADataSource dscsx = new EmbeddedXADataSource();
dscsx.setDatabaseName("wombat");
XAConnection xac = dscsx.getXAConnection("fred", "wilma");
XAResource xr = xac.getXAResource();
xid = getXid(27, (byte) 21, (byte) 01);
xr.start(xid, XAResource.TMNOFLAGS);
conn1 = xac.getConnection();
System.out.println("This is a bug. Connection's holdability should
have been CLOSE_CURSORS_AT_COMMIT since it is in the global
transaction");
System.out.println("CONNECTION(in xa transaction) HOLDABILITY " +
(conn1.getHoldability() == ResultSet.HOLD_CURSORS_OVER_COMMIT));
System.out.println("Autocommit on Connection inside global
transaction has been set correctly to " + conn1.getAutoCommit());
xr.end(xid, XAResource.TMSUCCESS);
The output for the above piece of code is
This is a bug. Connection's holdability should have been
CLOSE_CURSORS_AT_COMMIT since it is in the global transaction
CONNECTION(in xa transaction) HOLDABILITY true
Autocommit on Connection inside global transaction has been set
correctly to false
|
|
Description
|
Reporting for Mamta Satoor, filed on Derby-dev list.
I think there is a bug in Derby when the user code tries to get the
Connection object from XAConnection "inside" the global transaction.
In this case, the Connection object gets created with un-supported
holdability. Look at the following piece of code and it's output to
see what exactly happens
EmbeddedXADataSource dscsx = new EmbeddedXADataSource();
dscsx.setDatabaseName("wombat");
XAConnection xac = dscsx.getXAConnection("fred", "wilma");
XAResource xr = xac.getXAResource();
xid = getXid(27, (byte) 21, (byte) 01);
xr.start(xid, XAResource.TMNOFLAGS);
conn1 = xac.getConnection();
System.out.println("This is a bug. Connection's holdability should
have been CLOSE_CURSORS_AT_COMMIT since it is in the global
transaction");
System.out.println("CONNECTION(in xa transaction) HOLDABILITY " +
(conn1.getHoldability() == ResultSet.HOLD_CURSORS_OVER_COMMIT));
System.out.println("Autocommit on Connection inside global
transaction has been set correctly to " + conn1.getAutoCommit());
xr.end(xid, XAResource.TMSUCCESS);
The output for the above piece of code is
This is a bug. Connection's holdability should have been
CLOSE_CURSORS_AT_COMMIT since it is in the global transaction
CONNECTION(in xa transaction) HOLDABILITY true
Autocommit on Connection inside global transaction has been set
correctly to false
|
Show » |
| No work has yet been logged on this issue.
|
|