You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Kristian Waagan (JIRA)" <ji...@apache.org> on 2008/05/26 15:37:56 UTC
[jira] Closed: (DERBY-3469) Clob.length() doesn't detect a closed
underlying connection in a consistent way
[ https://issues.apache.org/jira/browse/DERBY-3469?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kristian Waagan closed DERBY-3469.
----------------------------------
Resolution: Fixed
Fix Version/s: 10.5.0.0
10.4.1.4
Closing issue. See DERBY-3574 for revision numbers.
Ran regression tests on the 10.4 branch and trunk, and the repro succeeds on both 10.4 and trunk.
> Clob.length() doesn't detect a closed underlying connection in a consistent way
> -------------------------------------------------------------------------------
>
> Key: DERBY-3469
> URL: https://issues.apache.org/jira/browse/DERBY-3469
> Project: Derby
> Issue Type: Bug
> Components: JDBC, Network Client
> Affects Versions: 10.3.2.1, 10.4.1.3, 10.5.0.0
> Environment: Client-driver
> Reporter: Kristian Waagan
> Assignee: Tiago R. Espinha
> Priority: Minor
> Fix For: 10.4.1.4, 10.5.0.0
>
> Attachments: ClosedClobTest.java, ClosedClobTest.java
>
>
> Depending on the state of the Clob, the method length gives two different SQL states when the underlying connection has been closed.
> According to BlobClob4BlobTest.testClobAfterConnectionClose, it should throw 08003 (no current connection), but it might also throw XJ215 (invalid lob).
> I think this is caused indirectly by the following method in Lob:
> long sqlLength() throws SqlException
> {
> if (lengthObtained_) return sqlLength_;
>
> if (isLocator()) {
> sqlLength_ = getLocatorLength();
> lengthObtained_ = true;
> } else if (willBeLayerBStreamed()) {
> throw new SqlException(agent_.logWriter_,
> LOB_OBJECT_LENGTH_UNKNOWN_YET);
> } else {
> materializeStream(); // Will set sqlLength_
> }
> return sqlLength_;
> }
> In this method, getLocatorLength will check for a closed connection (somewhere down in prepareCallX i believe), whereas the cached length is returned if it has already been determined. Clob.length does not check for a closed connection.
> There are multiple fixes, but I think a proper investigation should be carried out before a solution is chosen.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.