1# Test of mysqlhotcopy (perl script)
2# Author: Horst Hunger
3# Created: 2010-05-10
4
5--source include/not_windows.inc
6--source include/not_embedded.inc
7--source include/have_dbi_dbd-mysql.inc
8
9if (!$MYSQLHOTCOPY)
10{
11  # Fail the test if the mysqlhotcopy script is missing.
12  # If the tool's location changes, mysql-test-run.pl must be updated to
13  # reflect this (look for "MYSQLHOTCOPY").
14  die due to missing mysqlhotcopy tool;
15}
16
17# NOTE (johnemb, 2011-01-26):
18#       In this test mysqlhotcopy (a perl script) is executed as a standalone
19#       executable, i.e. not necessarily using the perl interpreter in PATH,
20#       because that is how the documentation demonstrates it.
21#
22#       We include have_dbi_dbd-mysql.inc above so that the test will
23#       be skipped if Perl modules required by the mysqlhotcopy tool are not
24#       found when the script is run this way.
25
26
27let $MYSQLD_DATADIR= `SELECT @@datadir`;
28--disable_warnings
29DROP DATABASE IF EXISTS hotcopy_test;
30--enable_warnings
31CREATE DATABASE hotcopy_test;
32USE hotcopy_test;
33eval CREATE TABLE t1 (c1 int, c2 varchar(20)) ENGINE=$engine;
34eval CREATE TABLE t2 (c1 int, c2 varchar(20)) ENGINE=$engine;
35eval CREATE TABLE t3 (c1 int, c2 varchar(20)) ENGINE=$engine;
36
37INSERT INTO t1 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb');
38INSERT INTO t2 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb');
39INSERT INTO t3 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb');
40
41--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
42--list_files $MYSQLD_DATADIR/hotcopy_test
43
44# backup into another database in the same directory
45--replace_result $MASTER_MYSOCK MASTER_MYSOCK
46--exec $MYSQLHOTCOPY --quiet -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save
47
48--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
49--list_files $MYSQLD_DATADIR/hotcopy_save
50
51USE hotcopy_save;
52SELECT * FROM t1;
53SELECT * FROM t2;
54SELECT * FROM t3;
55
56# restore data into the original database with mysqlhotcopy
57if(`SELECT engine= 'MyISAM' FROM information_schema.tables WHERE table_name='t1'`)
58{
59USE hotcopy_test;
60DELETE FROM t1;
61SELECT * FROM t1;
62
63--replace_result $MASTER_MYSOCK MASTER_MYSOCK
64--exec $MYSQLHOTCOPY --quiet --addtodest -S $MASTER_MYSOCK -u root hotcopy_save hotcopy_test
65
66USE hotcopy_save;
67SELECT * FROM t1;
68SELECT * FROM t2;
69SELECT * FROM t3;
70}
71
72USE hotcopy_test;
73DROP TABLE t2;
74--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
75--list_files $MYSQLD_DATADIR/hotcopy_test
76
77--replace_result $MASTER_MYSOCK MASTER_MYSOCK
78--exec $MYSQLHOTCOPY --quiet --addtodest -S $MASTER_MYSOCK -u root hotcopy_save hotcopy_test
79
80FLUSH TABLES;
81SELECT * FROM t1;
82SELECT * FROM t2;
83SELECT * FROM t3;
84
85# backup of db into a directory
86USE hotcopy_test;
87--replace_result $MASTER_MYSOCK MASTER_MYSOCK $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
88--exec $MYSQLHOTCOPY --quiet -S $MASTER_MYSOCK -u root hotcopy_test $MYSQLTEST_VARDIR/tmp
89--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
90--list_files $MYSQLTEST_VARDIR/tmp/hotcopy_test
91#--exec rm -rf $MYSQLTEST_VARDIR/tmp/hotcopy_test
92--disable_warnings
93--remove_files_wildcard $MYSQLTEST_VARDIR/tmp/hotcopy_test *
94--enable_warnings
95--rmdir $MYSQLTEST_VARDIR/tmp/hotcopy_test
96
97# backup without full index files
98# reproduction of bug#53556, "--list_files" shows MYI files, which is wrong.
99DROP DATABASE hotcopy_save;
100--replace_result $MASTER_MYSOCK MASTER_MYSOCK
101--exec $MYSQLHOTCOPY --quiet --noindices -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save
102--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
103--list_files $MYSQLD_DATADIR/hotcopy_save
104
105# test of option "allowold"
106DROP DATABASE hotcopy_save;
107--replace_result $MASTER_MYSOCK MASTER_MYSOCK
108--exec $MYSQLHOTCOPY --quiet -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save
109--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
110--list_files $MYSQLD_DATADIR/hotcopy_save
111--replace_result $MASTER_MYSOCK MASTER_MYSOCK
112--error 1,9,11,110,2304,255
113--exec $MYSQLHOTCOPY --quiet -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save
114--replace_result $MASTER_MYSOCK MASTER_MYSOCK
115--exec $MYSQLHOTCOPY --quiet --allowold -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save
116--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
117--list_files $MYSQLD_DATADIR/hotcopy_save
118
119# test of option "keepold"
120--replace_result $MASTER_MYSOCK MASTER_MYSOCK
121--exec $MYSQLHOTCOPY --quiet --keepold -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save
122--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
123--list_files $MYSQLD_DATADIR/hotcopy_save_old
124--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
125--list_files $MYSQLD_DATADIR/hotcopy_save
126
127# test of option "suffix"
128--replace_result $MASTER_MYSOCK MASTER_MYSOCK
129--exec $MYSQLHOTCOPY --quiet --suffix=_cpy -S $MASTER_MYSOCK -u root hotcopy_test
130--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
131--list_files $MYSQLD_DATADIR/hotcopy_test_cpy
132DROP DATABASE hotcopy_test_cpy;
133
134DROP DATABASE hotcopy_test;
135DROP DATABASE hotcopy_save;
136DROP DATABASE hotcopy_save_old;
137
138