Kristian Waagan (JIRA) wrote:
[ http://issues.apache.org/jira/browse/DERBY-1149?page=comments#action_12372240 ]
Kristian Waagan commented on DERBY-1149:
----------------------------------------

This patch will (and does) fail, due to the way SQLStates are compared. I will 
brush up the patch, only changing things in StatementTest, were this testing 
was not good enough (all tests, not only the one that failed here).



The name SQLState.java is actually misleading. These are really message ids being defined, *not* SQL States.

The SQLStates are derived from the message ids as the first five characters of the message id.

See the method org.apache.derby.shared.common.error.ExceptionUtil.getSQLStateFromIdentifier().

I was also misled by this. We shouldn't use SQLState constants when checking the SQL State.
We have to use the actual five-character SQLState.

I'l take a look at your change and see if that does what we need to do.

You know, I must be running the jdbc40 tests wrong, because it came out with a success when it obviously should have been a failure. I will look into this.

David, can you explain why you have set the SQLState to "25000.S.1", and not to 
"25001"?
Is the former an SQLState encoding exception category, as described in the 
class comments for SQLState.java?

Yes, it should be 25001, I somehow missed that in our original exchange; rereading your email (http://tinyurl.com/l4xwr) you were referring to 25001, not 25000.

The former was when I was assuming that we had two messages for the same SQL State (25000), in which case they are distinguished with a suffix number. Due to the way exception severity is determined (using a default or by using the ".N" suffix after the first five characters), you have to append the severity and then the suffix number, e.g. 25000.S.1.

See http://www.nabble.com/Multiple-causes-for-same-SQL-State-t991637.html#a2568667


Do we want to use the invalid trasaction state also for XA connections? I see 
it has been added in EmbedXAConnection. Is the 
CANNOT_CLOSE_ACTIVE_XA_CONNECTION wrong/deprecated for XA connections?

I think that we want to use the invalid transaction state (25001 - active SQL-transaction) for XA connections as well. Is there a reason they should be treated differently?

Thanks for looking at this.

David

Besides from these questions, I think the patch is good to go, but I would 
appreciate if it was held back until the questions above were answered and I 
had the time to add some fixes to StatementTest.




'jdbc40/StatementTest.junit' fails under DerbyNetClient
-------------------------------------------------------

        Key: DERBY-1149
        URL: http://issues.apache.org/jira/browse/DERBY-1149
    Project: Derby
       Type: Test
 Components: Regression Test Failure, Test
   Versions: 10.2.0.0
Environment: JDK 1.6 (b76 used, believed to apply to all)
   Reporter: Kristian Waagan
   Assignee: David Van Couvering
Attachments: DERBY-1149-StatementTestFaiure.diff

One of the tests in jdbc40/StatementTest.junit fails with the following message:
"Attempt to shutdown framework: DerbyNetClient
0 add

....F.
There was 1 failure:
1) 
testIsClosedWhenClosingConnectionInInvalidState(org.apache.derbyTesting.functionTests.tests.jdbc4.StatementTest)junit.framework.ComparisonFailure:
 Unexpected exception thrown: Cannot close a connection while a global transaction is still 
active. expected:<java.sql.Connection.close() requested while a transaction is in 
progress on the connection.The transaction remains active, and the connection cannot be 
closed...> but was:<Cannot close a connection while a global transaction is still 
active...>
FAILURES!!!
Tests run: 5,  Failures: 1,  Errors: 0

Test Failed.
*** End:   StatementTest jdk1.6.0-beta2 DerbyNetClient 2006-03-24 12:53:22 ***"
The reason is that the exception message text has been changed. This comparison 
is only done when running DerbyNetClient, because SQLState was not implemented 
there.
The checkin that caused the error:
"Author: davidvc
Date: Thu Mar 23 16:55:44 2006
New Revision: 388309
URL: http://svn.apache.org/viewcvs?rev=388309&view=rev
Log:
DERBY-839 (Partial).  Internationalize Connection.java.  Also upgraded
the "i18n lint" test to be a little more intelligent, and to not exit
on the first failure.
Passes derbynetclientmats.  All changes are client-specific so derbyall
was not run."
A


Reply via email to