1/* Copyright (c) 2013, Monty Program Ab.
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; version 2 of the License.
6
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 GNU General Public License for more details.
11
12 You should have received a copy of the GNU General Public License
13 along with this program; if not, write to the Free Software
14 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
15
16#ifndef MYSQL_SERVICE_KILL_STATEMENT_INCLUDED
17#define MYSQL_SERVICE_KILL_STATEMENT_INCLUDED
18
19/**
20 @file
21 This service provides functions that allow plugins to support
22 the KILL statement.
23
24 In MySQL support for the KILL statement is cooperative. The KILL
25 statement only sets a "killed" flag. This function returns the value
26 of that flag. A thread should check it often, especially inside
27 time-consuming loops, and gracefully abort the operation if it is
28 non-zero.
29
30 thd_is_killed(thd)
31 @return 0 - no KILL statement was issued, continue normally
32 @return 1 - there was a KILL statement, abort the execution.
33
34 thd_kill_level(thd)
35 @return thd_kill_levels_enum values
36*/
37
38#ifdef __cplusplus
39extern "C" {
40#endif
41
42enum thd_kill_levels {
43 THD_IS_NOT_KILLED=0,
44 THD_ABORT_SOFTLY=50, /**< abort when possible, don't leave tables corrupted */
45 THD_ABORT_ASAP=100, /**< abort asap */
46};
47
48extern struct kill_statement_service_st {
49 enum thd_kill_levels (*thd_kill_level_func)(const MYSQL_THD);
50} *thd_kill_statement_service;
51
52/* backward compatibility helper */
53#define thd_killed(THD) (thd_kill_level(THD) == THD_ABORT_ASAP)
54
55#ifdef MYSQL_DYNAMIC_PLUGIN
56
57#define thd_kill_level(THD) \
58 thd_kill_statement_service->thd_kill_level_func(THD)
59
60#else
61
62enum thd_kill_levels thd_kill_level(const MYSQL_THD);
63
64#endif
65
66#ifdef __cplusplus
67}
68#endif
69
70#endif
71
72