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