mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	mysql-test/t/rpl000001.test: modified test to break current replicatioin on a large log with a large lag in slave thread between append and read of the relay log mysys/mf_iocache.c: fixed one bug in IO_CACHE but there is another one not fixed yet sql/slave.cc: fixed bug in 3.23 master replication
		
			
				
	
	
		
			113 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
eval_result;
 | 
						|
source include/master-slave.inc;
 | 
						|
connection master;
 | 
						|
use test;
 | 
						|
drop table if exists t1,t3;
 | 
						|
create table t1 (word char(20) not null);
 | 
						|
load data infile '../../std_data/words.dat' into table t1;
 | 
						|
eval load data local infile '$MYSQL_TEST_DIR/std_data/words.dat' into table t1;
 | 
						|
select * from t1;
 | 
						|
set password for root@"localhost" = password('foo');
 | 
						|
set password for root@"localhost" = password('');
 | 
						|
create table t3(n int);
 | 
						|
insert into t3 values(1),(2);
 | 
						|
save_master_pos;
 | 
						|
connection slave;
 | 
						|
sync_with_master;
 | 
						|
use test;
 | 
						|
select * from t3;
 | 
						|
select sum(length(word)) from t1;
 | 
						|
connection master;
 | 
						|
drop table t1,t3;
 | 
						|
save_master_pos;
 | 
						|
connection slave;
 | 
						|
sync_with_master;
 | 
						|
 | 
						|
#test handling of aborted connection in the middle of update
 | 
						|
connection master;
 | 
						|
reset master;
 | 
						|
connection slave;
 | 
						|
slave stop;
 | 
						|
reset slave;
 | 
						|
 | 
						|
connection master;
 | 
						|
drop table if exists t1,t2;
 | 
						|
create table t1(n int);
 | 
						|
#we want the log to exceed 16K to test deal with the log that is bigger than
 | 
						|
#IO_SIZE
 | 
						|
let $1=5000;
 | 
						|
disable_query_log;
 | 
						|
while ($1)
 | 
						|
{
 | 
						|
 eval insert into t1 values($1+get_lock("hold_slave",10)*0);
 | 
						|
 dec $1;
 | 
						|
}
 | 
						|
enable_query_log;
 | 
						|
 | 
						|
#try to cause a large relay log lag on the slave 
 | 
						|
connection slave;
 | 
						|
select get_lock("hold_slave",10);
 | 
						|
slave start;
 | 
						|
#hope this is long enough for I/O thread to fetch over 16K relay log data
 | 
						|
sleep 1;
 | 
						|
select release_lock("hold_slave");
 | 
						|
unlock tables;
 | 
						|
 | 
						|
connection master;
 | 
						|
create table t2(id int);
 | 
						|
insert into t2 values(connection_id());
 | 
						|
save_master_pos;
 | 
						|
 | 
						|
 | 
						|
connection master1;
 | 
						|
#avoid generating result
 | 
						|
create temporary table t1_temp(n int);
 | 
						|
insert into t1_temp select get_lock('crash_lock%20C', 1) from t2;
 | 
						|
 | 
						|
connection master;
 | 
						|
send update t1 set n = n + get_lock('crash_lock%20C', 2);
 | 
						|
connection master1;
 | 
						|
sleep 2;
 | 
						|
select (@id := id) - id from t2;
 | 
						|
kill @id;
 | 
						|
drop table t2;
 | 
						|
connection master;
 | 
						|
--error 1053;
 | 
						|
reap;
 | 
						|
connection slave;
 | 
						|
sync_with_master ;
 | 
						|
#give the slave a chance to exit
 | 
						|
wait_for_slave_to_stop;
 | 
						|
 | 
						|
# The following test can't be done because the result of Pos will differ
 | 
						|
# on different computers
 | 
						|
# --replace_result 9306 9999 3334 9999 3335 9999
 | 
						|
# show slave status;
 | 
						|
 | 
						|
set sql_slave_skip_counter=1;
 | 
						|
slave start;
 | 
						|
select count(*) from t1;
 | 
						|
connection master1;
 | 
						|
drop table t1;
 | 
						|
create table t1 (n int);
 | 
						|
insert into t1 values(3456);
 | 
						|
use mysql;
 | 
						|
insert into user (Host, User, Password)
 | 
						|
 VALUES ("10.10.10.%", "blafasel2", password("blafasel2"));
 | 
						|
select select_priv,user from mysql.user where user = 'blafasel2';
 | 
						|
update user set Select_priv = "Y" where User="blafasel2";
 | 
						|
select select_priv,user from mysql.user where user = 'blafasel2';
 | 
						|
use test;
 | 
						|
save_master_pos;
 | 
						|
connection slave;
 | 
						|
sync_with_master;
 | 
						|
select n from t1;
 | 
						|
select select_priv,user from mysql.user where user = 'blafasel2';
 | 
						|
connection master1;
 | 
						|
drop table t1;
 | 
						|
save_master_pos;
 | 
						|
connection slave;
 | 
						|
sync_with_master;
 | 
						|
 | 
						|
 |