• unknown's avatar
    Added support for a LOCK TABLES...WHERE ENGINE = InnoDB query which sets · b892e1f6
    unknown authored
    transactional table locks to tables mentioned in the query. These locks
    are released at the end of the transaction automatically.
    This is fix for bugs #5655, #5998 and issue #3762.
    
    
    
    
    innobase/include/lock0lock.h:
      Added a new lock type LOCK_TABLE_TRANSACTIONAL.
    innobase/include/trx0trx.h:
      Added a varible to store the number of transactional table locks
      reserved by the transaction and stored in the trx_locks list.
    innobase/lock/lock0lock.c:
      Added a lock type LOCK_TABLE_TRANSACTIONAL.
    innobase/row/row0mysql.c:
      Added support for a transactional table lock.
    innobase/trx/trx0roll.c:
      Make compiler happy and format function.
    innobase/trx/trx0trx.c:
      Added information about number of explicit and transactional table locks in
      the innodb monitor.
    sql/ha_innodb.cc:
      Added support for a LOCK_TABLE_TRANSACTIONAL table lock (SQLCOM_LOCK_TABLES_TRANSACTIONAL).
      Transactional table locks are taken in the function ::transactional_table_lock().
    sql/ha_innodb.h:
      Added prototype for a function trandactional_table_lock().
    sql/handler.h:
      Added prototype for a virtual function transactional_table_lock().
      Handler does not need to implement this function.
    sql/lock.cc:
      Added a function transactional_lock_tables() to lock all tables in the list
      with transactional table lock. These locks can cause a deadlock and
      this error should be reported back to user.
    sql/mysql_priv.h:
      Added prototype for a function transactional_lock_tables().
    sql/sql_lex.h:
      Added SQLCOM_LOCK_TABLES_TRANSACTIONAL command.
    sql/sql_parse.cc:
      Added SQLCOM_LOCK_TABLES_TRANSACTIONAL command.
    sql/sql_yacc.yy:
      Added parsing rules for a LOCK TABLES...WHERE ENGINE = x;
    b892e1f6
trx0trx.c 45.8 KB