~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/statement/kill.cc

  • Committer: Monty Taylor
  • Date: 2010-12-02 22:51:54 UTC
  • mto: (1975.1.1 build)
  • mto: This revision was merged to the branch mainline in revision 1976.
  • Revision ID: mordred@inaugust.com-20101202225154-h54ifmga9x6cckgs
Refactored syslog module and changed it to use sys_var directly.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
3
 *
4
 
 *  Copyright (C) 2009 Sun Microsystems, Inc.
 
4
 *  Copyright (C) 2009 Sun Microsystems
5
5
 *
6
6
 *  This program is free software; you can redistribute it and/or modify
7
7
 *  it under the terms of the GNU General Public License as published by
27
27
namespace drizzled
28
28
{
29
29
 
30
 
namespace statement
31
 
{
32
 
 
33
 
Kill::Kill(Session *in_session, Item *item, bool is_query_kill) :
34
 
  Statement(in_session)
35
 
  {
36
 
    if (is_query_kill)
37
 
    {
38
 
      getSession()->getLex()->type= ONLY_KILL_QUERY;
39
 
    }
40
 
 
41
 
    getSession()->getLex()->value_list.empty();
42
 
    getSession()->getLex()->value_list.push_front(item);
43
 
    getSession()->getLex()->sql_command= SQLCOM_KILL;
44
 
  }
45
 
 
46
 
} // namespace statement
47
 
 
48
 
bool statement::Kill::kill(session_id_t id, bool only_kill_query)
49
 
{
50
 
  drizzled::Session::shared_ptr session_param= session::Cache::singleton().find(id);
51
 
 
52
 
  if (session_param and session_param->isViewable(*getSession()->user()))
53
 
  {
54
 
    session_param->awake(only_kill_query ? Session::KILL_QUERY : Session::KILL_CONNECTION);
 
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);
55
37
    return true;
56
38
  }
57
39
 
60
42
 
61
43
bool statement::Kill::execute()
62
44
{
63
 
  Item *it= (Item *) getSession()->lex->value_list.head();
 
45
  Item *it= (Item *) session->lex->value_list.head();
64
46
 
65
 
  if ((not it->fixed && it->fix_fields(getSession()->lex->session, &it)) || it->check_cols(1))
 
47
  if ((not it->fixed && it->fix_fields(session->lex->session, &it)) || it->check_cols(1))
66
48
  {
67
49
    my_message(ER_SET_CONSTANTS_ONLY, 
68
50
               ER(ER_SET_CONSTANTS_ONLY),
70
52
    return true;
71
53
  }
72
54
 
73
 
  if (kill(static_cast<session_id_t>(it->val_int()), getSession()->lex->type & ONLY_KILL_QUERY))
 
55
  if (kill_one_thread(static_cast<session_id_t>(it->val_int()), session->lex->type & ONLY_KILL_QUERY))
74
56
  {
75
 
    getSession()->my_ok();
 
57
    session->my_ok();
76
58
  }
77
59
  else
78
60
  {