• Michael Widenius's avatar
    Fixed lp:925377 "Querying myisam table metadata while 'alter table..enable... · d8038704
    Michael Widenius authored
    Fixed lp:925377 "Querying myisam table metadata while 'alter table..enable keys' is running may corrupt the table"
    Fixed wrong mutex order bug in Aria when flush_log_for_bitmap() was called when table is not yet marked for change.
    
    include/my_base.h:
      Added flag that table is opened only for status
    mysql-test/r/myisam-big.result:
      Test case for lp:925377
    mysql-test/t/myisam-big.test:
      Test case for lp:925377
    sql/sql_base.cc:
      If thd->version == 0 (happens only when we are opening a table that is flushed under  MYSQL_LOCK_IGNORE_FLUSH), open the table in HA_OPEN_FOR_STATUS mode
    storage/maria/ma_bitmap.c:
      Fixed wrong mutex order bug in Aria when flush_log_for_bitmap() was called when table is not yet marked for change.
    storage/maria/ma_dbug.c:
      Ignore last_version <= 1 as these are either flushed or only opened for status
    storage/maria/ma_open.c:
      Use last_version=1 as a marker that table was opened with HA_OPEN_FOR_STATUS.
      In this case we just open a new version of the table in read only mode.
    storage/myisam/mi_create.c:
      Update prototype
    storage/myisam/mi_dbug.c:
      Ignore last_version <= 1 as these are either flushed or only opened for status
    storage/myisam/mi_open.c:
      Use last_version=1 as a marker that table was opened with HA_OPEN_FOR_STATUS.
      If HA_OPEN_FOR_STATUS is used, we will not assert if there is an old not-to-be-used version of the table existing.
      In this case we just open a new version of the table in read only mode.
    storage/myisam/myisamdef.h:
      Updated prototype
    d8038704
sql_base.cc 310 KB