[
https://issues.apache.org/jira/browse/DERBY-3098?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12532123
]
Øystein Grøvlen commented on DERBY-3098:
----------------------------------------
I was wrong about Clob not using OverflowInputStream. It does. (I
had an error in my test program so that it was fetching a Clob that
was not large enough for OverflowInputStream to come into play.)
The problem I have is that locks are not released after free() for
Clob. I think the problem is that it is obtaining two sets of locks,
but only releasing one set. My theory is that in the EmbedClob constructor,
both
((Resetable) storeStream).initStream();
and
this.clob = new StoreStreamClob(storeStream, this);
causes locks to be set.
> LOB locks are not released after free().
> ----------------------------------------
>
> Key: DERBY-3098
> URL: https://issues.apache.org/jira/browse/DERBY-3098
> Project: Derby
> Issue Type: Bug
> Components: Store
> Affects Versions: 10.2.2.0, 10.3.1.4
> Environment: Any
> Reporter: Øystein Grøvlen
> Assignee: Øystein Grøvlen
> Attachments: derby-3098fix.diff
>
>
> When getBlob/getClob is called on the ResultSet, the current row is
> locked if the JDBC driver does not cache the entire LOB value in
> memory. This is done to prevent the Blob/Clob object from being
> changed. Until now, this lock has been held to the end of the
> transaction.
> JDBC4 introduced free() methods for the Blob/Clob class. The locking
> should be changed so that the locks is releases when the Blob/Clob
> object is freed.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.