• unknown's avatar
    BUG#23171 (Illegal slave restart group position): · baaa102d
    unknown authored
    Second patch to fix skipping code. Moving relay and binary log 
    position changing code from do_apply_event [old exec_event()] into
    do_update_pos() and doing other changes necessary to support that.
    
    Fixing a bug that can cause deadlock if rotating binary log when committing
    a changes to a transactional table that is not inside a transaction and
    cause a rotate log.
    
    
    sql/log.cc:
      Changing condition in binlog_commit() to skip calling
      binlog_end_trans() twice to match condition in binlog_end_trans().
    sql/log_event.cc:
      Name change: apply_event_impl() -> do_apply_event()
      Name change: advance_coord_impl() -> do_update_pos()
      
      do_apply_event() now uses pointer to constant RELAY_LOG_INFO to prevent
      inadvertandly changing the position in the code. Doing this would make
      the skipping code loose track of where it is. All position changing code
      shall now be in do_update_pos().
      
      Factoring out relay and binary log position updating code from
      do_apply_event() [previously exec_event()] into do_update_pos().
      Using a safe approach to make it work: will refine the refactoring
      when the skipping code is implemented.
      
      Adding const casts where needed.
      
      Changing signature to use pointers to constant objects where needed.
    sql/rpl_rli.cc:
      Making cached_charset_compare() const to work with constant instances of RELAY_LOG_INFO.
      
      Debriding code.
    sql/rpl_rli.h:
      Making cached_charset_compare() const to work with constant instances of RELAY_LOG_INFO.
      
      Debriding code.
    sql/rpl_utility.cc:
      Using pointer to const RELAY_LOG_INFO to make it work with other code.
    sql/rpl_utility.h:
      Using pointer to const RELAY_LOG_INFO to make it work with other code.
    sql/slave.cc:
      Using pointer to const RELAY_LOG_INFO to make it work with other code.
      
      Adding const cast where necessary.
    sql/slave.h:
      Using pointer to const RELAY_LOG_INFO to make it work with other code.
    baaa102d
slave.h 8.38 KB