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 (Created) (JIRA)" <ji...@apache.org> on 2012/02/06 15:41:59 UTC

[jira] [Created] (DERBY-5605) Calling Blob/Clob free() explicitly after implicit free throws exception in client driver

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.0.0
            Reporter: Kristian Waagan
            Priority: Trivial


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 is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (DERBY-5605) Calling Blob/Clob free() explicitly after implicit free throws exception in client driver

Posted by "Kathey Marsden (Updated) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DERBY-5605?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Kathey Marsden updated DERBY-5605:
----------------------------------

              Priority: Minor  (was: Trivial)
      Issue & fix info: Newcomer,Repro attached,Workaround attached
               Urgency: Normal
    Bug behavior facts: Embedded/Client difference
                Labels: derby_triage10_9  (was: )

Triage for 10.9.   Moved priority from trivial to minor as I think it could be hit by applications expecting this to work.
                
> 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.0.0
>            Reporter: Kristian Waagan
>            Priority: Minor
>              Labels: 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 is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira