db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kathey Marsden (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DERBY-3238) When table contains large LOB values (> ~32K) trigger execution fails for that row with ERROR XCL30: An IOException was thrown when reading a 'BLOB'
Date Sat, 01 Dec 2007 00:39:43 GMT

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

Kathey Marsden updated DERBY-3238:
----------------------------------

    Attachment: derby-3238_diff.txt

Here is an initial patch attempted to resolve the issue. I am running tests now. It changes
DMLWriteResultSet.objectifyStreams() to check for duplicate streams and update them with a
cloned DataValueDescriptor of the value that we objectified. I wish I had been able to have
more context and been able to calculate the exact offset to update. As it is, when a stream
is objectified, we search all the other columns to see if there are duplicates. It has the
advantage of working, but seems like unnecessary work.

Anyway, just throwing this out there while the tests runs to see if I am on the right track.

Kathey


> 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
>         Attachments: blob_insert2.java, derby-3238_diff.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.


Mime
View raw message