~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/statement/kill.cc

  • Committer: Brian Aker
  • Date: 2010-11-23 09:35:51 UTC
  • mfrom: (1933.2.13 catalogs)
  • Revision ID: brian@tangent.org-20101123093551-l5m7zhz3m5c4wmlk
Merge in changes for barriers (update for kill, etc).

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
#include "config.h"
22
22
#include <drizzled/show.h>
23
23
#include <drizzled/session.h>
 
24
#include <drizzled/session_list.h>
24
25
#include <drizzled/statement/kill.h>
25
26
 
26
27
namespace drizzled
27
28
{
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
}
 
42
 
29
43
bool statement::Kill::execute()
30
44
{
31
45
  Item *it= (Item *) session->lex->value_list.head();
32
46
 
33
 
  if ((! it->fixed && it->fix_fields(session->lex->session, &it)) || 
34
 
      it->check_cols(1))
 
47
  if ((not it->fixed && it->fix_fields(session->lex->session, &it)) || it->check_cols(1))
35
48
  {
36
49
    my_message(ER_SET_CONSTANTS_ONLY, 
37
50
               ER(ER_SET_CONSTANTS_ONLY),
38
51
               MYF(0));
39
52
    return true;
40
53
  }
41
 
  sql_kill(session, (ulong) it->val_int(), session->lex->type & ONLY_KILL_QUERY);
 
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
 
42
64
  return false;
43
65
}
44
66