rpl_misc_functions.test
来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· TEST 代码 · 共 115 行
TEST
115 行
## Test of replicating some difficult functions#source include/master-slave.inc;create table t1(id int, i int, r1 int, r2 int, p varchar(100));insert into t1 values(1, connection_id(), 0, 0, "");# don't put rand and password in the same query, to see if they replicate# independently# Pure rand testinsert into t1 values(2, 0, rand()*1000, rand()*1000, "");# change the rand suite on the master (we do this because otherwise password()# benefits from the fact that the above rand() is well replicated : # it picks the same sequence element, which hides a possible bug in password() replication.set sql_log_bin=0;insert into t1 values(6, 0, rand(), rand(), "");delete from t1 where id=6;set sql_log_bin=1;# Pure password testinsert into t1 values(3, 0, 0, 0, password('does_this_work?'));# "altogether now"insert into t1 values(4, connection_id(), rand()*1000, rand()*1000, password('does_this_still_work?'));select * into outfile 'rpl_misc_functions.outfile' from t1;sync_slave_with_master;create table t2 like t1; # read the values from the master table--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIReval load data local infile '$MYSQLTEST_VARDIR/master-data/test/rpl_misc_functions.outfile' into table t2;# compare them with the replica; the SELECT below should return no rowselect * from t1, t2 where (t1.id=t2.id) and not(t1.i=t2.i and t1.r1=t2.r1 and t1.r2=t2.r2 and t1.p=t2.p);connection master;drop table t1;# End of 4.1 tests## BUG#25543 test calling rand() multiple times on the master in# a stored procedure.#--disable_warningsDROP TABLE IF EXISTS t1;--enable_warningsCREATE TABLE t1 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, col_a DOUBLE DEFAULT NULL);DELIMITER |;# Use a SP that calls rand() multiple timesCREATE PROCEDURE test_replication_sp1()BEGIN INSERT INTO t1 (col_a) VALUES (rand()), (rand()); INSERT INTO t1 (col_a) VALUES (rand());END|# Use a SP that calls another SP to call rand() multiple timesCREATE PROCEDURE test_replication_sp2()BEGIN CALL test_replication_sp1(); CALL test_replication_sp1();END|# Use a SF that calls rand() multiple timesCREATE FUNCTION test_replication_sf() RETURNS DOUBLE DETERMINISTICBEGIN RETURN (rand() + rand());END|DELIMITER ;|# Exercise the functions and procedures then compare the results on# the master to those on the slave.CALL test_replication_sp1();CALL test_replication_sp2();INSERT INTO t1 (col_a) VALUES (test_replication_sf());INSERT INTO t1 (col_a) VALUES (test_replication_sf());INSERT INTO t1 (col_a) VALUES (test_replication_sf());--sync_slave_with_master# Dump table on slaveselect * from t1 into outfile "../tmp/t1_slave.txt";# Load data from slave into temp table on masterconnection master;create temporary table t1_slave select * from t1 where 1=0;load data infile '../tmp/t1_slave.txt' into table t1_slave;--remove_file $MYSQLTEST_VARDIR/tmp/t1_slave.txt# Compare master and slave temp table, use subtraction# for floating point comparison of "double"select count(*) into @aux from t1 join t1_slave using (id)where ABS(t1.col_a - t1_slave.col_a) < 0.0000001 ;SELECT @aux;if (`SELECT @aux <> 12 OR @aux IS NULL`){ --echo # ERROR: We expected to get count(*) = 12. SELECT id, col_a FROM t1; SELECT id, col_a FROM t1_slave; --echo # abort exit;}# Cleanupconnection master;DROP TABLE t1, t1_slave;DROP PROCEDURE test_replication_sp1;DROP PROCEDURE test_replication_sp2;DROP FUNCTION test_replication_sf;--sync_slave_with_master
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?