summaryrefslogtreecommitdiff
path: root/mysql-test/t/rpl_mystery22.test
diff options
context:
space:
mode:
authorunknown <sasha@mysql.sashanet.com>2001-07-18 14:26:43 -0600
committerunknown <sasha@mysql.sashanet.com>2001-07-18 14:26:43 -0600
commit76eaa2595f785d2664bc0165cf8431c79ed92659 (patch)
tree8d1f8589119cc419e23bbb513081d4be35e4aa42 /mysql-test/t/rpl_mystery22.test
parent2cbf3b9b532e048dbe3d42669bff539c5864236e (diff)
downloadmariadb-git-76eaa2595f785d2664bc0165cf8431c79ed92659.tar.gz
fixed mysterious offset confusion bug
added a test case for it - took some creative work to figure out how to make it happen at will updated the manual Docs/manual.texi: fixed wrong info on SLAVE_SKIP_COUNTER fixed wrong info in BitKeeper tree build instructions updated change history about bug fix mysql-test/t/rpl_sporadic_master.test: tried hard to get slave confused, but failed. nevertheless, a more exhaustive test case does not hurt sql/slave.cc: fixed mysterious offset confusion bug
Diffstat (limited to 'mysql-test/t/rpl_mystery22.test')
-rw-r--r--mysql-test/t/rpl_mystery22.test43
1 files changed, 43 insertions, 0 deletions
diff --git a/mysql-test/t/rpl_mystery22.test b/mysql-test/t/rpl_mystery22.test
new file mode 100644
index 00000000000..3a48ef84dc1
--- /dev/null
+++ b/mysql-test/t/rpl_mystery22.test
@@ -0,0 +1,43 @@
+# test case to make slave thread get ahead by 22 bytes
+
+source include/master-slave.inc;
+connection master;
+# first, cause a duplicate key problem on the slave
+create table t1(n int auto_increment primary key);
+save_master_pos;
+connection slave;
+sync_with_master;
+insert into t1 values (2);
+connection master;
+insert into t1 values(NULL);
+insert into t1 values(NULL);
+save_master_pos;
+connection slave;
+sleep 1; # there is no way around this sleep - we have to wait until
+# the slave tries to run the query, fails and aborts slave thread
+delete from t1 where n = 2;
+slave start;
+sync_with_master;
+#now the buggy slave would be confused on the offset but it can replicate
+#in order to make it break, we need to stop/start the slave one more time
+slave stop;
+connection master;
+# to be able to really confuse the slave, we need some non-auto-increment
+# events in the log
+create table t2(n int);
+drop table t2;
+insert into t1 values(NULL);
+save_master_pos;
+connection slave;
+slave start;
+#now the truth comes out - if the slave is buggy, it will never sync because
+#the slave thread is not able to read events
+sync_with_master;
+select * from t1;
+#clean up
+connection master;
+drop table t1;
+save_master_pos;
+connection slave;
+sync_with_master;
+