# # Test special characters in database and table names. # --source include/not_embedded.inc --source include/have_innodb.inc --source suite/meb/include/have_meb.inc --echo # --echo # The 'innodb_file_per_table' variable should show "ON" --echo # SHOW VARIABLES LIKE 'innodb_file_per_table'; --echo --let $BACKUP_LOG = $MYSQLTEST_VARDIR/tmp/backup.log --let $REPLAY_LOG = $MYSQLTEST_VARDIR/tmp/replay.log --let $MYSQLD_DATADIR= `SELECT @@datadir`; CREATE DATABASE `db1`; CREATE DATABASE `db.2`; CREATE DATABASE `db-3`; CREATE TABLE `db1`.`t1` (c1 INT) ENGINE=InnoDB; CREATE TABLE `db.2`.`t.2` (c1 INT) ENGINE=InnoDB; CREATE TABLE `db-3`.`t-3` (c1 INT) ENGINE=InnoDB; INSERT INTO `db1`.`t1` VALUES (1); INSERT INTO `db.2`.`t.2` VALUES (2); INSERT INTO `db-3`.`t-3` VALUES (3); --echo SELECT Schema_name FROM information_schema.schemata WHERE Schema_name LIKE 'db%'; SELECT Table_schema, Table_name FROM information_schema.tables WHERE Table_schema LIKE 'db%'; SELECT * FROM `db1`.`t1`; SELECT * FROM `db.2`.`t.2`; SELECT * FROM `db-3`.`t-3`; --echo --echo # Stop server. --source suite/meb/include/stop_mysqld.inc --echo --echo # list_files MYSQLD_DATADIR db* --list_files $MYSQLD_DATADIR db* --echo # list_files MYSQLD_DATADIR/db1 --list_files $MYSQLD_DATADIR/db1 --echo # list_files MYSQLD_DATADIR/db@002e2 --list_files $MYSQLD_DATADIR/db@002e2 --echo # list_files MYSQLD_DATADIR/db@002d3 --list_files $MYSQLD_DATADIR/db@002d3 --echo --let $pattern= "db@002e2\.t@002e2|db@002d3\.t@002d3" --echo # run ibbackup --include $pattern --exec $IBBACKUP --include $pattern $SERVER_CNF $BACKUP_CNF > $BACKUP_LOG 2>&1 --echo --echo # list_files BACKUP_DIR db* --list_files $BACKUP_DIR db* --echo # list_files BACKUP_DIR/db@002e2 --list_files $BACKUP_DIR/db@002e2 --echo # list_files BACKUP_DIR/db@002d3 --list_files $BACKUP_DIR/db@002d3 --echo --echo # run ibbackup --apply-log --exec $IBBACKUP --apply-log $BACKUP_CNF > $REPLAY_LOG 2>&1 --echo --echo # remove all InnoDB files from datadir --remove_files_wildcard $MYSQLD_DATADIR ib* --remove_file $MYSQLD_DATADIR/db1/t1.ibd --remove_file $MYSQLD_DATADIR/db@002e2/t@002e2.ibd --remove_file $MYSQLD_DATADIR/db@002d3/t@002d3.ibd --echo # list_files MYSQLD_DATADIR db* --list_files $MYSQLD_DATADIR db* --echo # list_files MYSQLD_DATADIR/db1 --list_files $MYSQLD_DATADIR/db1 --echo # list_files MYSQLD_DATADIR/db@002e2 --list_files $MYSQLD_DATADIR/db@002e2 --echo # list_files MYSQLD_DATADIR/db@002d3 --list_files $MYSQLD_DATADIR/db@002d3 --echo --echo # copy back all files from BACKUP_DIR --exec perl suite/meb/include/cptree.pl $BACKUP_DIR $MYSQLD_DATADIR --echo # list_files MYSQLD_DATADIR db* --list_files $MYSQLD_DATADIR db* --echo # list_files MYSQLD_DATADIR/db1 --list_files $MYSQLD_DATADIR/db1 --echo # list_files MYSQLD_DATADIR/db@002e2 --list_files $MYSQLD_DATADIR/db@002e2 --echo # list_files MYSQLD_DATADIR/db@002d3 --list_files $MYSQLD_DATADIR/db@002d3 --echo --echo # --echo # Avoid server crash, remove MYSQLD_DATADIR/db1/t1.frm --echo # --remove_file $MYSQLD_DATADIR/db1/t1.frm --echo # Restart server. --source suite/meb/include/restart_mysqld.inc --echo SELECT Schema_name FROM information_schema.schemata WHERE Schema_name LIKE 'db%'; SELECT Table_schema, Table_name FROM information_schema.tables WHERE Table_schema LIKE 'db%'; --error ER_NO_SUCH_TABLE SELECT * FROM `db1`.`t1`; SELECT * FROM `db.2`.`t.2`; SELECT * FROM `db-3`.`t-3`; --echo --echo # --echo # db1 is broken due to missing files, but still exists in InnoDB --echo # data dictionary. Would crash on DROP DATABASE. So don't do that. --echo # list_files MYSQLD_DATADIR/db1 --list_files $MYSQLD_DATADIR/db1 #DROP DATABASE `db1`; --echo DROP DATABASE `db.2`; DROP DATABASE `db-3`; --echo --echo # --echo # Cannot clean up db1. So create new databases. CALL mtr.force_restart(); --echo CALL mtr.add_suppression("InnoDB: Rollback of non-prepared transactions"); CALL mtr.add_suppression("InnoDB: Rolling back trx with id"); CALL mtr.add_suppression("InnoDB: Error: table"); --exit