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