~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/statement/kill.cc

  • Committer: Brian Aker
  • Date: 2009-10-15 00:22:33 UTC
  • mto: (1183.1.11 merge)
  • mto: This revision was merged to the branch mainline in revision 1198.
  • Revision ID: brian@gaz-20091015002233-fa4ao2mbc67wls91
First pass of information engine. OMG, ponies... is it so much easier to
deal with creating and engine.

The list table iterator though... its ass, needs to go. We should also
abstract out share. Very few engines need a custom one. Just say'in

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19
19
 */
20
20
 
21
 
#include "config.h"
 
21
#include <drizzled/server_includes.h>
22
22
#include <drizzled/show.h>
23
23
#include <drizzled/session.h>
24
 
#include <drizzled/session/cache.h>
25
24
#include <drizzled/statement/kill.h>
26
25
 
27
 
namespace drizzled
28
 
{
29
 
 
30
 
static bool kill_one_thread(session_id_t id, bool only_kill_query)
31
 
{
32
 
  drizzled::Session::shared_ptr session= session::Cache::singleton().find(id);
33
 
 
34
 
  if (session and session->isViewable())
35
 
  {
36
 
    session->awake(only_kill_query ? Session::KILL_QUERY : Session::KILL_CONNECTION);
37
 
    return true;
38
 
  }
39
 
 
40
 
  return false;
41
 
}
 
26
using namespace drizzled;
42
27
 
43
28
bool statement::Kill::execute()
44
29
{
45
30
  Item *it= (Item *) session->lex->value_list.head();
46
31
 
47
 
  if ((not it->fixed && it->fix_fields(session->lex->session, &it)) || it->check_cols(1))
 
32
  if ((! it->fixed && it->fix_fields(session->lex->session, &it)) || 
 
33
      it->check_cols(1))
48
34
  {
49
35
    my_message(ER_SET_CONSTANTS_ONLY, 
50
36
               ER(ER_SET_CONSTANTS_ONLY),
51
37
               MYF(0));
52
38
    return true;
53
39
  }
54
 
 
55
 
  if (kill_one_thread(static_cast<session_id_t>(it->val_int()), session->lex->type & ONLY_KILL_QUERY))
56
 
  {
57
 
    session->my_ok();
58
 
  }
59
 
  else
60
 
  {
61
 
    my_error(ER_NO_SUCH_THREAD, MYF(0), it->val_int());
62
 
  }
63
 
 
 
40
  sql_kill(session, (ulong) it->val_int(), session->lex->type & ONLY_KILL_QUERY);
64
41
  return false;
65
42
}
66
 
 
67
 
} /* namespace drizzled */
68