Commit 1eb40ce3 authored by unknown's avatar unknown

BUG#45581 Test rpl_row_sp006_InnoDB fails randomly: Unknown database 'mysqltest1'

      
Essentially, Bug#45574 results in this bug. The 'CREATE DATABASE IF NOT EXISTS' statement was not 
binlogged, when the database has existed.
Sometimes, the master and slaves become inconsistent. The "CREATE DATABASE
IF NOT EXISTS mysqltest1" statement is not binlogged
if the db 'mysqltest1' existed before the test case is executed. 
So the db 'mysqltest1' can't be created on slave.
     
Patch of Bug#45574 has resolved this problem. 
But I think it is better to replace 'mysqltest1' by default db 'test'.
parent 421531df
...@@ -9,29 +9,27 @@ ...@@ -9,29 +9,27 @@
############################################################################# #############################################################################
# Begin clean up test section # Begin clean up test section
connection master;
--disable_warnings --disable_warnings
create database if not exists mysqltest1; DROP TABLE IF EXISTS t1;
DROP PROCEDURE IF EXISTS mysqltest1.p1; DROP TABLE IF EXISTS t2;
DROP PROCEDURE IF EXISTS mysqltest1.p2; DROP PROCEDURE IF EXISTS p1;
DROP TABLE IF EXISTS mysqltest1.t2; DROP PROCEDURE IF EXISTS p2;
DROP TABLE IF EXISTS mysqltest1.t1;
--enable_warnings --enable_warnings
# End of cleanup # End of cleanup
# Begin test section 1 # Begin test section 1
eval CREATE TABLE IF NOT EXISTS mysqltest1.t1(name CHAR(16), birth DATE,PRIMARY KEY(name))ENGINE=$engine_type; eval CREATE TABLE IF NOT EXISTS t1(name CHAR(16), birth DATE,PRIMARY KEY(name))ENGINE=$engine_type;
eval CREATE TABLE IF NOT EXISTS mysqltest1.t2(name CHAR(16), age INT ,PRIMARY KEY(name))ENGINE=$engine_type; eval CREATE TABLE IF NOT EXISTS t2(name CHAR(16), age INT ,PRIMARY KEY(name))ENGINE=$engine_type;
delimiter |; delimiter |;
CREATE PROCEDURE mysqltest1.p1() CREATE PROCEDURE p1()
BEGIN BEGIN
DECLARE done INT DEFAULT 0; DECLARE done INT DEFAULT 0;
DECLARE spa CHAR(16); DECLARE spa CHAR(16);
DECLARE spb INT; DECLARE spb INT;
DECLARE cur1 CURSOR FOR SELECT name, DECLARE cur1 CURSOR FOR SELECT name,
(YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(),5)<RIGHT(birth,5)) (YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(),5)<RIGHT(birth,5))
FROM mysqltest1.t1; FROM t1;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1; OPEN cur1;
...@@ -41,7 +39,7 @@ BEGIN ...@@ -41,7 +39,7 @@ BEGIN
FETCH cur1 INTO spa, spb; FETCH cur1 INTO spa, spb;
IF NOT done THEN IF NOT done THEN
START TRANSACTION; START TRANSACTION;
INSERT INTO mysqltest1.t2 VALUES (spa,spb); INSERT INTO t2 VALUES (spa,spb);
COMMIT; COMMIT;
END IF; END IF;
UNTIL done END REPEAT; UNTIL done END REPEAT;
...@@ -49,30 +47,29 @@ BEGIN ...@@ -49,30 +47,29 @@ BEGIN
SET AUTOCOMMIT=1; SET AUTOCOMMIT=1;
CLOSE cur1; CLOSE cur1;
END| END|
CREATE PROCEDURE mysqltest1.p2() CREATE PROCEDURE p2()
BEGIN BEGIN
INSERT INTO mysqltest1.t1 VALUES ('MySQL','1993-02-04'),('ROCKS', '1990-08-27'),('Texas', '1999-03-30'),('kyle','2005-1-1'); INSERT INTO t1 VALUES ('MySQL','1993-02-04'),('ROCKS', '1990-08-27'),('Texas', '1999-03-30'),('kyle','2005-1-1');
END| END|
delimiter ;| delimiter ;|
CALL mysqltest1.p2(); CALL p2();
sync_slave_with_master; sync_slave_with_master;
connection master; connection master;
CALL mysqltest1.p1(); CALL p1();
sync_slave_with_master; sync_slave_with_master;
connection master; connection master;
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info mysqltest1 > $MYSQLTEST_VARDIR/tmp/sp006_master.sql --exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/sp006_master.sql
--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info mysqltest1 > $MYSQLTEST_VARDIR/tmp/sp006_slave.sql --exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/sp006_slave.sql
DROP PROCEDURE IF EXISTS mysqltest1.p1; DROP TABLE t1;
DROP PROCEDURE IF EXISTS mysqltest1.p2; DROP TABLE t2;
DROP TABLE IF EXISTS mysqltest1.t1; DROP PROCEDURE p1;
DROP TABLE IF EXISTS mysqltest1.t2; DROP PROCEDURE p2;
DROP DATABASE mysqltest1;
# Lets compare. Note: If they match test will pass, if they do not match # Lets compare. Note: If they match test will pass, if they do not match
# the test will show that the diff statement failed and not reject file # the test will show that the diff statement failed and not reject file
......
...@@ -4,21 +4,20 @@ reset master; ...@@ -4,21 +4,20 @@ reset master;
reset slave; reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave; start slave;
create database if not exists mysqltest1; DROP TABLE IF EXISTS t1;
DROP PROCEDURE IF EXISTS mysqltest1.p1; DROP TABLE IF EXISTS t2;
DROP PROCEDURE IF EXISTS mysqltest1.p2; DROP PROCEDURE IF EXISTS p1;
DROP TABLE IF EXISTS mysqltest1.t2; DROP PROCEDURE IF EXISTS p2;
DROP TABLE IF EXISTS mysqltest1.t1; CREATE TABLE IF NOT EXISTS t1(name CHAR(16), birth DATE,PRIMARY KEY(name))ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS mysqltest1.t1(name CHAR(16), birth DATE,PRIMARY KEY(name))ENGINE=InnoDB; CREATE TABLE IF NOT EXISTS t2(name CHAR(16), age INT ,PRIMARY KEY(name))ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS mysqltest1.t2(name CHAR(16), age INT ,PRIMARY KEY(name))ENGINE=InnoDB; CREATE PROCEDURE p1()
CREATE PROCEDURE mysqltest1.p1()
BEGIN BEGIN
DECLARE done INT DEFAULT 0; DECLARE done INT DEFAULT 0;
DECLARE spa CHAR(16); DECLARE spa CHAR(16);
DECLARE spb INT; DECLARE spb INT;
DECLARE cur1 CURSOR FOR SELECT name, DECLARE cur1 CURSOR FOR SELECT name,
(YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(),5)<RIGHT(birth,5)) (YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(),5)<RIGHT(birth,5))
FROM mysqltest1.t1; FROM t1;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1; OPEN cur1;
SET AUTOCOMMIT=0; SET AUTOCOMMIT=0;
...@@ -26,21 +25,20 @@ REPEAT ...@@ -26,21 +25,20 @@ REPEAT
FETCH cur1 INTO spa, spb; FETCH cur1 INTO spa, spb;
IF NOT done THEN IF NOT done THEN
START TRANSACTION; START TRANSACTION;
INSERT INTO mysqltest1.t2 VALUES (spa,spb); INSERT INTO t2 VALUES (spa,spb);
COMMIT; COMMIT;
END IF; END IF;
UNTIL done END REPEAT; UNTIL done END REPEAT;
SET AUTOCOMMIT=1; SET AUTOCOMMIT=1;
CLOSE cur1; CLOSE cur1;
END| END|
CREATE PROCEDURE mysqltest1.p2() CREATE PROCEDURE p2()
BEGIN BEGIN
INSERT INTO mysqltest1.t1 VALUES ('MySQL','1993-02-04'),('ROCKS', '1990-08-27'),('Texas', '1999-03-30'),('kyle','2005-1-1'); INSERT INTO t1 VALUES ('MySQL','1993-02-04'),('ROCKS', '1990-08-27'),('Texas', '1999-03-30'),('kyle','2005-1-1');
END| END|
CALL mysqltest1.p2(); CALL p2();
CALL mysqltest1.p1(); CALL p1();
DROP PROCEDURE IF EXISTS mysqltest1.p1; DROP TABLE t1;
DROP PROCEDURE IF EXISTS mysqltest1.p2; DROP TABLE t2;
DROP TABLE IF EXISTS mysqltest1.t1; DROP PROCEDURE p1;
DROP TABLE IF EXISTS mysqltest1.t2; DROP PROCEDURE p2;
DROP DATABASE mysqltest1;
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