• Marko Mäkelä's avatar
    MDEV-25506 (2 of 3): Kill during DDL leaves orphan .ibd file · 2ceadb39
    Marko Mäkelä authored
    dict_drop_index_tree(): Even if SYS_INDEXES.PAGE contains the
    special value FIL_NULL, the tablespace identified by SYS_INDEXES.SPACE
    may exist and may need to be dropped. This would definitely be the case
    if the server had been killed right after a FILE_CREATE record was
    persistently written during CREATE TABLE, but before the transaction
    was committed.
    
    btr_free_if_exists(): Simplify the interface, to avoid repeated
    tablespace lookup.
    
    One more scenario is known to be broken: If the server is killed
    during DROP TABLE (or table-rebuilding ALTER TABLE) right after a
    FILE_DELETE record has been persistently written but before the
    file was deleted, then we could end up recovering no tablespace
    at all, and failing to delete the file, in either of fil_name_process()
    or dict_drop_index_tree().
    
    Thanks to Elena Stepanova for providing "rr replay" and data directories
    of these scenarios.
    2ceadb39
btr0btr.h 27.1 KB