mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
ad126d90e0
This includes both code and test cases.
90 lines
3 KiB
Text
90 lines
3 KiB
Text
#############################################################################
|
|
# Original Author: JBM #
|
|
# Original Date: Aug/15/2005 #
|
|
# Updated: 08/29/2005 to remove sleeps #
|
|
#############################################################################
|
|
# Test: This test uses two SPs, one to populate a table, and another to use #
|
|
# Cursors, CURRENT_DATE(), loop control, date math and logic control #
|
|
# to populate a table with data from the first table. #
|
|
#############################################################################
|
|
|
|
# Includes
|
|
-- source include/have_binlog_format_row.inc
|
|
-- source include/master-slave.inc
|
|
|
|
# Begin clean up test section
|
|
connection master;
|
|
--disable_warnings
|
|
create database if not exists mysqltest1;
|
|
DROP PROCEDURE IF EXISTS mysqltest1.p1;
|
|
DROP PROCEDURE IF EXISTS mysqltest1.p2;
|
|
DROP TABLE IF EXISTS mysqltest1.t2;
|
|
DROP TABLE IF EXISTS mysqltest1.t1;
|
|
--enable_warnings
|
|
# End of cleanup
|
|
|
|
# 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 mysqltest1.t2(name CHAR(16), age INT ,PRIMARY KEY(name))ENGINE=$engine_type;
|
|
|
|
delimiter |;
|
|
CREATE PROCEDURE mysqltest1.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 mysqltest1.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 mysqltest1.t2 VALUES (spa,spb);
|
|
COMMIT;
|
|
END IF;
|
|
UNTIL done END REPEAT;
|
|
|
|
SET AUTOCOMMIT=1;
|
|
CLOSE cur1;
|
|
END|
|
|
CREATE PROCEDURE mysqltest1.p2()
|
|
BEGIN
|
|
INSERT INTO mysqltest1.t1 VALUES ('MySQL','1993-02-04'),('ROCKS', '1990-08-27'),('Texas', '1999-03-30'),('kyle','2005-1-1');
|
|
END|
|
|
delimiter ;|
|
|
|
|
CALL mysqltest1.p2();
|
|
sync_slave_with_master;
|
|
|
|
connection master;
|
|
CALL mysqltest1.p1();
|
|
sync_slave_with_master;
|
|
|
|
connection master;
|
|
|
|
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info mysqltest1 > ./var/tmp/sp006_master.sql
|
|
--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info mysqltest1 > ./var/tmp/sp006_slave.sql
|
|
|
|
|
|
DROP PROCEDURE IF EXISTS mysqltest1.p1;
|
|
DROP PROCEDURE IF EXISTS mysqltest1.p2;
|
|
DROP TABLE IF EXISTS mysqltest1.t1;
|
|
DROP TABLE IF EXISTS mysqltest1.t2;
|
|
|
|
# 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
|
|
# will be created. You will need to go to the mysql-test dir and diff
|
|
# the files your self to see what is not matching :-) Failed test
|
|
# Dump files will be located in mysql-test/var/tmp.
|
|
|
|
exec diff ./var/tmp/sp006_master.sql ./var/tmp/sp006_slave.sql;
|
|
|
|
sync_slave_with_master;
|
|
|
|
# End of 5.1 test case
|