00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <config.h>
00022
00023 #include <drizzled/kill.h>
00024 #include <drizzled/session.h>
00025 #include <drizzled/statement/kill.h>
00026 #include <drizzled/sql_lex.h>
00027
00028 namespace drizzled {
00029 namespace statement {
00030
00031 Kill::Kill(Session *in_session, Item *item, bool is_query_kill) :
00032 Statement(in_session)
00033 {
00034 if (is_query_kill)
00035 {
00036 lex().type= ONLY_KILL_QUERY;
00037 }
00038
00039 lex().value_list.clear();
00040 lex().value_list.push_front(item);
00041 set_command(SQLCOM_KILL);
00042 }
00043
00044 }
00045
00046 bool statement::Kill::execute()
00047 {
00048 Item *it= &lex().value_list.front();
00049
00050 if ((not it->fixed && it->fix_fields(lex().session, &it)) || it->check_cols(1))
00051 {
00052 my_message(ER_SET_CONSTANTS_ONLY,
00053 ER(ER_SET_CONSTANTS_ONLY),
00054 MYF(0));
00055 return true;
00056 }
00057
00058 if (drizzled::kill(*session().user(), static_cast<session_id_t>(it->val_int()), lex().type & ONLY_KILL_QUERY))
00059 {
00060 session().my_ok();
00061 }
00062 else
00063 {
00064 my_error(ER_NO_SUCH_THREAD, MYF(0), it->val_int());
00065 }
00066
00067 return false;
00068 }
00069
00070 }
00071