Bug #36332 | JDBC statement.cancel() needs to actually cancel the current query | ||
---|---|---|---|
Submitted: | 25 Apr 2008 4:31 | Modified: | 29 Apr 2008 11:16 |
Reporter: | David Van Couvering | Email Updates: | |
Status: | Not a Bug | Impact on me: | |
Category: | Connector / J | Severity: | S2 (Serious) |
Version: | 5.1.5 | OS: | MacOS |
Assigned to: | CPU Architecture: | Any | |
Tags: | cancel |
[25 Apr 2008 4:31]
David Van Couvering
[25 Apr 2008 6:13]
Tonci Grgin
Hi David and thanks for your report. Can you please attach small test case proving your point?
[25 Apr 2008 16:04]
Mark Matthews
Hi David, The issue as I see it is that the JDBC specification requires that cancel() (or statement timeout expiring) leaves the connection in a useful state. Therefore, the JDBC driver needs to use a mechanism that doesn't clobber the *network* side of the connection. Therefore, we use "KILL QUERY" (on MySQL-5.0), which does have the interesting properties that it doesn't always return immediately, and sometimes one can wait a *long* time for the cancel, as SELECTs only check if they're killed in very specific places.
[25 Apr 2008 23:24]
David Van Couvering
Hi, Mark, we meet again :) So if I get this right, the cancel does work, but it can take some time? I think I did see that behavior, but only once, so I thought it was a fluke. If that's really how it behaves, then please feel free to close this issue. I think I remember seeing a request in the JDBC EG to have a "force cancel" method to allow you to cancel with no holds barred. Is that still in play?
[29 Apr 2008 11:16]
Tonci Grgin
Hi David. Closing the report as you requested. I have notified Mark of your question.