• Marko Mäkelä's avatar
    Try to ensure that rollback of inserting metadata record works · 6a3b70c6
    Marko Mäkelä authored
    We must use the original page format for inserting metadata records.
    This is because in case the instant ALTER TABLE operation needs to
    be rolled back (due to crash recovery), all pages must remain in
    the original format.
    
    btr_cur_optimistic_insert(): Avoid reorganize for inserting the
    metadata record.
    
    btr_cur_optimistic_update(): Initialize rec,offsets correctly
    after possible page format conversion.
    
    innobase_instant_try(): Do not store NULL values for those
    metadata record columns that were originally declared NOT NULL.
    
    dict_index_t::get_n_nullable(): Refer to dict_col_t::was_not_null()
    in order to keep the original format intact.
    
    lock_move_reorganize_page(): Allow the two pages to be in
    different formats.
    
    rec_convert_dtuple_to_rec_comp(), rec_convert_dtuple_to_rec_comp():
    Also observe the DATA_WAS_NOT_NULL flag.
    6a3b70c6
rem0rec.cc 77.8 KB