mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
240 lines
4 KiB
Text
240 lines
4 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 PROCEDURE IF EXISTS test.p1;
|
||
|
DROP PROCEDURE IF EXISTS test.p2;
|
||
|
DROP PROCEDURE IF EXISTS test.p3;
|
||
|
DROP TABLE IF EXISTS test.t3;
|
||
|
DROP TABLE IF EXISTS test.t1;
|
||
|
DROP TABLE IF EXISTS test.t2;
|
||
|
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 -- >
|
||
|
--------------------------------------
|
||
|
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 -- >
|
||
|
--------------------------------------
|
||
|
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 -- >
|
||
|
--------------------------------------
|
||
|
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 -- >
|
||
|
--------------------------------------
|
||
|
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
|
||
|
select * from test.t3;
|
||
|
a t
|
||
|
START TRANSACTION;
|
||
|
COMMIT;
|
||
|
select * from test.t3;
|
||
|
a t
|
||
|
98 NONE
|
||
|
select * from test.t3;
|
||
|
a t
|
||
|
98 NONE
|
||
|
SET AUTOCOMMIT=1;
|
||
|
SET FOREIGN_KEY_CHECKS=0;
|
||
|
DROP PROCEDURE IF EXISTS test.p3;
|
||
|
DROP PROCEDURE IF EXISTS test.p1;
|
||
|
DROP PROCEDURE IF EXISTS test.p2;
|
||
|
DROP TABLE IF EXISTS test.t1;
|
||
|
DROP TABLE IF EXISTS test.t2;
|
||
|
DROP TABLE IF EXISTS test.t3;
|