• Mattias Jonsson's avatar
    Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with · 3b897f2b
    Mattias Jonsson authored
    concurrent I_S query
    
    There were two problem:
    1) MYSQL_LOCK_IGNORE_FLUSH also ignored name locks
    2) there was a race between abort_and_upgrade_locks and
       alter_close_tables
       (i.e. remove_table_from_cache and
        close_data_files_and_morph_locks)
    
    Which allowed the table to be opened with MYSQL_LOCK_IGNORE_FLUSH flag
    resulting in renaming a partition that was already in use,
    which could cause the table to be unusable.
    
    Solution was to not allow IGNORE_FLUSH to skip waiting for
    a named locked table.
    
    And to not release the LOCK_open mutex between the
    calls to remove_table_from_cache and
    close_data_files_and_morph_locks by merging the functions
    abort_and_upgrade_locks and alter_close_tables.
    3b897f2b
sql_base.cc 290 KB