1--source include/have_log_bin.inc 2# 3# WL #36: http://askmonty.org/worklog/Server-Sprint/?tid=36 4# This is basic test for --rewrite-db option. 5# mysqlbinlog --rewrite-db="from->to" should rewrite database name 6# 7 8--disable_query_log 9 10# Because RBR event DB rewrite requires shifting of 11# Table_map_log_event contents around if the DB name length 12# changes, this case is tested for both shorter and longer 13# names. 14 15--let DB1=a 16--let DB2=bbbbbbbbbbbbbbbbbbbb 17--let DB3=cccccccccccccccc 18--let DB4=d 19 20eval CREATE DATABASE $DB1; eval USE $DB1; CREATE TABLE t1(f INT); 21eval CREATE DATABASE $DB2; eval USE $DB2; CREATE TABLE t1(f INT); 22eval CREATE DATABASE $DB3; eval USE $DB3; CREATE TABLE t1(f INT); 23eval CREATE DATABASE $DB4; eval USE $DB4; CREATE TABLE t1(f INT); 24 25RESET MASTER; 26--let MYSQLD_DATA_DIR=`select @@datadir` 27--let LOAD_DATA_FILE=$MYSQLD_DATA_DIR/table.values 28--let BIN_LOG_FILE_NAME=query_get_value(show master status, File, 1) 29--let BIN_LOG_START_POSITION=query_get_value(show master status, Position, 1) 30eval USE $DB1; INSERT INTO t1 VALUES(0); INSERT INTO t1 VALUES(0); 31eval USE $DB2; INSERT INTO t1 VALUES(1); INSERT INTO t1 VALUES(1); 32write_file $LOAD_DATA_FILE; 332 342 35EOF 36eval USE $DB3; 37--eval LOAD DATA INFILE "$LOAD_DATA_FILE" INTO TABLE t1 38--let BIN_LOG_STOP_POSITION=query_get_value(show master status, Position, 1) 39FLUSH LOGS; 40 41--let BIN_LOG_FULL_PATH=`SELECT CONCAT("$MYSQLD_DATA_DIR", "$BIN_LOG_FILE_NAME")` 42 43--let i=10 44 45while ($i) 46{ 47# Test for different combinations of syntax and db name filtering and rewriting 48--let REWRITE=`SELECT CASE $i WHEN 10 THEN '' WHEN 9 THEN '--rewrite-db="$DB1->$DB2" --rewrite-db="$DB3->$DB4" --database="$DB4"' WHEN 8 THEN '--rewrite-db="$DB1->$DB2" --rewrite-db="$DB3->$DB4" --database="$DB3"' WHEN 7 THEN '--rewrite-db="$DB1->$DB2" --rewrite-db="$DB3->$DB4" --database="$DB2"' WHEN 6 THEN '--rewrite-db="$DB1->$DB2" --rewrite-db="$DB3->$DB4" --database="$DB1"' WHEN 5 THEN '--rewrite-db="$DB1->$DB2" --rewrite-db="$DB3->$DB4"' WHEN 4 THEN '--rewrite-db=" $DB1 -> $DB2 , $DB3 -> $DB4 "' WHEN 3 THEN '--rewrite-db="$DB1->$DB2,$DB3->$DB4"' WHEN 2 THEN '--rewrite-db="$DB1->$DB4"' WHEN 1 THEN '--rewrite-db="$DB1->$DB2"' END` 49 50eval USE $DB1; DELETE FROM t1; 51eval USE $DB2; DELETE FROM t1; 52eval USE $DB3; DELETE FROM t1; 53eval USE $DB4; DELETE FROM t1; 54 55--echo # 56--echo # Apply log with '$REWRITE' 57--echo # 58 59--exec $MYSQL_BINLOG $REWRITE --start-position=$BIN_LOG_START_POSITION --stop-position=$BIN_LOG_STOP_POSITION $BIN_LOG_FULL_PATH | $MYSQL --local-infile=1 60 61--echo # use $DB1 62eval USE $DB1; SELECT * FROM t1 ORDER BY f; 63--echo # use $DB2 64eval USE $DB2; SELECT * FROM t1 ORDER BY f; 65--echo # use $DB3 66eval USE $DB3; SELECT * FROM t1 ORDER BY f; 67--echo # use $DB4 68eval USE $DB4; SELECT * FROM t1 ORDER BY f; 69 70dec $i; 71} 72 73eval USE $DB1; DROP TABLE t1; eval DROP DATABASE $DB1; 74eval USE $DB2; DROP TABLE t1; eval DROP DATABASE $DB2; 75eval USE $DB3; DROP TABLE t1; eval DROP DATABASE $DB3; 76eval USE $DB4; DROP TABLE t1; eval DROP DATABASE $DB4; 77 78--remove_file $LOAD_DATA_FILE 79 80--enable_query_log 81