diff options
author | Venkatesh Duggirala <venkatesh.duggirala@oracle.com> | 2013-07-27 17:35:02 +0530 |
---|---|---|
committer | Venkatesh Duggirala <venkatesh.duggirala@oracle.com> | 2013-07-27 17:35:02 +0530 |
commit | eb152f86af39303a11a58f1912ff4c0484e1a5ac (patch) | |
tree | 4fdeff2cca9a416bf5f5f52b8f39640773e9084e /mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result | |
parent | b89e6ccfc4b8022ebc42d0493b5b77b66e1231b0 (diff) | |
download | mariadb-git-eb152f86af39303a11a58f1912ff4c0484e1a5ac.tar.gz |
BUG#16290902 DROP TEMP TABLE IF EXISTS CAN CAUSE POINT
IN TIME RECOVERY FAILURE ON SLAVES
Problem:
DROP TEMP TABLE IF EXISTS commands can cause point
in time recovery (re-applying binlog) failures.
Analyses:
In RBR, 'DROP TEMPORARY TABLE' commands are
always binlogged by adding 'IF EXISTS' clauses.
Also, the slave SQL thread will not check replicate.* filter
rules for "DROP TEMPORARY TABLE IF EXISTS" queries.
If log-slave-updates is enabled on slave, these queries
will be binlogged in the format of "USE `db`;
DROP TEMPORARY TABLE IF EXISTS `t1`;" irrespective
of filtering rules and irrespective of the `db` existence.
When users try to recover slave from it's own binlog,
use `db` command might fail if `db` is not present on slave.
Fix:
At the time of writing the 'DROP TEMPORARY TABLE
IF EXISTS' query into the binlog, 'use `db`' will not be
present and the table name in the query will be a fully
qualified table name.
Eg:
'USE `db`; DROP TEMPORARY TABLE IF EXISTS `t1`;'
will be logged as
'DROP TEMPORARY TABLE IF EXISTS `db`.`t1`;'.
Diffstat (limited to 'mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result')
-rw-r--r-- | mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result b/mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result index e33a00ea0a2..529fe90b2f0 100644 --- a/mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result +++ b/mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result @@ -426,7 +426,7 @@ DROP TEMPORARY TABLE IF EXISTS new_tt_xx; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (8) -master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS `new_tt_xx` /* generated by server */ +master-bin.000001 # Query # # DROP TEMPORARY TABLE IF EXISTS `test`.`new_tt_xx` /* generated by server */ master-bin.000001 # Xid # # COMMIT /* XID */ -e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e- |