~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_parse.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:
1415
1415
 
1416
1416
 
1417
1417
/**
1418
 
  kill on thread.
1419
 
 
1420
 
  @param session                        Thread class
1421
 
  @param id                     Thread id
1422
 
  @param only_kill_query        Should it kill the query or the connection
1423
 
 
1424
 
  @note
1425
 
    This is written such that we have a short lock on LOCK_thread_count
1426
 
*/
1427
 
 
1428
 
static unsigned int kill_one_thread(session_id_t id, bool only_kill_query)
1429
 
{
1430
 
  uint32_t error= ER_NO_SUCH_THREAD;
1431
 
  
1432
 
  Session::shared_ptr session= session::Cache::singleton().find(id);
1433
 
 
1434
 
  if (not session)
1435
 
    return error;
1436
 
 
1437
 
  if (session->isViewable())
1438
 
  {
1439
 
    session->awake(only_kill_query ? Session::KILL_QUERY : Session::KILL_CONNECTION);
1440
 
    error= 0;
1441
 
  }
1442
 
 
1443
 
  return error;
1444
 
}
1445
 
 
1446
 
 
1447
 
/*
1448
 
  kills a thread and sends response
1449
 
 
1450
 
  SYNOPSIS
1451
 
    sql_kill()
1452
 
    session                     Thread class
1453
 
    id                  Thread id
1454
 
    only_kill_query     Should it kill the query or the connection
1455
 
*/
1456
 
 
1457
 
void sql_kill(Session *session, int64_t id, bool only_kill_query)
1458
 
{
1459
 
  uint32_t error;
1460
 
 
1461
 
  if (not (error= kill_one_thread(id, only_kill_query)))
1462
 
    session->my_ok();
1463
 
  else
1464
 
    my_error(error, MYF(0), id);
1465
 
}
1466
 
 
1467
 
 
1468
 
/**
1469
1418
  Check if the select is a simple select (not an union).
1470
1419
 
1471
1420
  @retval