Skip to content
  • Marko Mäkelä's avatar
    64cbc0ac
    Bug#14712710 BOGUS DUPLICATE KEY ERROR DURING ONLINE ALTER TABLE · 64cbc0ac
    Marko Mäkelä authored
    When an online ALTER TABLE rebuilds the table, we would get false
    duplicate key errors on row_log_table_apply() if the initial table
    scan performed READ UNCOMMITTED. If we perform REPEATABLE READ, the
    log will never be older than what we copied from the table, and the
    false duplicates will be gone.
    
    prepare_inplace_alter_table_dict(): Assign a consistent read view for
    online table-copying ALTER TABLE.
    
    BTR_CREATE_SAME_PK_FLAG: Remove.
    
    row_ins_duplicate_online_is_newer(): Remove. It is simpler to
    construct old record versions in the table scan phase than in the log
    application phase.
    
    row_ins_duplicate_online(): Simplify.
    
    row_ins_duplicate_error_in_clust_online(): Wrapper for
    row_ins_duplicate_online(). Check also cursor->up_match for a
    duplicate.
    
    row_merge_read_clustered_index(): When rebuilding the table online,
    perform a REPEATABLE READ instead of READ UNCOMMITTED.
    
    row_purge_upd_exist_or_extern_func(): Refuse the operation if an
    off-page column would be freed.
    
    row_purge_record_func(): Only refuse the operation if an off-page
    column would be freed. Do process other undo log records for tables
    that are being altered online.
    
    row_vers_build_for_consistent_read(): Correct comments and remove
    redundant code.
    
    trx_undo_get_undo_rec_low(): Correct a comment.
    
    rb:1438 approved by Jimmy Yang
    64cbc0ac
    Bug#14712710 BOGUS DUPLICATE KEY ERROR DURING ONLINE ALTER TABLE
    Marko Mäkelä authored
    When an online ALTER TABLE rebuilds the table, we would get false
    duplicate key errors on row_log_table_apply() if the initial table
    scan performed READ UNCOMMITTED. If we perform REPEATABLE READ, the
    log will never be older than what we copied from the table, and the
    false duplicates will be gone.
    
    prepare_inplace_alter_table_dict(): Assign a consistent read view for
    online table-copying ALTER TABLE.
    
    BTR_CREATE_SAME_PK_FLAG: Remove.
    
    row_ins_duplicate_online_is_newer(): Remove. It is simpler to
    construct old record versions in the table scan phase than in the log
    application phase.
    
    row_ins_duplicate_online(): Simplify.
    
    row_ins_duplicate_error_in_clust_online(): Wrapper for
    row_ins_duplicate_online(). Check also cursor->up_match for a
    duplicate.
    
    row_merge_read_clustered_index(): When rebuilding the table online,
    perform a REPEATABLE READ instead of READ UNCOMMITTED.
    
    row_purge_upd_exist_or_extern_func(): Refuse the operation if an
    off-page column would be freed.
    
    row_purge_record_func(): Only refuse the operation if an off-page
    column would be freed. Do process other undo log records for tables
    that are being altered online.
    
    row_vers_build_for_consistent_read(): Correct comments and remove
    redundant code.
    
    trx_undo_get_undo_rec_low(): Correct a comment.
    
    rb:1438 approved by Jimmy Yang
Loading