• Marko Mäkelä's avatar
    MDEV-15060 Assertion in row_log_table_apply_op after instant ADD when the... · 6c43068d
    Marko Mäkelä authored
    MDEV-15060 Assertion in row_log_table_apply_op after instant ADD when the table is emptied during subsequent ALTER TABLE
    
    During an online table rebuild, a table could be emptied and converted
    from 'instant ADD' format to plain (pre-10.3) format. All online_log
    records for rebuilding the table must be written and parsed in the
    format of the table that existed at the start of the operation.
    
    row_log_t::n_core_fields: A new field for recording index->n_core_fields
    when online ALTER is initiated in row_log_allocate().
    
    row_log_t::is_instant(): Determine if the log is in the instant format.
    Only invoked by the row_log_table_ family of functions.
    
    dict_index_t::get_n_nullable(): Remove is_instant() debug assertions.
    Because a table can be converted to non-instant format during a
    table-rebuilding ALTER TABLE, these assertions would be bogus when
    executing row_log_table_apply().
    
    rec_init_offsets_temp(): Add the parameter n_core for passing the
    original index->n_core_fields.
    
    rec_init_offsets_temp(): Add a 3-parameter variant.
    
    rec_init_offsets_comp_ordinary(): Add the parameter n_core for
    passing the index->n_core_fields.
    6c43068d
rem0rec.h 41.9 KB