mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-04 12:56:14 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			82 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
include/master-slave.inc
 | 
						|
[connection master]
 | 
						|
connection master;
 | 
						|
DROP PROCEDURE IF EXISTS test.p1;
 | 
						|
DROP TABLE IF EXISTS test.t1;
 | 
						|
DROP TABLE IF EXISTS test.t2;
 | 
						|
CREATE TABLE test.t1 (a INT, PRIMARY KEY(a));
 | 
						|
INSERT INTO test.t1 VALUES (1),(2),(3),(4);
 | 
						|
CREATE TABLE test.t2 (a INT, PRIMARY KEY(a));
 | 
						|
CREATE PROCEDURE test.p1 (arg1 CHAR(1))
 | 
						|
BEGIN
 | 
						|
DECLARE b, c INT;
 | 
						|
IF arg1 = 'a' THEN
 | 
						|
BEGIN
 | 
						|
DECLARE cur1 CURSOR FOR SELECT A FROM test.t1 WHERE a % 2;
 | 
						|
DECLARE continue handler for not found set b = 1;
 | 
						|
SET b = 0;
 | 
						|
OPEN cur1;
 | 
						|
c1_repeat: REPEAT
 | 
						|
FETCH cur1 INTO c;
 | 
						|
IF (b = 1) THEN
 | 
						|
LEAVE c1_repeat;
 | 
						|
END IF;
 | 
						|
INSERT INTO test.t2 VALUES (c);
 | 
						|
UNTIL b = 1
 | 
						|
END REPEAT;
 | 
						|
CLOSE cur1;
 | 
						|
END;
 | 
						|
END IF;
 | 
						|
IF arg1 = 'b' THEN
 | 
						|
BEGIN
 | 
						|
DECLARE cur2 CURSOR FOR SELECT a FROM test.t1 WHERE NOT a % 2;
 | 
						|
DECLARE continue handler for not found set b = 1;
 | 
						|
SET b = 0;
 | 
						|
OPEN cur2;
 | 
						|
c2_repeat: REPEAT
 | 
						|
FETCH cur2 INTO c;
 | 
						|
IF (b = 1) THEN
 | 
						|
LEAVE c2_repeat;
 | 
						|
END IF;
 | 
						|
INSERT INTO test.t2 VALUES (c);
 | 
						|
UNTIL b = 1
 | 
						|
END REPEAT;
 | 
						|
CLOSE cur2;
 | 
						|
END;
 | 
						|
END IF;
 | 
						|
END|
 | 
						|
CALL test.p1('a');
 | 
						|
SELECT * FROM test.t2 ORDER BY a;
 | 
						|
a
 | 
						|
1
 | 
						|
3
 | 
						|
connection slave;
 | 
						|
SELECT * FROM test.t2 ORDER BY a;
 | 
						|
a
 | 
						|
1
 | 
						|
3
 | 
						|
connection master;
 | 
						|
truncate test.t2;
 | 
						|
call test.p1('b');
 | 
						|
select * from test.t2 ORDER BY a;
 | 
						|
a
 | 
						|
2
 | 
						|
4
 | 
						|
connection slave;
 | 
						|
SELECT * FROM test.t2 ORDER BY a;
 | 
						|
a
 | 
						|
2
 | 
						|
4
 | 
						|
connection master;
 | 
						|
truncate test.t2;
 | 
						|
SELECT * FROM test.t2 ORDER BY a;
 | 
						|
a
 | 
						|
connection slave;
 | 
						|
SELECT * FROM test.t2 ORDER BY a;
 | 
						|
a
 | 
						|
connection master;
 | 
						|
DROP PROCEDURE test.p1;
 | 
						|
DROP TABLE test.t1;
 | 
						|
DROP TABLE test.t2;
 | 
						|
connection slave;
 | 
						|
include/rpl_end.inc
 |