mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
1eb40ce319
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'.
44 lines
1.1 KiB
Text
44 lines
1.1 KiB
Text
stop slave;
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
reset master;
|
|
reset slave;
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
start slave;
|
|
DROP TABLE IF EXISTS t1;
|
|
DROP TABLE IF EXISTS t2;
|
|
DROP PROCEDURE IF EXISTS p1;
|
|
DROP PROCEDURE IF EXISTS p2;
|
|
CREATE TABLE IF NOT EXISTS 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 PROCEDURE p1()
|
|
BEGIN
|
|
DECLARE done INT DEFAULT 0;
|
|
DECLARE spa CHAR(16);
|
|
DECLARE spb INT;
|
|
DECLARE cur1 CURSOR FOR SELECT name,
|
|
(YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(),5)<RIGHT(birth,5))
|
|
FROM t1;
|
|
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
|
|
OPEN cur1;
|
|
SET AUTOCOMMIT=0;
|
|
REPEAT
|
|
FETCH cur1 INTO spa, spb;
|
|
IF NOT done THEN
|
|
START TRANSACTION;
|
|
INSERT INTO t2 VALUES (spa,spb);
|
|
COMMIT;
|
|
END IF;
|
|
UNTIL done END REPEAT;
|
|
SET AUTOCOMMIT=1;
|
|
CLOSE cur1;
|
|
END|
|
|
CREATE PROCEDURE p2()
|
|
BEGIN
|
|
INSERT INTO t1 VALUES ('MySQL','1993-02-04'),('ROCKS', '1990-08-27'),('Texas', '1999-03-30'),('kyle','2005-1-1');
|
|
END|
|
|
CALL p2();
|
|
CALL p1();
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
DROP PROCEDURE p1;
|
|
DROP PROCEDURE p2;
|