[ 
https://issues.apache.org/jira/browse/DERBY-2620?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12495207
 ] 

Kathey Marsden commented on DERBY-2620:
---------------------------------------

Currently, since xa end sets the application to null, so we get the 8003 (No 
connection) message if we try to use the resultset,  Could you explain the 
logic behind setting the applicationConnection to null in 
XATransactionState.end()

> embedded throws SQLState 8003 (No current connection) on rs.next() on closed 
> resultSet in test for DERBY-1025 in DataSourceTest
> -------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-2620
>                 URL: https://issues.apache.org/jira/browse/DERBY-2620
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC
>            Reporter: Kathey Marsden
>         Assigned To: Kathey Marsden
>
> The following code checking that a CLOSE_CURSORS_AT_COMMIT ResultSet is 
> closed by xa_start  throws the wrong exception for embedded, indicating that 
> there is no current connection instead of the ResultSet  being closed.
>    Statement s4 = conn4.createStatement(ResultSet.TYPE_FORWARD_ONLY, 
> ResultSet.CONCUR_READ_ONLY, ResultSet.CLOSE_CURSORS_AT_COMMIT);
>         ResultSet rs4 = s4.executeQuery("select i from autocommitxastart");
>         rs4.next();
>         assertEquals(1, rs4.getInt(1));
>         rs4.next();
>         assertEquals(2, rs4.getInt(1));
>         // XAResource().start should commit the transaction
>         try {
>             xac4.getXAResource().start(xid4a, XAResource.TMNOFLAGS);
>             xac4.getXAResource().end(xid4a, XAResource.TMSUCCESS);
>         } catch (XAException xae) {
>             fail("unexpected XAException on xac4.getXAResource.start or end");
>         } catch (Exception e) {
>             fail("unexpected Exception on xac4.getXAResource.start or end");
>         }
>         
>         // DERBY-1025.
>         // With Embedded, this will give error: 08003 - No current connection
>         // But with NetworkServer / DerbyNetClient, the transaction does not
>         // appear to be closed, and we actually get a value.
>         try {
>             rs4.next();
>             rs4.getInt(1);            
>             fail ("expected an exception indicating resultset is closed.");
>         } catch (SQLException sqle) {
>             // Embedded gets 08003.
>               if (usingDerbyNetClient())
>                       assertSQLState("XCL16",sqle);
>         }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to