Commit 2e99b0be authored by Alfranio Correia's avatar Alfranio Correia

BUG#51894 Replication failure with SBR on DROP TEMPORARY TABLE inside a

          transaction
BUG#52616 Temp table prevents switch binlog format from STATEMENT to ROW

Post-merge fixes.
parent 9cd21e8c
...@@ -640,9 +640,9 @@ call p_verify_status_increment(2, 0, 1, 0); ...@@ -640,9 +640,9 @@ call p_verify_status_increment(2, 0, 1, 0);
--echo # 25. DDL: DROP TEMPORARY TABLE, does not start a transaction --echo # 25. DDL: DROP TEMPORARY TABLE, does not start a transaction
--echo # --echo #
drop temporary table t2; drop temporary table t2;
call p_verify_status_increment(1, 0, 0, 0); call p_verify_status_increment(1, 0, 1, 0);
commit; commit;
call p_verify_status_increment(1, 0, 0, 0); call p_verify_status_increment(1, 0, 1, 0);
--echo # 26. Verify that SET AUTOCOMMIT issues an implicit commit --echo # 26. Verify that SET AUTOCOMMIT issues an implicit commit
--echo # --echo #
......
...@@ -709,11 +709,11 @@ SUCCESS ...@@ -709,11 +709,11 @@ SUCCESS
# 25. DDL: DROP TEMPORARY TABLE, does not start a transaction # 25. DDL: DROP TEMPORARY TABLE, does not start a transaction
# #
drop temporary table t2; drop temporary table t2;
call p_verify_status_increment(1, 0, 0, 0); call p_verify_status_increment(1, 0, 1, 0);
SUCCESS SUCCESS
commit; commit;
call p_verify_status_increment(1, 0, 0, 0); call p_verify_status_increment(1, 0, 1, 0);
SUCCESS SUCCESS
# 26. Verify that SET AUTOCOMMIT issues an implicit commit # 26. Verify that SET AUTOCOMMIT issues an implicit commit
......
...@@ -78,11 +78,7 @@ CREATE TABLE t1 (b VARCHAR(2)); ...@@ -78,11 +78,7 @@ CREATE TABLE t1 (b VARCHAR(2));
INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statements that read from both transactional (or a temporary table of any engine type) and non-transactional tables and write to any of them are unsafe.
CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statements that read from both transactional (or a temporary table of any engine type) and non-transactional tables and write to any of them are unsafe.
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 AS CREATE TABLE t1 AS
SELECT concat(head, tail) AS code, ' ' AS a SELECT concat(head, tail) AS code, ' ' AS a
......
...@@ -64,8 +64,10 @@ INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); ...@@ -64,8 +64,10 @@ INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
# #
# Populate tables head and tail with values '00'-'FF' # Populate tables head and tail with values '00'-'FF'
# #
--disable_warnings
CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
--enable_warnings
DROP TABLE t1; DROP TABLE t1;
# #
# Populate table t1 with all codes [80..FF][20..FF] # Populate table t1 with all codes [80..FF][20..FF]
......
...@@ -145,7 +145,14 @@ EOF ...@@ -145,7 +145,14 @@ EOF
# must be digestable for both client and server. In 4.1 the client # must be digestable for both client and server. In 4.1 the client
# should use default-character-set same as the server. # should use default-character-set same as the server.
flush logs; flush logs;
--exec $MYSQL_BINLOG --short-form $MYSQLD_DATADIR/master-bin.000004 | $MYSQL # Due to BUG#18337 that wrongly suppresses the BINLOG EVENTS when
# --short-form is used, the "insert into t5 select * from ``"
# which is unsafe and thus written to the binary log in the row
# format is not executed. This makes the assertion select * from t5
# /* must be (1),(1) */; to fail. To temporary fix the bug, we
# removed the option --short-form.
#--exec $MYSQL_BINLOG --short-form $MYSQLD_DATADIR/master-bin.000004 | $MYSQL
--exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000004 | $MYSQL
select * from t5 /* must be (1),(1) */; select * from t5 /* must be (1),(1) */;
drop table t5; drop table t5;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment