~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_parse.cc

  • Committer: Brian Aker
  • Date: 2011-02-22 22:57:45 UTC
  • mto: (2194.4.1 drizzle-build)
  • mto: This revision was merged to the branch mainline in revision 2197.
  • Revision ID: brian@tangent.org-20110222225745-973fbdcutp2m1w0h
Add in KILL protocol support.

Show diffs side-by-side

added added

removed removed

Lines of Context:
50
50
#include <drizzled/optimizer/explain_plan.h>
51
51
#include <drizzled/pthread_globals.h>
52
52
#include <drizzled/plugin/event_observer.h>
 
53
#include <drizzled/display.h>
53
54
#include <drizzled/visibility.h>
54
55
 
 
56
#include <drizzled/kill.h>
 
57
 
55
58
#include <drizzled/schema.h>
56
59
 
57
60
#include <limits.h>
92
95
  "Shutdown",
93
96
  "Connect",
94
97
  "Ping",
 
98
  "Kill",
95
99
  "Error"  // Last command number
96
100
};
97
101
 
178
182
    1   request of thread shutdown, i. e. if command is
179
183
        COM_QUIT/COM_SHUTDOWN
180
184
*/
181
 
bool dispatch_command(enum enum_server_command command, Session *session,
 
185
bool dispatch_command(enum_server_command command, Session *session,
182
186
                      char* packet, uint32_t packet_length)
183
187
{
184
188
  bool error= 0;
211
215
 
212
216
  session->server_status&=
213
217
           ~(SERVER_QUERY_NO_INDEX_USED | SERVER_QUERY_NO_GOOD_INDEX_USED);
 
218
 
214
219
  switch (command) {
215
220
  case COM_INIT_DB:
216
221
  {
245
250
  case COM_QUIT:
246
251
    /* We don't calculate statistics for this command */
247
252
    session->main_da.disable_status();              // Don't send anything back
248
 
    error=true;                                 // End server
 
253
    error= true;                                        // End server
249
254
    break;
 
255
  case COM_KILL:
 
256
    {
 
257
      if (packet_length != 4)
 
258
      {
 
259
        my_error(ER_NO_SUCH_THREAD, MYF(0), 0);
 
260
        break;
 
261
      }
 
262
      else
 
263
      {
 
264
        uint32_t kill_id;
 
265
        memcpy(&kill_id, packet, sizeof(uint32_t));
 
266
        
 
267
        kill_id= ntohl(kill_id);
 
268
        (void)drizzled::kill(*session->user(), kill_id, true);
 
269
      }
 
270
      session->my_ok();
 
271
      break;
 
272
    }
250
273
  case COM_SHUTDOWN:
251
274
  {
252
275
    session->status_var.com_other++;
253
276
    session->my_eof();
254
277
    session->close_thread_tables();                     // Free before kill
255
278
    kill_drizzle();
256
 
    error=true;
 
279
    error= true;
257
280
    break;
258
281
  }
259
282
  case COM_PING: