summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSerge Kozlov <Serge.Kozlov@sun.com>2010-02-16 22:38:48 +0300
committerSerge Kozlov <Serge.Kozlov@sun.com>2010-02-16 22:38:48 +0300
commit775fd3ec7131b71ab2bc6b4d958a6fe711f767b0 (patch)
tree21c927b797a1d6b77150f974c3a3c7134d291b8b
parent6f80e0697dc84b102ac5f940d6ca711c532d95c1 (diff)
parented76c63c30815f9812eca6ed0ac2266151106cf4 (diff)
downloadmariadb-git-775fd3ec7131b71ab2bc6b4d958a6fe711f767b0.tar.gz
Bug#48308
Merge mysql-trunk-bugfixing -> mysql-next-mr-bugfixing
-rw-r--r--mysql-test/include/cleanup_fake_relay_log.inc4
-rw-r--r--mysql-test/include/setup_fake_relay_log.inc28
-rw-r--r--mysql-test/suite/binlog/t/binlog_auto_increment_bug33029.test74
-rw-r--r--mysql-test/suite/rpl/r/rpl_binlog_auto_inc_bug33029.result (renamed from mysql-test/suite/binlog/r/binlog_auto_increment_bug33029.result)9
-rw-r--r--mysql-test/suite/rpl/t/rpl_binlog_auto_inc_bug33029-master.opt (renamed from mysql-test/suite/binlog/t/binlog_auto_increment_bug33029-master.opt)0
-rw-r--r--mysql-test/suite/rpl/t/rpl_binlog_auto_inc_bug33029.test42
6 files changed, 58 insertions, 99 deletions
diff --git a/mysql-test/include/cleanup_fake_relay_log.inc b/mysql-test/include/cleanup_fake_relay_log.inc
index 43aa46cb657..000c80f3761 100644
--- a/mysql-test/include/cleanup_fake_relay_log.inc
+++ b/mysql-test/include/cleanup_fake_relay_log.inc
@@ -12,5 +12,9 @@
remove_file $_fake_relay_log;
remove_file $_fake_relay_index;
--disable_query_log
+--disable_warnings
+STOP SLAVE SQL_THREAD;
+RESET SLAVE;
eval SET @@global.relay_log_purge= $_fake_relay_log_purge;
+--enable_warnings
--enable_query_log
diff --git a/mysql-test/include/setup_fake_relay_log.inc b/mysql-test/include/setup_fake_relay_log.inc
index 9510a557159..86a5da328af 100644
--- a/mysql-test/include/setup_fake_relay_log.inc
+++ b/mysql-test/include/setup_fake_relay_log.inc
@@ -66,8 +66,16 @@ let $_fake_relay_index= $MYSQLD_DATADIR/$_fake_filename.index;
# CHANGE MASTER modifies it (see the manual for CHANGE MASTER).
let $_fake_relay_log_purge= `SELECT @@global.relay_log_purge`;
+# Reset slave and remove relay log and index files if they exist
+RESET SLAVE;
+error 0,1;
+remove_file $MYSQLD_DATADIR/$_fake_filename.000001;
+error 0,1;
+remove_file $MYSQLD_DATADIR/$_fake_filename.index;
+
# Create relay log file.
copy_file $fake_relay_log $_fake_relay_log;
+
# Create relay log index.
# After patch for BUG#12190, the filename used in CHANGE MASTER
@@ -77,28 +85,12 @@ copy_file $fake_relay_log $_fake_relay_log;
if (`select convert(@@version_compile_os using latin1) IN ("Win32","Win64","Windows") = 0`)
{
- -- let $_index_entry= ./$_fake_filename-fake.000001
+ eval select './$_fake_filename-fake.000001\n' into dumpfile '$_fake_relay_index';
}
if (`select convert(@@version_compile_os using latin1) IN ("Win32","Win64","Windows") != 0`)
{
- -- let $_index_entry= .\\\\$_fake_filename-fake.000001
-}
-
-if (`SELECT LENGTH(@@secure_file_priv) > 0`)
-{
- -- let $_file_priv_dir= `SELECT @@secure_file_priv`;
- -- let $_suffix= `SELECT UUID()`
- -- let $_tmp_file= $_file_priv_dir/fake-index.$_suffix
-
- -- eval select '$_index_entry\n' into dumpfile '$_tmp_file'
- -- copy_file $_tmp_file $_fake_relay_index
- -- remove_file $_tmp_file
-}
-
-if (`SELECT LENGTH(@@secure_file_priv) = 0`)
-{
- -- eval select '$_index_entry\n' into dumpfile '$_fake_relay_index'
+ eval select '.\\\\$_fake_filename-fake.000001\n' into dumpfile '$_fake_relay_index';
}
# Setup replication from existing relay log.
diff --git a/mysql-test/suite/binlog/t/binlog_auto_increment_bug33029.test b/mysql-test/suite/binlog/t/binlog_auto_increment_bug33029.test
deleted file mode 100644
index 19137066429..00000000000
--- a/mysql-test/suite/binlog/t/binlog_auto_increment_bug33029.test
+++ /dev/null
@@ -1,74 +0,0 @@
-# BUG#33029 5.0 to 5.1 replication fails on dup key when inserting
-# using a trig in SP
-
-# For all 5.0 up to 5.0.58 exclusive, and 5.1 up to 5.1.12 exclusive,
-# if one statement in a SP generated AUTO_INCREMENT value by the top
-# statement, all statements after it would be considered generated
-# AUTO_INCREMENT value by the top statement, and a erroneous INSERT_ID
-# value might be associated with these statement, which could cause
-# duplicate entry error and stop the slave.
-
-# Test if the slave can replicate from such a buggy master
-
-# The bug33029-slave-relay-bin.000001 file is the
-# slave-replay-bin.000003 file generated by run the
-# rpl_auto_increment_bug33029.test with clean up statements at the end
-# of the test case removed on a buggy 5.0 server
-
-source include/have_log_bin.inc;
-
-# Need to restore this at the end; CHANGE MASTER modifies it (see the
-# manual for CHANGE MASTER).
-SET @old_relay_log_purge= @@global.relay_log_purge;
-
-let $MYSQLD_DATADIR= `select @@datadir`;
-
-copy_file $MYSQL_TEST_DIR/std_data/bug33029-slave-relay-bin.000001 $MYSQLD_DATADIR/slave-relay-bin.000001;
-
-
-# After patch for BUG#12190, the filename used in CHANGE MASTER
-# RELAY_LOG_FILE will be automatically added the directory of the
-# relay log before comparison, thus we need to added the directory
-# part (./ on unix .\ on windows) when faking the relay-log-bin.index.
-disable_query_log;
-if (`select convert(@@version_compile_os using latin1) IN ("Win32","Win64","Windows") = 0`)
-{
- eval select './slave-relay-bin.000001\n' into dumpfile '$MYSQLD_DATADIR/slave-relay-bin.index';
-}
-
-if (`select convert(@@version_compile_os using latin1) IN ("Win32","Win64","Windows") != 0`)
-{
- eval select '.\\\\slave-relay-bin.000001\n' into dumpfile '$MYSQLD_DATADIR/slave-relay-bin.index';
-}
-enable_query_log;
-
-change master to
- MASTER_HOST='dummy.localdomain',
- RELAY_LOG_FILE='slave-relay-bin.000001',
- RELAY_LOG_POS=4;
-
-start slave sql_thread;
-disable_result_log;
-select MASTER_POS_WAIT('master-bin.000001', 3776);
-enable_result_log;
-
-echo # Result on slave;
-SELECT * FROM t1;
-SELECT * FROM t2;
-
-# clean up
-disable_warnings;
-DROP TABLE IF EXISTS t1, t2;
-DROP PROCEDURE IF EXISTS p1;
-DROP PROCEDURE IF EXISTS p2;
-DROP FUNCTION IF EXISTS f1;
-DROP TRIGGER IF EXISTS tr1;
-enable_warnings;
-
-stop slave sql_thread;
-reset slave;
-source include/wait_for_slave_sql_to_stop.inc;
-remove_file $MYSQLD_DATADIR/slave-relay-bin.000001;
-remove_file $MYSQLD_DATADIR/slave-relay-bin.index;
-
-SET @@global.relay_log_purge= @old_relay_log_purge;
diff --git a/mysql-test/suite/binlog/r/binlog_auto_increment_bug33029.result b/mysql-test/suite/rpl/r/rpl_binlog_auto_inc_bug33029.result
index 8226469fcf7..f0fdd5eaa1f 100644
--- a/mysql-test/suite/binlog/r/binlog_auto_increment_bug33029.result
+++ b/mysql-test/suite/rpl/r/rpl_binlog_auto_inc_bug33029.result
@@ -1,8 +1,4 @@
-SET @old_relay_log_purge= @@global.relay_log_purge;
-change master to
-MASTER_HOST='dummy.localdomain',
-RELAY_LOG_FILE='slave-relay-bin.000001',
-RELAY_LOG_POS=4;
+Setting up fake replication from MYSQL_TEST_DIR/std_data/bug33029-slave-relay-bin.000001
start slave sql_thread;
select MASTER_POS_WAIT('master-bin.000001', 3776);
# Result on slave
@@ -38,5 +34,4 @@ DROP PROCEDURE IF EXISTS p2;
DROP FUNCTION IF EXISTS f1;
DROP TRIGGER IF EXISTS tr1;
stop slave sql_thread;
-reset slave;
-SET @@global.relay_log_purge= @old_relay_log_purge;
+Cleaning up after setup_fake_relay_log.inc
diff --git a/mysql-test/suite/binlog/t/binlog_auto_increment_bug33029-master.opt b/mysql-test/suite/rpl/t/rpl_binlog_auto_inc_bug33029-master.opt
index 74e71a8e558..74e71a8e558 100644
--- a/mysql-test/suite/binlog/t/binlog_auto_increment_bug33029-master.opt
+++ b/mysql-test/suite/rpl/t/rpl_binlog_auto_inc_bug33029-master.opt
diff --git a/mysql-test/suite/rpl/t/rpl_binlog_auto_inc_bug33029.test b/mysql-test/suite/rpl/t/rpl_binlog_auto_inc_bug33029.test
new file mode 100644
index 00000000000..dbdd96347a2
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_binlog_auto_inc_bug33029.test
@@ -0,0 +1,42 @@
+# BUG#33029 5.0 to 5.1 replication fails on dup key when inserting
+# using a trig in SP
+
+# For all 5.0 up to 5.0.58 exclusive, and 5.1 up to 5.1.12 exclusive,
+# if one statement in a SP generated AUTO_INCREMENT value by the top
+# statement, all statements after it would be considered generated
+# AUTO_INCREMENT value by the top statement, and a erroneous INSERT_ID
+# value might be associated with these statement, which could cause
+# duplicate entry error and stop the slave.
+
+# Test if the slave can replicate from such a buggy master
+
+# The bug33029-slave-relay-bin.000001 file is the
+# slave-replay-bin.000003 file generated by run the
+# rpl_auto_increment_bug33029.test with clean up statements at the end
+# of the test case removed on a buggy 5.0 server
+
+source include/have_log_bin.inc;
+
+let $fake_relay_log= $MYSQL_TEST_DIR/std_data/bug33029-slave-relay-bin.000001;
+source include/setup_fake_relay_log.inc;
+
+start slave sql_thread;
+disable_result_log;
+select MASTER_POS_WAIT('master-bin.000001', 3776);
+enable_result_log;
+
+echo # Result on slave;
+SELECT * FROM t1;
+SELECT * FROM t2;
+
+# clean up
+disable_warnings;
+DROP TABLE IF EXISTS t1, t2;
+DROP PROCEDURE IF EXISTS p1;
+DROP PROCEDURE IF EXISTS p2;
+DROP FUNCTION IF EXISTS f1;
+DROP TRIGGER IF EXISTS tr1;
+enable_warnings;
+
+stop slave sql_thread;
+source include/cleanup_fake_relay_log.inc;