summaryrefslogtreecommitdiff
path: root/mysql-test/t/rpl_rotate_logs.test
diff options
context:
space:
mode:
authorunknown <monty@mashka.mysql.fi>2002-08-23 21:41:27 +0300
committerunknown <monty@mashka.mysql.fi>2002-08-23 21:41:27 +0300
commite089fcce4c67a715f3f2f5eec6a6d1b248a41106 (patch)
tree0beec75f4ab1ec4f2e53f7500bcbfa342f9a1680 /mysql-test/t/rpl_rotate_logs.test
parent3452e9dd951cd7a3e59db61ffd34c082a49152de (diff)
downloadmariadb-git-e089fcce4c67a715f3f2f5eec6a6d1b248a41106.tar.gz
Added testing of temporary tables with replication
mysql-test/t/rpl_rotate_logs-master.opt: Rename: mysql-test/t/rpl000016-master.opt -> mysql-test/t/rpl_rotate_logs-master.opt mysql-test/t/rpl_rotate_logs-slave.sh: Rename: mysql-test/t/rpl000016-slave.sh -> mysql-test/t/rpl_rotate_logs-slave.sh mysql-test/t/rpl_rotate_logs-slave-master-info.opt: Rename: mysql-test/t/rpl000016-slave-master-info.opt -> mysql-test/t/rpl_rotate_logs-slave-master-info.opt BitKeeper/etc/ignore: Added mit-pthreads/include/bits mit-pthreads/include/pthread/machdep.h mit-pthreads/include/pthread/posix.h mit-pthreads/include/sys mit-pthreads/machdep.c mit-pthreads/pg++ mit-pthreads/pgcc sql-bench/innotest1 sql-bench/innotest1a sql-bench/innotest1b sql-bench/innotest2 sql-bench/innotest2a sql-bench/innotest2b to the ignore list mysql-test/r/rpl_rotate_logs.result: Added testing of temporary tables mysql-test/t/rpl000018.test: Commented test mysql-test/t/rpl_rotate_logs.test: Added testing of temporary tables
Diffstat (limited to 'mysql-test/t/rpl_rotate_logs.test')
-rw-r--r--mysql-test/t/rpl_rotate_logs.test141
1 files changed, 141 insertions, 0 deletions
diff --git a/mysql-test/t/rpl_rotate_logs.test b/mysql-test/t/rpl_rotate_logs.test
new file mode 100644
index 00000000000..ab88def5b2d
--- /dev/null
+++ b/mysql-test/t/rpl_rotate_logs.test
@@ -0,0 +1,141 @@
+#
+# Test are run with max_binlog_size=2048 to force automatic rotation of the
+# binary log
+# Tests done:
+# - Check that slaves reports correct failures if master.info has strange
+# modes/information
+# - Automatic binary log rotation
+# - Ensure that temporary tables works over flush logs and binary log
+# changes
+# - Test creating a duplicate key error and recover from it
+#
+connect (master,localhost,root,,test,0,mysql-master.sock);
+connect (slave,localhost,root,,test,0,mysql-slave.sock);
+system cat /dev/null > var/slave-data/master.info;
+system chmod 000 var/slave-data/master.info;
+connection slave;
+!slave start;
+system chmod 600 var/slave-data/master.info;
+!slave start;
+!eval change master to master_host='127.0.0.1',master_port=$MASTER_MYPORT,
+ master_user='root';
+reset slave;
+eval change master to master_host='127.0.0.1',master_port=$MASTER_MYPORT,
+ master_user='root';
+connection master;
+reset master;
+connection slave;
+slave start;
+connection master;
+
+drop table if exists t1, t2, t3, t4;
+
+#
+# Test FLUSH LOGS
+#
+create temporary table temp_table (a char(80) not null);
+insert into temp_table values ("testing temporary tables");
+create table t1 (s text);
+insert into t1 values('Could not break slave'),('Tried hard');
+save_master_pos;
+connection slave;
+sync_with_master;
+--replace_result 9306 9999 3334 9999 3335 9999
+show slave status;
+select * from t1;
+connection master;
+flush logs;
+drop table if exists t2;
+create table t2(m int not null auto_increment primary key);
+insert into t2 values (34),(67),(123);
+flush logs;
+show master logs;
+create table t3 select * from temp_table;
+
+save_master_pos;
+connection slave;
+sync_with_master;
+
+select * from t3;
+connection master;
+drop table temp_table, t3;
+
+#
+# Now lets make some duplicate key mess and see if we can recover from it
+#
+
+# First insert a value on the slave
+connection slave;
+insert into t2 values(1234);
+
+#same value on the master
+connection master;
+save_master_pos;
+set insert_id=1234;
+insert into t2 values(NULL);
+connection slave;
+sync_with_master;
+
+#the slave may have already stopped, so we ignore the error
+!slave stop;
+
+#restart slave skipping one event
+set sql_slave_skip_counter=1;
+slave start;
+
+connection master;
+save_master_pos;
+
+#let slave catch up
+connection slave;
+sync_with_master;
+connection master;
+purge master logs to 'master-bin.003';
+show master logs;
+insert into t2 values (65);
+save_master_pos;
+connection slave;
+sync_with_master;
+--replace_result 9306 9999 3334 9999 3335 9999
+show slave status;
+select * from t2;
+
+#
+# Test forcing the replication log to rotate
+#
+
+connection master;
+create temporary table temp_table (a char(80) not null);
+insert into temp_table values ("testing temporary tables part 2");
+let $1=100;
+drop table if exists t3;
+create table t3 (n int);
+while ($1)
+{
+#eval means expand $ expressions
+ eval insert into t3 values($1 + 4);
+ dec $1;
+}
+create table t4 select * from temp_table;
+show master logs;
+show master status;
+save_master_pos;
+connection slave;
+#slave stop;
+#slave start;
+sync_with_master;
+select * from t4;
+
+--replace_result 9306 9999 3334 9999 3335 9999
+show slave status;
+# because of concurrent insert, the table may not be up to date
+# if we do not lock
+lock tables t3 read;
+select count(*) from t3 where n >= 4;
+unlock tables;
+#clean up
+connection master;
+drop table if exists t1,t2,t3;
+save_master_pos;
+connection slave;
+sync_with_master;