Commit 7d94b23a authored by monty@mashka.mysql.fi's avatar monty@mashka.mysql.fi
Browse files

Merge work:/home/bk/mysql into mashka.mysql.fi:/home/my/mysql-3.23

parents a7ac8973 3e655c8d
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -1376,6 +1376,24 @@ mysql_execute_command(void)
    start_slave(thd);
    break;
  case SQLCOM_SLAVE_STOP:
   /*
      if the client thread has locked tables, a deadlock is possible.
      Assume that
      - the client thread does LOCK TABLE t READ.
      - then the master updates t.
      - then the SQL slave thread wants to update t,
      so it waits for the client thread because t is locked by it.
      - then the client thread does SLAVE STOP.
      SLAVE STOP waits for the SQL slave thread to terminate its
      update t, which waits for the client thread because t is locked by it.
      To prevent that, refuse SLAVE STOP if the
      client thread has locked tables
    */
    if (thd->locked_tables || thd->active_transaction())
    {
      send_error(&thd->net,ER_LOCK_OR_ACTIVE_TRANSACTION);
      break;
    }
    stop_slave(thd);
    break;