[
https://issues.apache.org/jira/browse/DERBY-5605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14963488#comment-14963488
]
ASF subversion and git services commented on DERBY-5605:
--------------------------------------------------------
Commit 1709431 from [~kmarsden] in branch 'code/trunk'
[ https://svn.apache.org/r1709431 ]
DERBY-5605 Calling Blob/Clob free() explicitly after implicit free throws
exception in client driver.
Changed stored procedures to noop if the locator is already freed.
> Calling Blob/Clob free() explicitly after implicit free throws exception in
> client driver
> -----------------------------------------------------------------------------------------
>
> Key: DERBY-5605
> URL: https://issues.apache.org/jira/browse/DERBY-5605
> Project: Derby
> Issue Type: Bug
> Components: Network Client
> Affects Versions: 10.9.1.0
> Reporter: Kristian Waagan
> Assignee: Kathey Marsden
> Priority: Minor
> Labels: derby_triage10_11, derby_triage10_9
> Attachments: derby-5605_diff.txt, derby-5605_diff.txt
>
>
> If a Blob or Clob is freed implicitly in the client driver, calling free
> explicitly afterwards will throw an exception. Instead, this should probably
> be a no-op.
> To reproduce, do something like this:
> con.setAutoCommit(false);
> Clob c = con.createClob();
> con.commit();
> c.free();
> ==>
> Caused by: org.apache.derby.client.am.SqlException: You cannot invoke other
> java.sql.Clob/java.sql.Blob methods after calling the free() method or after
> the Blob/Clob's transaction has been committed or rolled back.
> at
> org.apache.derby.client.am.CallableLocatorProcedures.handleInvalidLocator(CallableLocatorProcedures.java:1071)
> at
> org.apache.derby.client.am.CallableLocatorProcedures.clobReleaseLocator(CallableLocatorProcedures.java:664)
> at org.apache.derby.client.am.Clob.free(Clob.java:844)
> ... 38 more
> Caused by: org.apache.derby.client.am.SqlException: The exception
> 'java.sql.SQLException: The locator that was supplied for this CLOB/BLOB is
> invalid' was thrown while evaluating an expression.
> at
> org.apache.derby.client.am.Statement.completeExecute(Statement.java:1604)
> at
> org.apache.derby.client.net.NetStatementReply.parseEXCSQLSTTreply(NetStatementReply.java:322)
> at
> org.apache.derby.client.net.NetStatementReply.readExecuteCall(NetStatementReply.java:106)
> at
> org.apache.derby.client.net.StatementReply.readExecuteCall(StatementReply.java:75)
> at
> org.apache.derby.client.net.NetStatement.readExecuteCall_(NetStatement.java:175)
> at
> org.apache.derby.client.am.Statement.readExecuteCall(Statement.java:1570)
> at
> org.apache.derby.client.am.PreparedStatement.flowExecute(PreparedStatement.java:2156)
> at
> org.apache.derby.client.am.PreparedStatement.executeX(PreparedStatement.java:1599)
> at
> org.apache.derby.client.am.CallableLocatorProcedures.clobReleaseLocator(CallableLocatorProcedures.java:662)
> ... 39 more
> Caused by: org.apache.derby.client.am.SqlException: The locator that was
> supplied for this CLOB/BLOB is invalid
> ... 48 more
> The problem dosen't exist in the embedded driver.
> The immediate cause seems to be that the client driver state becomes out of
> sync with the server side. This may be fixable by dealing specifically witht
> the invalid locator exception in free().
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)