• Marko Mäkelä's avatar
    MDEV-16809 Allow full redo logging for ALTER TABLE · 0f90728b
    Marko Mäkelä authored
    Introduce the configuration option innodb_log_optimize_ddl
    for controlling whether native index creation or table-rebuild
    in InnoDB should keep optimizing the redo log
    (and writing MLOG_INDEX_LOAD records to ensure that
    concurrent backup would fail).
    
    By default, we have innodb_log_optimize_ddl=ON, that is,
    the default behaviour that was introduced in MariaDB 10.2.2
    (with the merge of InnoDB from MySQL 5.7) will be unchanged.
    
    BtrBulk::m_trx: Replaces m_trx_id. We must be able to check for
    KILL QUERY even if !m_flush_observer (innodb_log_optimize_ddl=OFF).
    
    page_cur_insert_rec_write_log(): Declare globally, so that this
    can be called from PageBulk::insert().
    
    row_merge_insert_index_tuples(): Remove the unused parameter trx_id.
    
    row_merge_build_indexes(): Enable or disable redo logging based on
    the innodb_log_optimize_ddl parameter.
    
    PageBulk::init(), PageBulk::insert(), PageBulk::finish(): Write
    redo log records if needed. For ROW_FORMAT=COMPRESSED, redo log
    will be written in PageBulk::compress() unless we called
    m_mtr.set_log_mode(MTR_LOG_NO_REDO).
    0f90728b
row0ftsort.cc 48.8 KB