• guilhem@gbichot3.local's avatar
    Fix for BUG#24432 · b3a03dad
    guilhem@gbichot3.local authored
    "INSERT... ON DUPLICATE KEY UPDATE skips auto_increment values".
    When in an INSERT ON DUPLICATE KEY UPDATE, using
    an autoincrement column, we inserted some autogenerated values and
    also updated some rows, some autogenerated values were not used
    (for example, even if 10 was the largest autoinc value in the table
    at the start of the statement, 12 could be the first autogenerated
    value inserted by the statement, instead of 11). One autogenerated
    value was lost per updated row. Led to exhausting the range of the
    autoincrement column faster.
    Bug introduced by fix of BUG#20188; present since 5.0.24 and 5.1.12.
    This bug breaks replication from a pre-5.0.24 master.
    But the present bugfix, as it makes INSERT ON DUP KEY UPDATE
    behave like pre-5.0.24, breaks replication from a [5.0.24,5.0.34]
    master to a fixed (5.0.36) slave! To warn users against this when
    they upgrade their slave, as agreed with the support team, we add
    code for a fixed slave to detect that it is connected to a buggy
    master in a situation (INSERT ON DUP KEY UPDATE into autoinc column)
    likely to break replication, in which case it cannot replicate so
    stops and prints a message to the slave's error log and to SHOW SLAVE
    STATUS.
    For 5.0.36->[5.0.24,5.0.34] replication we cannot warn as master
    does not know the slave's version (but we always recommended to users
    to have slave at least as new as master).
    As agreed with support, I'll also ask for an alert to be put into
    the MySQL Network Monitoring and Advisory Service.
    b3a03dad
slave.cc 170 KB