• guilhem@gbichot3.local's avatar
    Fix for BUG#20649 "mixed replication mode does not work with INSERT DELAYED". · a5f184d5
    guilhem@gbichot3.local authored
    The bug was that if the server was running in mixed binlogging mode,
    and an INSERT DELAYED used some needing-row-based components like UUID(),
    the server didn't binlog this row-based but statement-based, which
    thus failed to insert correct data on the slave.
    This changeset implements that when a delayed_insert thread is created,
    if the server's global binlog mode is "mixed", that thread will use row-based.
    This also fixes BUG#20633 "INSERT DELAYED RAND() or @user_var does not
    replicate statement-based": we don't fix it in statement-based mode (would
    require bookeeping of rand seeds and user variables used by each row),
    but at least it will now work in mixed mode (as row-based will be used).
    We re-enable rpl_switch_stm_row_mixed.test (so BUG#18590
    which was about re-enabling this test, will be closed) to test the fixes.
    Between when it was disabled and now, some good changes to row-based
    binlogging (no generation of table map events for non-changed tables)
    induce changes in the test's result file.
    a5f184d5
sql_insert.cc 90.7 KB