[ 
http://issues.apache.org/jira/browse/DERBY-694?page=comments#action_12426256 ] 
            
V.Narayanan commented on DERBY-694:
-----------------------------------

Doing a getSqlCode() on NetSqlCa in the above case was returning a -1. This 
value is less than ExceptionSeverity.STATEMENT_SEVERITY(20000) hence it was 
passing in my previous patch. 

I did not however have a way of ever deciding on this as the right method to 
check for exception severity. (I would have needed to generate a ABNUOWRM with 
severity > STATEMENT_SEVERITY)

My only lifeline in this case was through the following 

<cutting and pasting from the comments above>

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. 

To test the above inference I needed a way of generating an ABNUOWRM with 
severity greater than STATEMENT_SEVERITY becase in this case getSqlCode() 
cannot be -1. But I wasn't able to generate this case. I have already mentioned 
this in the above comments.

NetSqlCa.getSqlState() on the other hand does not return me a default value 
like -1 but returns 22012 from which the severity is derived. So I can be sure 
that getSqlState does return me a valid value from which I can call the 
ExceptionUtil methods to derive severity . 

I did'nt feel safe sticking to the getSqlCode way which is based on an 
inference and a test that passes because a default value of getSqlCode is 
lesser than severity value. Hence I decided to stick to the getSqlState method. 

If there is someone who can guide me into generating a test case that can 
generate a ABNUOWRM with severity > STATEMENT_SEVERITY I most humbly request 
for guidance from them.

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, 
> DERBY-694_v3.diff, DERBY-694_v3.stat, DERBY-694_v4.diff, DERBY-694_v4.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