db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rick Hillegas (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (DERBY-4544) Referencing streaming CLOBs in (some) generated column clauses fails
Date Mon, 11 Apr 2011 15:54:05 GMT

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

Rick Hillegas updated DERBY-4544:
---------------------------------

    Attachment: Test_4544.java

Attaching a new version of the repro. This experiments with additional generation expressions.
The additional expressions test the builtin substr, locate, upper, and trim functions as well
as a user-written function. In all of these cases, Derby behaves correctly. It appears to
me that length() was the only builtin function which caused this bug. For other Derby builtin
functions (and user-written functions), Derby materializes the Clob. This gives me some assurance
that the solution, although inefficient, makes Derby behave in a regular way. I will incorporate
these additional tests into the new test case.

> Referencing streaming CLOBs in (some) generated column clauses fails
> --------------------------------------------------------------------
>
>                 Key: DERBY-4544
>                 URL: https://issues.apache.org/jira/browse/DERBY-4544
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.5.3.0, 10.6.1.0
>            Reporter: Kristian Waagan
>            Assignee: Kristian Waagan
>              Labels: CLOB, derby_triage10_8
>         Attachments: Test_4544.java, Test_4544.java, Test_4544.java, derby-4544-01-ab-shortCircuitLengthOptimization.diff
>
>
> Referencing a CLOB represented as a stream in generated columns can lead to data corruption
or that the query fails.
> For instance, with 10.5:
> create table t (id int, myclob clob, clen generated always as (length(myclob)));
> # Insert CLOB using the streaming APIs (setCharacterStream).
> The exception 'java.lang.ClassCastException: org.apache.derby.iapi.types.ReaderToUTF8Stream
cannot be cast to org.apache.derby.iapi.types.Resetable'
> On trunk the same query results in data corruption, and this isn't detected before the
value is read back from store.
> Workaround:
> Don't use the streaming APIs when using CLOBs in generated columns. This increases the
memory footprint, and may not feasible for large CLOBs.
> FYI, BLOB deals with this by materializing the value, which effectively equals to using
the workaround mentioned above.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message