On Windows my_rename() deletes the target file before renaming. But if the source file does not exist, it means that a target file was deleted erroneously.
It particular, this is a problem for handler::rename_table() that renames all files from handler::bas_ext(). It assumes that the table was renamed successfully if at least some files existed and were renamed. On Windows it would delete all other target files though.
verify that the source file exists in my_rename() — unnecessary overhead?
verify that the source file exists in handler::rename_table()
add a special MYF flag to my_rename() that tells to verify whether the source exists before deleting; use this flag in handler::rename_table()