summaryrefslogtreecommitdiffstats
path: root/mysql-test/include/relocate_binlogs.inc
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/include/relocate_binlogs.inc')
-rw-r--r--mysql-test/include/relocate_binlogs.inc137
1 files changed, 137 insertions, 0 deletions
diff --git a/mysql-test/include/relocate_binlogs.inc b/mysql-test/include/relocate_binlogs.inc
new file mode 100644
index 00000000..593ea0e9
--- /dev/null
+++ b/mysql-test/include/relocate_binlogs.inc
@@ -0,0 +1,137 @@
+# ==== Purpose ====
+#
+# Relocates the relay logs and index file from
+# a directory into another. The logs relocated
+# are the one listed in the index file.
+#
+# ==== Usage ====
+#
+# [--let $relocate_disable_query_log= 1]
+# [--let $rpl_debug= 1]
+# [--let $relocate_is_windows= 0]
+# [--let $relocate_recreate_index= 0]
+# [--let $relocate_fix_relay_log_info= 0]
+# --let $relocate_from= DIR
+# --let $relocate_to= DIR
+# --let $relocate_index_file= FNAME
+# --source include/relocate_binlogs.inc
+
+if ($relocate_disable_query_log)
+{
+ --disable_query_log
+}
+
+--let $_path_separator=/
+if ($relocate_is_windows)
+{
+ --let $_path_separator=\
+}
+
+if ($relocate_index_file)
+{
+ SET SQL_LOG_BIN=0;
+ CREATE TEMPORARY TABLE tmp(id INT AUTO_INCREMENT PRIMARY KEY, filename VARCHAR(1024));
+
+ --let $write_var=
+ --let $_index_file= $relocate_index_file
+ --let $_index_file_basename= `SELECT RIGHT(RTRIM("$_index_file"), LOCATE("$_path_separator",REVERSE(RTRIM("$_index_file"))) -1)`
+ --let $_from= $relocate_from
+ --let $_to= $relocate_into
+
+ # chmod to allow the following LOAD DATA
+ --chmod 0666 $_index_file
+
+ --eval LOAD DATA INFILE '$_index_file' INTO TABLE tmp (filename)
+ --let $count= `SELECT count(*) FROM tmp`
+
+ while ($count)
+ {
+ --let $_filename= `select filename from tmp where id=$count`
+
+ --let $_filename= `SELECT RIGHT(RTRIM("$_filename"), LOCATE("$_path_separator",REVERSE(RTRIM("$_filename"))) -1)`
+ --move_file $_from/$_filename $_to/$_filename
+
+ if ($relocate_recreate_index)
+ {
+
+ if ($relocate_is_windows)
+ {
+ --let $_write_var=$_to\$_filename\n
+ }
+ if (!$relocate_is_windows)
+ {
+ --let $_write_var=$_to/$_filename\n
+ }
+ if (!$write_var)
+ {
+ --let $write_var=$_write_var
+ }
+
+ if (!`SELECT STRCMP('$write_var', '$_write_var') = 0`)
+ {
+ --let $write_var=$_write_var$write_var
+ }
+ }
+
+ --dec $count
+ }
+
+ if (!$relocate_recreate_index)
+ {
+ --move_file $_index_file $_to/$_index_file_basename
+ }
+
+ if ($relocate_recreate_index)
+ {
+ --let $write_to_file= $_to/$_index_file_basename
+ --source include/write_var_to_file.inc
+ --remove_file $_index_file
+ }
+
+ DROP TEMPORARY TABLE tmp;
+
+ if ($relocate_fix_relay_log_info)
+ {
+ CREATE TEMPORARY TABLE tmp(id INT AUTO_INCREMENT PRIMARY KEY, entry VARCHAR(1024));
+ --let $write_var=
+
+ # chmod to allow the following LOAD DATA
+ --chmod 0666 $relocate_fix_relay_log_info
+
+ --eval LOAD DATA INFILE '$relocate_fix_relay_log_info' INTO TABLE tmp (entry)
+ --let $count= `SELECT count(*) FROM tmp`
+
+ --let $_curr_entry= `SELECT entry FROM tmp WHERE id=2`
+ --let $_curr_entry_basename= `SELECT RIGHT(RTRIM("$_curr_entry"), LOCATE("$_path_separator",REVERSE(RTRIM("$_curr_entry"))) -1)`
+
+ if ($relocate_is_windows)
+ {
+ --eval UPDATE tmp SET entry='$_to\$_curr_entry_basename' WHERE id=2
+ }
+ if (!$relocate_is_windows)
+ {
+ --eval UPDATE tmp SET entry='$_to/$_curr_entry_basename' WHERE id=2
+ }
+
+ --remove_file $relocate_fix_relay_log_info
+
+ while($count)
+ {
+ --let $_write_var= `SELECT entry FROM tmp WHERE id= $count`
+ --let $write_var=$_write_var\n$write_var
+ --dec $count
+ }
+
+ --let $write_to_file= $relocate_fix_relay_log_info
+ --source include/write_var_to_file.inc
+
+ DROP TEMPORARY TABLE tmp;
+ }
+ SET SQL_LOG_BIN=1;
+}
+
+
+if ($relocate_disable_query_log)
+{
+ --enable_query_log
+}