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