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

Kathey Marsden reopened DERBY-438:
----------------------------------


reopen to attempt  backport to 10.1


> Update triggers on tables with BLOB and CLOB columns fail at execution time 
> if the triggered-SQL-statement references the LOB column(s).
> ----------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-438
>                 URL: https://issues.apache.org/jira/browse/DERBY-438
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.0.2.2, 10.1.1.0, 10.2.1.6
>            Reporter: A B
>            Assignee: Daniel John Debrunner
>             Fix For: 10.2.1.6
>
>         Attachments: derby438_draft_statement_LOB_patch.txt, go.java
>
>
> Suppose I have 1) a table "t1" with blob data in it, and 2) an UPDATE trigger 
> "tr1" defined on that table, where the triggered-SQL-action for "tr1" 
> references the blob column from the updated ("new") row. Ex:
> create table t1 (id int, updated smallint, bl blob(32000));
> create trigger tr1 after update on t1 referencing new as n_row for each row 
> mode db2sql values length(n_row.bl);
> Assuming that t1 has been populated with some data, then attempts to update 
> t1 will fire the trigger, but the result will be one of the two following 
> errors:
> 1) If blob data is < 32K...
> If the actual data in the table is less than 32K in length, the result will 
> be:
> ERROR XCL12: An attempt was made to put a data value of type 
> 'org.apache.derby.impl.jdbc.EmbedBlob' into a data value of type 'BLOB'.
> 2) If blob data is > 32K...
> If at least one row in the table has blob data that is longer than 32K (which 
> means that Derby will stream it, so far as I can tell), then the error will 
> be:
> ERROR XCL30: An IOException was thrown when reading a 'BLOB' from an 
> InputStream.
> ERROR XJ001: Java exception: ': java.io.EOFException'.
> Note that for data larger than 32K, this error will occur regardless of 
> whether or not the triggered-SQL-statement
> references the blob column.
> Surprisingly, it doesn't (appear to) matter what the trigger statement is 
> actually doing--so long as it references the blob column at least once, one 
> of these two errors will occur, depending on the length of the data.  And if 
> the data is greater than 32k, then the error will happen regardless of what 
> the trigger does or whether or not it references the blob column.
> I looked at the documentation for UPDATE statements and TRIGGER statements, 
> but nowhere did I see anything saying that either of these will not work with 
> blobs.  So as far as I can tell, both of the above scenarios should succeed...

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