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