Seems that after KILL QUERY mysql-thread-id, a call to 
mysql_stmt_close(stmt-handle) hangs...

This did not happen in 5.6 ...

Will try 5.7.13 ...

Seb

On 06/21/2016 04:03 PM, Sebastien FLAESCH wrote:
Hi all,

The technique described in this thread is working fine with MySQL 5.6 
(libmysqlclient).

Basically, in a SIGINT signal handler, we establish a new connection to perform 
a

    KILL QUERY pid

...

But with 5.7 (5.7.11) we get now a different result:

A) The query is still interrupted, but we no longer get an SQL error -1317.

B) For some reason, the program does not want to exit() - (must investigate)

Any clues?


With mysql it's working fine:

mysql> select sleep(10);
^C^C -- query aborted
+-----------+
| sleep(10) |
+-----------+
+-----------+
1 row in set (2.79 sec)

mysql> \q
Bye



Thanks!
Seb

On 12/03/2014 05:25 PM, Sebastien FLAESCH wrote:
Hi all,

I have a similar question regarding KILL QUERY usage:

We have a C client program using libmysqlclient.so, it is a single-threaded 
program.

When running a long query, how can I send the KILL QUERY command when a SIGINT 
(CTRL-C)
is caught? (of course we implement a signal handler, so we keep the control)

=> Is is safe to establish a new connection to the server in the signal 
handler, using
mysql_init() + mysql_real_connect(), and execute the KILL QUERY with the mysql 
thread
id I got from the initial mysql_init() / mysql_real_connect()?

I made some tests, and it seems to work fine, the long query returns SQL error 
-1317:
"Query execution was interrupted" (which is expected)

We want to support SQL interruption properly, so please someone from the dev 
team,
give me a clear answer... I don't want to use a side effect or undocumented 
feature.

Doing all this stuff in a signal handler is certainly risky... no?

I could not find the information in the documentation (mysql_real_connect).

I wish there would be an API like mysql_cancel_query(), similar to Oracle's OCI
OCIBreak().

Thanks!
Seb



On 12/02/2014 05:13 PM, walter harms wrote:
hi list,

when i use CTRL-C to break a query that works fine in interactive mode.

mysql> select sleep(10) ;
^CCtrl-C -- sending "KILL QUERY 24289" to server ...
Ctrl-C -- query aborted.
+-----------+
| sleep(10) |
+-----------+
+-----------+
1 row in set (0.86 sec)

but when i use the noninteractive mode
   timeout 5 mysql -BAN -e "select now(); select sleep (100) ; select now() "

i looks like that  but "show full processlist;" shows otherwise and that is true
as a list of long running querys showed.

Is there a way to make it behave like the interactive version ?
Now it is a bit confusing for everyone.

re,
  wh






--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql

Reply via email to