# Store the time of password_last_changed column from mysql.user table # to restore it back later for the different users. let $date_to_restore_root=`SELECT password_last_changed from mysql.user where user='root'`; let $date_to_restore_sys=`SELECT password_last_changed from mysql.user where user='mysql.sys'`; let $date_to_restore_session_user=`SELECT password_last_changed from mysql.user where user='mysql.session'`; let $date_to_restore_infoschema_user=`SELECT password_last_changed from mysql.user where user='mysql.infoschema'`; let $LOAD_FILE= $MYSQLTEST_VARDIR/std_data/words.dat; CREATE TABLE t1 (word CHAR(20) NOT NULL); --replace_result $LOAD_FILE LOAD_FILE eval LOAD DATA INFILE '$LOAD_FILE' INTO TABLE t1; --replace_result $LOAD_FILE LOAD_FILE eval LOAD DATA INFILE '$LOAD_FILE' INTO TABLE t1; SELECT * FROM t1 ORDER BY word LIMIT 10; # # Test slave with wrong password # save_master_pos; connection slave; sync_with_master; STOP SLAVE; connection master; SET PASSWORD FOR root@"localhost" = 'foo'; connection slave; START SLAVE; connection master; # # Give slave time to do at last one failed connect retry # This one must be short so that the slave will not stop retrying real_sleep 2; SET PASSWORD FOR root@"localhost" = ''; # Give slave time to connect (will retry every second) sleep 2; CREATE TABLE t3(n INT); INSERT INTO t3 VALUES(1),(2); sync_slave_with_master; SELECT * FROM t3 ORDER BY n; SELECT SUM(LENGTH(word)) FROM t1; connection master; DROP TABLE t1,t3; save_master_pos; connection slave; sync_with_master; # Test if the slave SQL thread can be more than 16K behind the slave # I/O thread (> IO_SIZE) connection master; # we'll use table-level locking to delay slave SQL thread eval CREATE TABLE t1 (n INT) ENGINE=$engine_type; sync_slave_with_master; connection master; RESET MASTER; connection slave; --let $wait_condition=SELECT COUNT(*)=0 from t1 --source include/wait_condition_or_abort.inc --source include/stop_slave.inc RESET SLAVE; connection master; let $1=5000; # Generate 16K of relay log disable_query_log; while ($1) { eval INSERT INTO t1 VALUES($1); dec $1; } enable_query_log; SELECT COUNT(*) FROM t1; # When running this test with MySQL Cluster replication, the # binlog is written asynchronosly via NDB and the master pos # should not be saved until all the committed inserts have # been written to the binlog of this MySQL Server --source include/wait_for_ndb_committed_to_binlog.inc --source include/save_master_pos.inc # Try to cause a large relay log lag on the slave by locking t1 connection slave; RESET MASTER; LOCK TABLES t1 READ; --source include/start_slave.inc --source include/sync_slave_io.inc UNLOCK TABLES; --let $wait_condition= SELECT count(*) = 0 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE State = 'Waiting for table metadata lock' --source include/wait_condition.inc # In valgrind sync a large workload might take long when MTS is enabled --let $slave_timeout= 1200 --source include/sync_slave_sql_with_io.inc SELECT COUNT(*) FROM t1; connection master; DROP TABLE t1; CREATE TABLE t1 (n INT); INSERT INTO t1 VALUES(3456); --source include/sync_slave_sql_with_master.inc SELECT n FROM t1; connection master; DROP TABLE t1; --disable_query_log --eval UPDATE mysql.user SET password_last_changed= '$date_to_restore_root' --eval UPDATE mysql.user SET password_last_changed= '$date_to_restore_sys' WHERE USER= 'mysql.sys' --eval UPDATE mysql.user SET password_last_changed= '$date_to_restore_session_user' WHERE USER= 'mysql.session' --eval UPDATE mysql.user SET password_last_changed= '$date_to_restore_infoschema_user' WHERE USER= 'mysql.infoschema' --enable_query_log --echo # mysql.user table restored to original values. --source include/sync_slave_sql_with_master.inc