[ http://issues.apache.org/jira/browse/DERBY-694?page=all ]
V.Narayanan updated DERBY-694:
------------------------------
Attachment: DERBY-694_v2.diff
DERBY-694_v2.stat
In generating a solution for the above issue keeping in mind the comments
received my basic aim for the solution was to move the check for the exception
severity to a place where it will be a generic check for all the places from
which a ABNUOWRM might be generated.
a) I moved this try catch to the
parseAbnormalEndUow(ConnectionCallbackInterface
connection) method.
b) In doing so I needed to get the severity of the exception that has been
raised.
c) This I get from sqlca.getSqlCode(). An sqlca will be
obtained from the SQLCARD which is obtained from parsing
the ABNUOWRM. The SQLCARD is a byte string specifying
information about conditions detected during relational
database processing.
c.1) I inferred that the getSqlCode() contains the
severity information from the code for
SqlExceptionFactory40 where in the getSQLException
method we check for errCode >=
ExceptionSeverity.SESSION_SEVERITY.
c.2) This method is called from
SqlException.getSQLException() which in turn passes
to this as parameter return value of getErrorCode().
c.3) getErrorCode() inturn obtains the error code from
sqlca_.getSqlCode() when sqlca_ is not null.
I have attached a patch having generated the solution on the above lines. I
have tested the patch with the test program that was attached when the issue
was reported. If this design is fine I will modify this test program into a
junit test in a follow up patch.
I did'nt attach the test as part of the patch since I have redesigned the
solution and I wanted to request for a opinion on the design and I could attach
the unit tests in a subsequent patch.
thanx
Narayanan
> Statement exceptions cause all the connection's result sets to be closed with
> the client driver
> -----------------------------------------------------------------------------------------------
>
> Key: DERBY-694
> URL: http://issues.apache.org/jira/browse/DERBY-694
> Project: Derby
> Issue Type: Bug
> Components: Network Client
> Affects Versions: 10.1.1.1
> Reporter: Oyvind Bakksjo
> Assigned To: V.Narayanan
> Priority: Minor
> Attachments: DERBY-694.html, DERBY-694_upload_v1.diff,
> DERBY-694_upload_v1.stat, DERBY-694_v2.diff, DERBY-694_v2.stat,
> StatementRollbackTest.java
>
>
> Scenario:
> Autocommit off. Have two prepared statements, calling executeQuery() on both,
> giving me two result sets. Can fetch data from both with next(). If one
> statement gets an exception (say, caused by a division by zero), not only
> this statement's result set is closed, but also the other open resultset.
> This happens with the client driver, whereas in embedded mode, the other
> result set is unaffected by the exception in the first result set (as it
> should be).
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira