diff options
author | Michael Widenius <monty@askmonty.org> | 2013-08-27 19:18:04 +0300 |
---|---|---|
committer | Michael Widenius <monty@askmonty.org> | 2013-08-27 19:18:04 +0300 |
commit | 112411b056ae16c4addcb9dc84ebf1992b719d59 (patch) | |
tree | 0fa0c040903263e60a00f455afadaa9e83718736 /mysql-test | |
parent | 7907b9b4da8c299318bd73d32b621dc34acc0f35 (diff) | |
download | mariadb-git-112411b056ae16c4addcb9dc84ebf1992b719d59.tar.gz |
Fixed MySQL bug #69861 LAST_INSERT_ID is replicated incorrectly if replication filters are used
mysql-test/suite/rpl/r/last_insert_id.result:
Test case for last_insert_id
mysql-test/suite/rpl/t/last_insert_id.cnf:
Test case for last_insert_id
mysql-test/suite/rpl/t/last_insert_id.test:
Test case for last_insert_id
sql/log_event.cc:
Added DBUG_PRINT
Set thd->first_successful_insert_id_in_prev_stmt_for_binlog when setting thd->first_successful_insert_id_in_prev_stmt.
This is required to get last_insert_id() replicated.
This is analog to how read_first_successful_insert_id_in_prev_stmt() works.
sql/rpl_utility.cc:
Added DBUG_PRINT
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/suite/rpl/r/last_insert_id.result | 18 | ||||
-rw-r--r-- | mysql-test/suite/rpl/t/last_insert_id.cnf | 20 | ||||
-rw-r--r-- | mysql-test/suite/rpl/t/last_insert_id.test | 30 |
3 files changed, 68 insertions, 0 deletions
diff --git a/mysql-test/suite/rpl/r/last_insert_id.result b/mysql-test/suite/rpl/r/last_insert_id.result new file mode 100644 index 00000000000..ce64e9df41e --- /dev/null +++ b/mysql-test/suite/rpl/r/last_insert_id.result @@ -0,0 +1,18 @@ +include/rpl_init.inc [topology=1->2->3] +create table t1 (id int not null auto_increment primary key, i int) engine=InnoDB; +insert into t1 (i) values (-1); +insert into t1 (i) values (LAST_INSERT_ID()); +select * from t1; +id i +1 -1 +2 1 +select * from t1; +id i +1 -1 +2 1 +select * from t1; +id i +1 -1 +2 1 +drop table t1; +include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/last_insert_id.cnf b/mysql-test/suite/rpl/t/last_insert_id.cnf new file mode 100644 index 00000000000..1c229e4ac94 --- /dev/null +++ b/mysql-test/suite/rpl/t/last_insert_id.cnf @@ -0,0 +1,20 @@ +!include suite/rpl/my.cnf + +[mysqld.1] +log-slave-updates +loose-innodb + +[mysqld.2] +log-slave-updates +loose-innodb +replicate-ignore-table=db.t2 + +[mysqld.3] +log-slave-updates +loose-innodb + +[ENV] +SERVER_MYPORT_3= @mysqld.3.port +SERVER_MYSOCK_3= @mysqld.3.socket + + diff --git a/mysql-test/suite/rpl/t/last_insert_id.test b/mysql-test/suite/rpl/t/last_insert_id.test new file mode 100644 index 00000000000..f23cca405ac --- /dev/null +++ b/mysql-test/suite/rpl/t/last_insert_id.test @@ -0,0 +1,30 @@ +--source include/have_innodb.inc +--source include/have_binlog_format_mixed_or_statement.inc +--let $rpl_topology=1->2->3 +--source include/rpl_init.inc + +connection server_1; + +create table t1 (id int not null auto_increment primary key, i int) engine=InnoDB; +insert into t1 (i) values (-1); +insert into t1 (i) values (LAST_INSERT_ID()); +select * from t1; + +save_master_pos; + +connection server_2; + +sync_with_master; +select * from t1; +save_master_pos; + +connection server_3; + +sync_with_master; +select * from t1; + +connection server_1; +drop table t1; + +--source include/rpl_end.inc + |