• Marko Mäkelä's avatar
    MDEV-14378 In ALGORITHM=INPLACE, use a common name for the intermediate tables or partitions · 754727bb
    Marko Mäkelä authored
    This is a backport of commit 07e9ff1f.
    
    Allow DROP TABLE `#mysql50##sql-...._.` to drop tables that were
    being rebuilt by ALGORITHM=INPLACE
    
    NOTE: If the server is killed after the table-rebuilding ALGORITHM=INPLACE
    commits inside InnoDB but before the .frm file has been replaced, then
    the recovery will involve something else than DROP TABLE.
    
    NOTE: If the server is killed in a true inplace ALTER TABLE commits
    inside InnoDB but before the .frm file has been replaced, then we
    are really out of luck. To properly handle that situation, we would
    need a transactional mysql.ddl_fixup table that directs recovery to
    rename or remove files.
    
    prepare_inplace_alter_table_dict(): Use the altered_table->s->table_name
    for generating the new_table_name.
    
    table_name_t::part_suffix: The start of the partition name suffix.
    
    table_name_t::dbend(): Return the end of the schema name.
    
    table_name_t::dblen(): Return the length of the schema name, in bytes.
    
    table_name_t::basename(): Return the name without the schema name.
    
    table_name_t::part(): Return the partition name, or NULL if none.
    
    row_drop_table_for_mysql(): Assert for #sql, not #sql-ib.
    754727bb
innodb-alter-tempfile.test 1.6 KB