mySQL 5.0.11 sources for tomato
[tomato.git] / release / src / router / mysql / mysql-test / suite / rpl / t / rpl_stm_000001.test
blob9841ecb040aefc71c999e6dbb569bdcd769457e1
1 # Requires binlog_format=statement format since query involving
2 # get_lock() is logged in row format if binlog_format=mixed or row.
3 -- source include/have_binlog_format_statement.inc
4 -- source include/master-slave.inc
6 --let $engine_type= myisam
7 CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
9 # Load some data into t1
10 create table t1 (word char(20) not null);
11 load data infile '../../std_data/words.dat' into table t1;
12 --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
13 eval load data local infile '$MYSQL_TEST_DIR/std_data/words.dat' into table t1;
14 select * from t1 limit 10;
17 # Test slave with wrong password
19 sync_slave_with_master;
20 stop slave;
21 connection master;
22 set password for root@"localhost" = password('foo');
23 connection slave;
24 start slave;
25 connection master;
27 # Give slave time to do at last one failed connect retry
28 # This one must be short so that the slave will not stop retrying
29 real_sleep 2;
30 set password for root@"localhost" = password('');
31 # Give slave time to connect (will retry every second)
32 sleep 2;
34 create table t3(n int);
35 insert into t3 values(1),(2);
36 sync_slave_with_master;
37 select * from t3;
38 select sum(length(word)) from t1;
39 connection master;
40 drop table t1,t3;
41 sync_slave_with_master;
43 # Test if the slave SQL thread can be more than 16K behind the slave
44 # I/O thread (> IO_SIZE)
46 connection master;
47 # we'll use table-level locking to delay slave SQL thread
48 eval create table t1 (n int) engine=$engine_type;
49 sync_slave_with_master;
50 connection master;
51 reset master;
52 connection slave;
53 stop slave;
54 reset slave;
56 connection master;
57 let $1=5000;
58 # Generate 16K of relay log
59 disable_query_log;
60 while ($1)
62  eval insert into t1 values($1);
63  dec $1;
65 enable_query_log;
67 # Try to cause a large relay log lag on the slave by locking t1
68 connection slave;
69 lock tables t1 read;
70 start slave;
71 #hope this is long enough for I/O thread to fetch over 16K relay log data
72 sleep 3;
73 unlock tables;
75 #test handling of aborted connection in the middle of update
77 connection master;
78 create table t2(id int);
79 insert into t2 values(connection_id());
81 connection master1;
82 # Avoid generating result
83 create temporary table t3(n int);
84 --disable_warnings
85 insert into t3 select get_lock('crash_lock%20C', 1) from t2;
86 --enable_warnings
88 connection master;
89 send update t1 set n = n + get_lock('crash_lock%20C', 2);
90 connection master1;
91 sleep 3;
92 select (@id := id) - id from t2;
93 kill @id;
94 # We don't drop t3 as this is a temporary table
95 drop table t2;
96 connection master;
97 # The get_lock function causes warning for unsafe statement.
98 --disable_warnings
99 --error 1317,2013
100 reap;
101 --enable_warnings
102 connection slave;
103 # The SQL slave thread should now have stopped because the query was killed on
104 # the master (so it has a non-zero error code in the binlog).
105 # 1053 = ER_SERVER_SHUTDOWN
106 --let $slave_sql_errno= 1053
107 --source include/wait_for_slave_sql_error_and_skip.inc
109 select count(*) from t1;
110 connection master1;
111 drop table t1;
112 create table t1 (n int);
113 insert into t1 values(3456);
114 insert into mysql.user (Host, User, Password)
115  VALUES ("10.10.10.%", "blafasel2", password("blafasel2"));
116 select select_priv,user from mysql.user where user = _binary'blafasel2';
117 update mysql.user set Select_priv = "Y" where User= _binary"blafasel2";
118 select select_priv,user from mysql.user where user = _binary'blafasel2';
119 sync_slave_with_master;
120 select n from t1;
121 select select_priv,user from mysql.user where user = _binary'blafasel2';
122 connection master1;
123 drop table t1;
124 delete from mysql.user where user="blafasel2";
125 sync_slave_with_master;
127 # End of 4.1 tests
128 --source include/rpl_end.inc