Skip to content
  • Pedro Figueiredo's avatar
    195f9461
    BUG#27903831 [MYSQL 8.0 GA DEBUG BUILD] ASSERTION `!THD->HAS_GTID_CONSISTENCY_VIOLATION' · 195f9461
    Pedro Figueiredo authored
    Description
    -----------
    
    The assertion with failing condition `!thd->has_gtid_consistency_violation`, in
    file `sql/rpl_gtid_execution.cc:91`, function `bool set_gtid_next(THD*, const
    Gtid_specification&)`, is generated while executing a DDL statement, on a
    temporary table, imediately after `XA PREPARE`.
    
    Analysis
    --------
    
    In `gtid_pre_statement_post_implicit_commit_checks()`, a GTID consistency
    violation is identified and the appropriate flags and counters are
    updated. However, if the statement fails to execute, the given flags and
    counters remain untouched, as if the statement successfully executed.
    
    Fix
    ---
    
    When a statement fails to execute, the `THD::has_gtid_consistency_violation` the
    GTID violation counters should be restored to the values prior to the execution
    attempt, by invoking `gtid_state->end_gtid_violating_transaction` after the
    failure.
    195f9461
    BUG#27903831 [MYSQL 8.0 GA DEBUG BUILD] ASSERTION `!THD->HAS_GTID_CONSISTENCY_VIOLATION'
    Pedro Figueiredo authored
    Description
    -----------
    
    The assertion with failing condition `!thd->has_gtid_consistency_violation`, in
    file `sql/rpl_gtid_execution.cc:91`, function `bool set_gtid_next(THD*, const
    Gtid_specification&)`, is generated while executing a DDL statement, on a
    temporary table, imediately after `XA PREPARE`.
    
    Analysis
    --------
    
    In `gtid_pre_statement_post_implicit_commit_checks()`, a GTID consistency
    violation is identified and the appropriate flags and counters are
    updated. However, if the statement fails to execute, the given flags and
    counters remain untouched, as if the statement successfully executed.
    
    Fix
    ---
    
    When a statement fails to execute, the `THD::has_gtid_consistency_violation` the
    GTID violation counters should be restored to the values prior to the execution
    attempt, by invoking `gtid_state->end_gtid_violating_transaction` after the
    failure.
Loading