[ 
https://issues.apache.org/jira/browse/DERBY-3238?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12548742
 ] 

Kathey Marsden commented on DERBY-3238:
---------------------------------------

The problem on 10.1 looks different than on 10.2,10.3, and 10.4
It fails at a slightly larger blob and error is when we try to objectify the 
before column not the after column.

Also in 10.1 clobs work fine without the fix.  I will backport the fix to 10.3 
and 10.2 and
investigate the 10.1 problem. Not sure yet if I should file a separate bug for 
that.

>java blob_insert2
Testing blob of size=1024
 . . Now executing update to fire the trigger
PASSED
Testing blob of size=16384
 . . Now executing update to fire the trigger
PASSED
Testing blob of size=32658
 . . Now executing update to fire the trigger
PASSED
Testing blob of size=32659
 . . Now executing update to fire the trigger
PASSED
Testing blob of size=32767
 . . Now executing update to fire the trigger
Error! SQL Exception: An IOException was thrown when reading a 'BLOB' from an 
InputStream.
ERROR XCL30: An IOException was thrown when reading a 'BLOB' from an 
InputStream.
        at 
org.apache.derby.iapi.error.StandardException.newException(StandardException.java:315)
        at org.apache.derby.iapi.types.SQLBinary.getValue(SQLBinary.java:214)
        at org.apache.derby.iapi.types.SQLBinary.loadStream(SQLBinary.java:529)
        at 
org.apache.derby.impl.sql.execute.DMLWriteResultSet.objectifyStreams(DMLWriteResultSet.java:151)
        at 
org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore(DMLWriteResultSet.java:132)
        at 
org.apache.derby.impl.sql.execute.UpdateResultSet.collectAffectedRows(UpdateResultSet.java:450)
        at 
org.apache.derby.impl.sql.execute.UpdateResultSet.open(UpdateResultSet.java:276)
        at 
org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:379)
        at 
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1123)
        at 
org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:529)
        at 
org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(EmbedStatement.java:165)
        at blob_insert2.testBlob(blob_insert2.java:114)
        at blob_insert2.main(blob_insert2.java:65)
[

> When table contains large LOB values (> ~32K) trigger execution fails for 
> that row with ERROR XCL30: An IOException was thrown when reading a 'BLOB' 
> -----------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-3238
>                 URL: https://issues.apache.org/jira/browse/DERBY-3238
>             Project: Derby
>          Issue Type: Bug
>    Affects Versions: 10.1.3.1, 10.2.2.0, 10.3.1.4, 10.3.2.1, 10.4.0.0
>            Reporter: Stan Bradbury
>            Assignee: Kathey Marsden
>         Attachments: blob_insert2.java, derby-3238_diff.txt, 
> derby-3238_diffv2.txt, derby-3238_diffv3.txt, derby-3238_diffv4.txt
>
>
> See attached test case.  
> At execution/run-time a trigger that handles a row that contains a large LOB 
> value will fail with the following error and stack trace:
>  = = =
> Testing blob of size=1024
>  . . Now executing update to fire the trigger
> PASSED
> Testing blob of size=16384
>  . . Now executing update to fire the trigger
> PASSED
> Testing blob of size=32658
>  . . Now executing update to fire the trigger
> PASSED
> Testing blob of size=32659
>  . . Now executing update to fire the trigger
> Error! java.sql.SQLException: An IOException was thrown when reading a 'BLOB' 
> from an InputStream.
> java.sql.SQLException: An IOException was thrown when reading a 'BLOB' from 
> an InputStream.
>         at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
>         at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown 
> Source)
>         at org.apache.derby.impl.jdbc.Util.seeNextException(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.EmbedStatement.execute(Unknown Source)
>         at org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(Unknown 
> Source)
>         at blob_insert2.testBlob(blob_insert2.java:102)
>         at blob_insert2.main(blob_insert2.java:55)
> Caused by: java.sql.SQLException: Java exception: ': java.io.EOFException'.
>         at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory.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)
>         ... 9 more
> Caused by: java.io.EOFException
>         at org.apache.derby.iapi.types.SQLBinary.readBinaryLength(Unknown 
> Source)
>         at org.apache.derby.iapi.types.SQLBinary.readExternal(Unknown Source)
>         at org.apache.derby.iapi.types.SQLBinary.getValue(Unknown Source)
>         at org.apache.derby.iapi.types.SQLBinary.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.execute(Unknown 
> Source)
>         ... 5 more

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