[ https://issues.apache.org/jira/browse/DERBY-5605?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kathey Marsden reassigned DERBY-5605: ------------------------------------- Assignee: Kathey Marsden > 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 > > 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)