You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Julian Hyde (JIRA)" <ji...@apache.org> on 2015/04/21 19:39:59 UTC

[jira] [Commented] (DRILL-2837) Resolve what Statement.cancel() really should do

    [ https://issues.apache.org/jira/browse/DRILL-2837?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14505339#comment-14505339 ] 

Julian Hyde commented on DRILL-2837:
------------------------------------

It is my belief cancel does not close the statement. If the statement is executing, I would expect it to throw an exception with a particular SQLCode. But it is also possible and valid that the cancel does not arrive in time and the statement completes normally.

One strange thing about cancel is that it needs to be thread-safe. Well obviously, you need to cancel on one thread while another is blocked calling execute or executeQuery or executeUpdate. But this is the exception to usual JDBC semantics - no other operations are guaranteed thread-safe on the same statement or even statements from the same connection.

> Resolve what Statement.cancel() really should do
> ------------------------------------------------
>
>                 Key: DRILL-2837
>                 URL: https://issues.apache.org/jira/browse/DRILL-2837
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Client - JDBC
>            Reporter: Daniel Barclay (Drill)
>            Assignee: Daniel Barclay (Drill)
>
> It is not clear exactly what JDBC's Statement.cancel() method is supposed to do.
> The Javadoc method description for cancel() says only:
> bq. Cancels this Statement object if both the DBMS and driver support aborting an SQL statement. This method can be used by one thread to cancel a statement that is being executed by another thread.
> In particular, it's not clear what "cancels this Statement" really means.  (The JDBC PDF specification doesn't anything about it.)
> &nbsp;
> It seems reasonable to think that calling cancel() on a Statement cancels any associated query that has not already completed, leaves any associated ResultSet closed, and leaves the statement closed.
> However, JDBC doesn't actually specify any of that, AvaticaStatement.cancel() does not close the Statement, and it's not clear whether SQLLine expects the above interpretation or not.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)