[ 
https://issues.apache.org/jira/browse/DERBY-4122?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kristian Waagan updated DERBY-4122:
-----------------------------------

    Attachment: derby-4122-4b-classcast_fix_mark_reset.diff

Thanks for looking at the patch again, Knut Anders.

I have moved the new message to MessageId. It wasn't immediately clear to me 
what to name the message and into which category it should be placed. We can 
move/rename it later if required.

Regarding the EOFException, I have chosen to keep it as it is for now because 
other methods in the class use it too. It may be that it should be changed, but 
it must be tested. Since ReaderToUTF8Stream has been considered an "internal 
stream class" it is not clear to me whether Derby code expects the EOFException 
or not.

I also want to improve the test a bit, by making the randomized test verify the 
content returned by the stream. Depending on when I get around to do it, I may 
do this under this issue or create a sub-issue.

> ClassCastException in SQLClob when running in soft upgrade mode (10.4.2.0 -> 
> 10.5.1.0)
> --------------------------------------------------------------------------------------
>
>                 Key: DERBY-4122
>                 URL: https://issues.apache.org/jira/browse/DERBY-4122
>             Project: Derby
>          Issue Type: Bug
>          Components: Regression Test Failure
>    Affects Versions: 10.5.1.0
>         Environment: Windows Vista 64, Sun JDK 1.6.0_10, Junit 3.8.2
>            Reporter: Suran Jayathilaka
>            Assignee: Kristian Waagan
>            Priority: Blocker
>         Attachments: derby-4122-1a-incorrect_stream_positioning.diff, 
> derby-4122-2a-bc4btest.diff, derby-4122-3a-classcast_fix.diff, 
> derby-4122-3b-classcast_fix.diff, 
> derby-4122-4a-classcast_fix_mark_reset.diff, 
> derby-4122-4b-classcast_fix_mark_reset.diff, 
> derby-4122-4b-classcast_fix_mark_reset.diff
>
>
> This bug was found when doing soft upgrade testing from Derby version 
> 10.4.2.0 to 10.5.1.0 (RC1)
> Steps followed are as follows.
> 1. Run setEmbeddedCP.bat from version 10.4.2.0's bin folder
> 2. In a test folder run ij
> 3. create system/wombat database.
>     ij> connect 'jdbc:derby:system/wombat;create=true';
> 4. exit ij
> 5. Copy the 10.5.1.0 derby jars (from lib folder) and the derbyTesting.jar 
> from 10.4.2.0 to the test folder and set classpath with them (including junit 
> and ORO)
> 6. Run suites.All 
>      java -Xmx512M -Xms512M -Dderby.tests.trace=true junit.textui.TestRunner 
> org.apache.derbyTesting.functionTests.suites.All
> Result:
> Tests run: 10479,  Failures: 56,  Errors: 34
> The exception stack trace from a failed test follows.
> -------------------------------------------------------------------------------------------------------------
> 3) 
> testClobInTriggerTable(org.apache.derbyTesting.functionTests.tests.lang.TriggerTest)java.sql.SQLException:
>  Java exception: 'org.apache.derby.iapi.types.ReaderToUTF8Stream cannot be 
> cast to org.apache.derby.iapi.types.Resetable: java.lang.ClassCastException'.
>       at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
>       at org.apache.derby.impl.jdbc.Util.javaException(Unknown Source)
>       at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown 
> Source)
>       at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown 
> Source)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(Unknown 
> Source)
>       at 
> org.apache.derbyTesting.functionTests.tests.lang.TriggerTest.testClobInTriggerTable(TriggerTest.java:529)
>       at 
> org.apache.derbyTesting.functionTests.tests.lang.TriggerTest.testClobInTriggerTable(TriggerTest.java:451)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at 
> org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:102)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
>       at junit.extensions.TestSetup.run(TestSetup.java:25)
>       at 
> org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
> Caused by: java.sql.SQLException: Java exception: 
> 'org.apache.derby.iapi.types.ReaderToUTF8Stream cannot be cast to 
> org.apache.derby.iapi.types.Resetable: java.lang.ClassCastException'.
>       at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
>       at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
>  Source)
>       ... 39 more
> Caused by: java.lang.ClassCastException: 
> org.apache.derby.iapi.types.ReaderToUTF8Stream cannot be cast to 
> org.apache.derby.iapi.types.Resetable
>       at org.apache.derby.iapi.types.SQLClob.rewindStream(Unknown Source)
>       at org.apache.derby.iapi.types.SQLClob.readExternal(Unknown Source)
>       at org.apache.derby.iapi.types.SQLChar.getString(Unknown Source)
>       at org.apache.derby.iapi.types.SQLChar.loadStream(Unknown Source)
>       at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.objectifyStream(Unknown 
> Source)
>       at 
> org.apache.derby.impl.sql.execute.UpdateResultSet.collectAffectedRows(Unknown 
> Source)
>       at org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown 
> Source)
>       at 
> org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source)
>       at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown 
> Source)
>       ... 32 more
> ------------------------------------------------------------------------------------------------------------------
> When looking at the SVN revisions for SQLClob with Kathey Marsden, we found 
> the following statement in revision # 738408, related to DERBY-3907, which 
> might be related to this issue.
> "NOTE: Databases created with this revision (or later) containing Clobs, 
> cannot be accessed by earlier trunk revisions."
> Patch file: derby-3907-7a3-use_new_header_format.diff
>       

-- 
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