• unknown's avatar
    Bug #32971 No user level error message from slave sql thread when ER_NO_DEFAULT_FOR_FIELD · b6ec38ce
    unknown authored
    The error message due to lack of the default value for an extra field
    was not as informative as it should be.
    
    Fixed with improving the scheme of gathering, propagating and reporting
    errors in applying rows events. 
    The scheme is in the following.
    Any kind of error of processing of a row event incidents are to be 
    registered with my_error().
    In the end Rows_log_event::do_apply_event() invokes rli->report() with the 
    message to display consisting of all the errors.
    This mimics `show warnings' displaying.
    A simple test checks three errors in processing an event.
    Two hunks - a user level error and pushing it into the list - 
    have been devoted to already fixed Bug@31702.
    
    Some open issues relating to this artifact listed on BUG@21842 page and
    on WL@3679.
    Todo: to synchronize the statement in the tests comments on Update and Delete
    events may not stop when an extra field does not have a default with wl@3228 spec.
    
    
    include/my_base.h:
      A new handler level error code that is supposed to be mapped to a set of more
      specific ER_ user level errors.
    mysql-test/extra/rpl_tests/rpl_row_tabledefs.test:
      Adding yet another extra fields to see more than one error in show
      slave status' report.
    mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result:
      results changed (the error message etc)
    mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result:
      results changed
    sql/log_event.cc:
      Refining slave_rows_error_report to iterate on the list of gathered errors;
      Simplifying signature of prepare_record as the function does not call
      rli->report to leave that duty to the event's top level code.
    sql/log_event.h:
      adding a corrupt event error pushing. The error will be seen with
      show slave status.
    sql/log_event_old.cc:
      similar to log_event.cc changes
    sql/rpl_record.cc:
      prepare_record only pushes an error to the list
    sql/rpl_record.h:
      signature changed
    sql/share/errmsg.txt:
      The user level error code that corresponds to HA_ERR_CORRUPT_EVENT.
      The error will be reported in show slave status if such a failure happens.
    b6ec38ce
rpl_record.cc 10.9 KB