[ 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

        

Reply via email to