• Sergey Vojtovich's avatar
    BUG#11757032 - 49030: OPTIMIZE TABLE BREAKS MYISAM TABLE WHEN · de8c70e7
    Sergey Vojtovich authored
                   USING MYISAM_USE_MMAP ON WINDOWS
    
    When OPTIMIZE/REPAIR TABLE is switching to new data file,
    old data file is removed while memory mapping is still
    active.
    
    With 5.1 implementation of nt_share_delete() it is not
    permitted to remove mmaped file.
    
    This fix disables memory mapping for mi_repair() operations.
    
    mysql-test/r/myisam.result:
      A test case for BUG#11757032.
    mysql-test/t/myisam.test:
      A test case for BUG#11757032.
    storage/myisam/ha_myisam.cc:
      mi_repair*() functions family use file I/O even if memory
      mapping is available.
      
      Since mixing mmap I/O and file I/O may cause various artifacts,
      memory mapping must be disabled.
    storage/myisam/mi_delete_all.c:
      Clean-up: do not attempt to remap file after truncate, since
      there is nothing to map.
    de8c70e7
ha_myisam.cc 68.5 KB