No, the commit means that in the following case: create table t (n int, m int, unique(n), unique(m)); insert into t values (1, 1); insert into t values (2, 2); insert into t values (1, 2) on duplicate key update m = m + 10;
The last statement can update different rows on master and slave and user won't get the warning that the statement is unsafe for replication. I didn't look closely into the rest of the changes bundled for some reason into the same commit. It's the changes in sql_base.cc that I'm concerned about. On Fri, Sep 26, 2014 at 10:19 AM, Roberto Spadim <robe...@spadim.com.br> wrote: > Committer: Michael Widenius > > Date: 2014-09-15 21:00:47 UTC > mto: This revision was merged to the branch mainline in revision 4402. > Revision ID: mo...@mariadb.org-20140915210047-prls1zl5gbs51hj2 > > Don't give warning if there are two unique keys used with INSERT .. ON > DUPLICATE KEY UPDATE. > We should assume that the store engine will report the first duplicate key > for this case. > From what i understood, if there's two unique keys that have duplicate keys > (insert values (1,1); insert values(1,1);) the first key will report the > first warning, the second warning isn't a problem since the first one > reported a duplicate key > that's what i understood (but i'm not sure) > mysql-test/suite/binlog/r/binlog_unsafe.result > removed this line from test cases: > 2709 > > Warnings: > 2710 > > Note 1592 Unsafe statement written to the binary log using statement > format since BINLOG_FORMAT = STATEMENT. INSERT... ON DUPLICATE KEY UPDATE > on a table with more than one UNIQUE KEY is unsafe > > > sql/sql_base.cc > included this line: > > 5307 > #ifdef NOT_USED_IN_MARIADB > > > > AND SQL_CLASS.CC > > 6023 > Auxiliary function to check if the warning for unsafe repliction > statements > > 6024 > should be thrown or suppressed. > > From what i understood it's only to don't log many useless messages, and if > a 'real' problem occur thrown an error instead of supress it > > > Old code of suppression of unsafe logging error with LIMIT didn't work, > because of wrong usage of my_interval_timer(). > > Suppress unsafe logging errors to the error log if we get too many unsafe > logging errors in a short time. > > as expected at sql_class.cc > > > This is to not overflow the error log with meaningless errors. > > - Each error code is suppressed and counted separately. > - We do a 5 minute suppression of new errors if we get more than 10 errors > in that time. > > Only print unsafe logging errors if log_warnings > 1. > I don't know what's an unsafe log erro, should be nice an explain here > > > > 2014-09-26 13:38 GMT-03:00 Pavel Ivanov <piva...@google.com>: >> >> Hi, >> >> I see that in MariaDB 10.0.14 Michael disabled replication safety >> warning for the case of INSERT ON DUPLICATE KEY UPDATE with several >> unique keys with a comment "We should assume that the store engine >> will report the first duplicate key for this case." >> http://bazaar.launchpad.net/~maria-captains/maria/10.0/revision/4400.1.3 >> What does that mean? Which key is "the first duplicate key" and why >> MariaDB relies on an engine behavior which AFAIK is not guaranteed? >> And why this serious change in behavior wasn't mentioned in the >> Release Notes? >> >> On the related note Release Notes mention the error log flood >> protection. Why it's not behind flag? How should I disable the feature >> and get back to the old behavior? >> >> Thank you, >> Pavel >> >> _______________________________________________ >> Mailing list: https://launchpad.net/~maria-developers >> Post to : maria-developers@lists.launchpad.net >> Unsubscribe : https://launchpad.net/~maria-developers >> More help : https://help.launchpad.net/ListHelp > > > > > -- > Roberto Spadim > SPAEmpresarial > Eng. Automação e Controle _______________________________________________ Mailing list: https://launchpad.net/~maria-developers Post to : maria-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~maria-developers More help : https://help.launchpad.net/ListHelp