Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
5.1.67, 5.2.14, 5.3.12, 5.5.35, 10.0.7
-
None
-
Windows
Description
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.
Possible fixes:
- 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()
Attachments
Activity
Field | Original Value | New Value |
---|---|---|
Description |
On {{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 the rename was successful if at least some files existed and were renamed. On Windows it would delete all other target files though. Possible fixes: * 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()}} |
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 the rename was successful if at least some files existed and were renamed. On Windows it would delete all other target files though. Possible fixes: * 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()}} |
Environment | Windows |
Description |
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 the rename was successful if at least some files existed and were renamed. On Windows it would delete all other target files though. Possible fixes: * 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()}} |
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. Possible fixes: * 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()}} |
Assignee | Sergey Vojtovich [ svoj ] |
Assignee | Sergey Vojtovich [ svoj ] | Sergei Golubchik [ serg ] |
Assignee | Sergei Golubchik [ serg ] | Sergey Vojtovich [ svoj ] |
Resolution | Fixed [ 1 ] | |
Status | Open [ 1 ] | Closed [ 6 ] |
Workflow | defaullt [ 34106 ] | MariaDB v2 [ 42713 ] |
Workflow | MariaDB v2 [ 42713 ] | MariaDB v3 [ 61698 ] |
Workflow | MariaDB v3 [ 61698 ] | MariaDB v4 [ 147463 ] |
What's the point for handler::rename_table() not to remove all target files? We'll get a mix of old and new files in this case, which may or may not be desired.
OTOH I agree that my_rename() should be more consistent.