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

Reply via email to