• ingo@mysql.com's avatar
    Bug#10224 - ANALYZE TABLE crashing with simultaneous CREATE ... SELECT statement. · 51d80960
    ingo@mysql.com authored
    1.) Added a new option to mysql_lock_tables() for ignoring FLUSH TABLES.
    Used the new option in create_table_from_items().
    It is necessary to prevent the SELECT table from being reopend.
    It would get new storage assigned for its fields, while the
    SELECT part of the command would still use the old (freed) storage.
    2.) Protected the CREATE TABLE and CREATE TABLE ... SELECT commands
    against a global read lock. This prevents a deadlock in
    CREATE TABLE ... SELECT in conjunction with FLUSH TABLES WITH READ LOCK
    and avoids the creation of new tables during a global read lock.
    3.) Replaced set_protect_against_global_read_lock() and
    unset_protect_against_global_read_lock() by
    wait_if_global_read_lock() and start_waiting_global_read_lock()
    in the INSERT DELAYED handling.
    51d80960
lock.cc 24.9 KB