diff options
| author | Sergei Golubchik <serg@mariadb.org> | 2018-01-29 17:07:45 +0100 |
|---|---|---|
| committer | Sergei Golubchik <serg@mariadb.org> | 2018-02-12 13:14:23 +0100 |
| commit | 711f3dd7f5ba2f21fd4f0a42b4bf9fa811d043cf (patch) | |
| tree | 2746d8b5495222406034e3b3dd8d7fa8395ca65c | |
| parent | d943d7f712a48073f0e3936b19557a1762e9f5a8 (diff) | |
| download | mariadb-git-711f3dd7f5ba2f21fd4f0a42b4bf9fa811d043cf.tar.gz | |
MDEV-13417 UPDATE produces wrong values if an updated column is later used as an update source
replication tests
| -rw-r--r-- | mysql-test/suite/rpl/r/rpl_update.result | 16 | ||||
| -rw-r--r-- | mysql-test/suite/rpl/t/rpl_update.test | 15 | ||||
| -rw-r--r-- | sql/log_event.cc | 2 |
3 files changed, 32 insertions, 1 deletions
diff --git a/mysql-test/suite/rpl/r/rpl_update.result b/mysql-test/suite/rpl/r/rpl_update.result new file mode 100644 index 00000000000..31bc50a78de --- /dev/null +++ b/mysql-test/suite/rpl/r/rpl_update.result @@ -0,0 +1,16 @@ +include/master-slave.inc +[connection master] +set sql_mode=simultaneous_assignment; +create table t1 (a int, b int); +insert into t1 values(1, 2); +update t1 set a=b, b=a; +select * from t1; +a b +2 1 +connection slave; +select * from t1; +a b +2 1 +connection master; +drop table t1; +include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/rpl_update.test b/mysql-test/suite/rpl/t/rpl_update.test new file mode 100644 index 00000000000..b38078770a5 --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_update.test @@ -0,0 +1,15 @@ +source include/master-slave.inc; + +# +# MDEV-13417 UPDATE produces wrong values if an updated column is later used as an update source +# +set sql_mode=simultaneous_assignment; +create table t1 (a int, b int); +insert into t1 values(1, 2); +update t1 set a=b, b=a; +select * from t1; +sync_slave_with_master; +select * from t1; +connection master; +drop table t1; +source include/rpl_end.inc; diff --git a/sql/log_event.cc b/sql/log_event.cc index 7f85e953765..113d6f352ea 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -5438,7 +5438,7 @@ int Query_log_event::do_apply_event(rpl_group_info *rgi, if (sql_mode_inited) thd->variables.sql_mode= (sql_mode_t) ((thd->variables.sql_mode & MODE_NO_DIR_IN_CREATE) | - (sql_mode & ~(ulong) MODE_NO_DIR_IN_CREATE)); + (sql_mode & ~(sql_mode_t) MODE_NO_DIR_IN_CREATE)); if (charset_inited) { rpl_sql_thread_info *sql_info= thd->system_thread_info.rpl_sql_info; |
