include/master-slave.inc
Warnings:
Note	####	Sending passwords in plain text without SSL/TLS is extremely insecure.
Note	####	Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information.
[connection master]
CREATE TABLE test.t1 (a INT AUTO_INCREMENT KEY, t CHAR(6)) ENGINE=INNODB;
CREATE TABLE test.t2 (a INT AUTO_INCREMENT KEY, f INT, FOREIGN KEY(a) REFERENCES test.t1(a) ON DELETE CASCADE) ENGINE=INNODB;
create procedure test.p1(IN i CHAR(6))
begin
INSERT INTO test.t1 (t) VALUES (i);
INSERT INTO test.t2 VALUES (NULL,LAST_INSERT_ID());
end|
create procedure test.p2(IN i INT)
begin
DELETE FROM test.t1 where a < i;
end|

< -- test 1 call p1 -- >
------------------------
SET FOREIGN_KEY_CHECKS=1;
call test.p1('texas');
call test.p1('Live');
call test.p1('next');
call test.p1('to');
call test.p1('OK');
call test.p1('MySQL');

< -- test 1 select master after p1 -- >
---------------------------------------
SELECT * FROM test.t1;
a	t
1	texas
2	Live
3	next
4	to
5	OK
6	MySQL
SELECT * FROM test.t2;
a	f
1	1
2	2
3	3
4	4
5	5
6	6

< -- test 1 select slave after p1 -- >
--------------------------------------
include/sync_slave_sql_with_master.inc
SELECT * FROM test.t1;
a	t
1	texas
2	Live
3	next
4	to
5	OK
6	MySQL
SELECT * FROM test.t2;
a	f
1	1
2	2
3	3
4	4
5	5
6	6

< -- test 1 call p2 & select master -- >
----------------------------------------
call test.p2(4);
SELECT * FROM test.t1;
a	t
4	to
5	OK
6	MySQL
SELECT * FROM test.t2;
a	f
4	4
5	5
6	6

< -- test 1 select slave after p2 -- >
--------------------------------------
include/sync_slave_sql_with_master.inc
SELECT * FROM test.t1;
a	t
4	to
5	OK
6	MySQL
SELECT * FROM test.t2;
a	f
4	4
5	5
6	6

< -- End test 1 Begin test 2 -- >
---------------------------------
SET FOREIGN_KEY_CHECKS=0;
DROP PROCEDURE IF EXISTS test.p1;
DROP PROCEDURE IF EXISTS test.p2;
DROP TABLE IF EXISTS test.t1;
DROP TABLE IF EXISTS test.t2;
CREATE TABLE test.t1 (a INT, t CHAR(6), PRIMARY KEY(a)) ENGINE=INNODB;
CREATE TABLE test.t2 (a INT, f INT, FOREIGN KEY(a) REFERENCES test.t1(a) ON UPDATE CASCADE, PRIMARY KEY(a)) ENGINE=INNODB;
CREATE PROCEDURE  test.p1(IN nm INT, IN ch CHAR(6))
BEGIN
INSERT INTO test.t1 (a,t) VALUES (nm, ch);
INSERT INTO test.t2 VALUES (nm, LAST_INSERT_ID());
END|
CREATE PROCEDURE test.p2(IN i INT)
BEGIN
UPDATE test.t1 SET a = i*10 WHERE a = i;
END|
SET FOREIGN_KEY_CHECKS=1;
CALL test.p1(1,'texas');
CALL test.p1(2,'Live');
CALL test.p1(3,'next');
CALL test.p1(4,'to');
CALL test.p1(5,'OK');
CALL test.p1(6,'MySQL');

< -- test 2 select Master after p1 -- >
---------------------------------------
SELECT * FROM test.t1;
a	t
1	texas
2	Live
3	next
4	to
5	OK
6	MySQL
SELECT * FROM test.t2;
a	f
1	6
2	6
3	6
4	6
5	6
6	6

< -- test 2 select Slave after p1 -- >
--------------------------------------
include/sync_slave_sql_with_master.inc
SELECT * FROM test.t1;
a	t
1	texas
2	Live
3	next
4	to
5	OK
6	MySQL
SELECT * FROM test.t2;
a	f
1	6
2	6
3	6
4	6
5	6
6	6

< -- test 2 call p2 & select Master -- >
----------------------------------------
CALL test.p2(2);
CALL test.p2(4);
CALL test.p2(6);
SELECT * FROM test.t1;
a	t
1	texas
3	next
5	OK
20	Live
40	to
60	MySQL
SELECT * FROM test.t2;
a	f
1	6
3	6
5	6
20	6
40	6
60	6

< -- test 1 select Slave after p2 -- >
--------------------------------------
include/sync_slave_sql_with_master.inc
SELECT * FROM test.t1;
a	t
1	texas
3	next
5	OK
20	Live
40	to
60	MySQL
SELECT * FROM test.t2;
a	f
1	6
3	6
5	6
20	6
40	6
60	6

< -- End test 2 Begin test 3 -- >
---------------------------------
CREATE TABLE test.t3 (a INT AUTO_INCREMENT KEY, t CHAR(6))ENGINE=INNODB;
CREATE PROCEDURE test.p3(IN n INT)
begin
CASE n
WHEN 2 THEN
DELETE from test.t3; 
ELSE
INSERT INTO test.t3 VALUES (NULL,'NONE');
END CASE;
end|
SET AUTOCOMMIT=0;
START TRANSACTION;
ROLLBACK;
select * from test.t3;
a	t
include/sync_slave_sql_with_master.inc
select * from test.t3;
a	t
START TRANSACTION;
COMMIT;
select * from test.t3;
a	t
98	NONE
include/sync_slave_sql_with_master.inc
select * from test.t3;
a	t
98	NONE
SET AUTOCOMMIT=1;
SET FOREIGN_KEY_CHECKS=0;
DROP PROCEDURE test.p3;
DROP PROCEDURE test.p1;
DROP PROCEDURE test.p2;
DROP TABLE test.t1;
DROP TABLE test.t2;
DROP TABLE test.t3;
include/rpl_end.inc
