From: kevin.lewis Date: August 13 2012 9:36pm Subject: bzr push into mysql-trunk branch (kevin.lewis:4223 to 4224) Bug#14320968 List-Archive: http://lists.mysql.com/commits/144559 X-Bug: 14320968 Message-Id: <20120813213623.19621.70060.4224@kevin-lewis-macbook.local> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 4224 kevin.lewis@stripped 2012-08-13 [merge] Merge from Bug#14320968 test case fix to mysql-trunk modified: mysql-test/suite/innodb/r/innodb-multiple-tablespaces.result mysql-test/suite/innodb/t/innodb-multiple-tablespaces.test 4223 Inaam Rana 2012-08-13 [merge] merge from 5.6 renamed: mysql-test/suite/sys_vars/r/innodb_max_io_capacity_basic.result => mysql-test/suite/sys_vars/r/innodb_io_capacity_max_basic.result mysql-test/suite/sys_vars/t/innodb_max_io_capacity_basic.test => mysql-test/suite/sys_vars/t/innodb_io_capacity_max_basic.test modified: mysql-test/suite/sys_vars/r/innodb_io_capacity_basic.result mysql-test/suite/sys_vars/t/innodb_io_capacity_basic.test storage/innobase/handler/ha_innodb.cc mysql-test/suite/sys_vars/r/innodb_io_capacity_max_basic.result mysql-test/suite/sys_vars/t/innodb_io_capacity_max_basic.test === modified file 'mysql-test/suite/innodb/r/innodb-multiple-tablespaces.result' --- a/mysql-test/suite/innodb/r/innodb-multiple-tablespaces.result revid:inaam.rana@stripped +++ b/mysql-test/suite/innodb/r/innodb-multiple-tablespaces.result revid:kevin.lewis@stripped @@ -105,6 +105,7 @@ yyy.ibd # WWW; Put the wrong file in all three locations # NOLINK; Delete the ISL file Since remote location is still in SYS_DATAFILES, # it should still be found. And the ISL file should be re-created. +# Make a backup of this tablespace to use later. ---- MYSQLD_DATADIR/test nnn.frm nolink.frm @@ -140,6 +141,7 @@ yyy.ibd yyy.isl ---- MYSQL_TMP_DIR/alt_dir/test nolink.ibd +nolink.ibd.bak nwy.ibd nyw.ibd nyy.ibd @@ -308,6 +310,7 @@ yyy.ibd yyy.isl ---- MYSQL_TMP_DIR/alt_dir/test nolink.ibd +nolink.ibd.bak nwy.ibd nyw.ibd nyy.ibd @@ -352,6 +355,7 @@ yny.ibd yyn.ibd yyy.ibd ---- MYSQL_TMP_DIR/alt_dir/test +nolink.ibd.bak nwy.ibd nyy.ibd www.ibd @@ -370,6 +374,7 @@ yyy.ibd # ---- MYSQLD_DATADIR/test ---- MYSQL_TMP_DIR/alt_dir/test +nolink.ibd.bak ---- MYSQL_TMP_DIR/new_dir/test # # Create some tables again and this time, crash instead of shutdown @@ -385,11 +390,10 @@ yyy.ibd # SYS_DATAFILES is unavailable during recovery. # Link File will refer to the file at alt_dir. # In each case except the control tablespace, the Link file will -# exist with a file name in alt_dir. 'aa' is the control table and -# is alphabetically before the other tablespace names so it will be -# recovered first by InnoDB. It is the source of the 'wrong' tablespaces. +# exist with a file name in alt_dir. 'fnolink.ibd.bak' is the +# source of the 'wrong' tablespaces. +# # Tablename Default_Tablespace Remote_Tablespace -# aa Yes No # ny Yes Yes # wy Wrong Yes # yn Yes No @@ -398,8 +402,6 @@ yyy.ibd # set global innodb_file_per_table=on; set global innodb_file_format='Barracuda'; -CREATE TABLE aa (c1 INT KEY, c2 TEXT) ENGINE=InnoDB; -INSERT INTO aa VALUES (1, 'aa - control table'); CREATE TABLE ny (c1 INT KEY, c2 TEXT) ENGINE=InnoDB DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir'; INSERT INTO ny VALUES (1, 'ny'); CREATE TABLE wy (c1 INT KEY, c2 TEXT) ENGINE=InnoDB DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir'; @@ -414,16 +416,11 @@ INSERT INTO yy VALUES (1, 'yy'); # Crash the server, copy and remove files. # BEGIN; -INSERT INTO aa VALUES (2, 'aa'); INSERT INTO ny VALUES (2, 'ny'); INSERT INTO wy VALUES (2, 'wy'); INSERT INTO yn VALUES (2, 'yn'); INSERT INTO yw VALUES (2, 'yw'); INSERT INTO yy VALUES (2, 'yy'); -SELECT * FROM aa; -c1 c2 -1 aa - control table -2 aa SELECT * FROM ny; c1 c2 1 ny @@ -450,8 +447,6 @@ ERROR HY000: Lost connection to MySQL se # # Now that the engine is not running, move files around to test various scenarios. # -# AA; Control table, used as the source of 'wrong' tablespaces. -# AA also has a link file which points to the file in the default datadir. # NY; Tablespace found in alt_dir but not the default directory. # WY; The wrong tablespace is found in the default directory # and the correct one in alt_dir. @@ -459,9 +454,6 @@ ERROR HY000: Lost connection to MySQL se # YN; Tablespace found the default directory but not in alt_dir. # YY; Found in both default directory and alt-dir. ---- MYSQLD_DATADIR/test -aa.frm -aa.ibd -aa.isl ny.frm ny.isl wy.frm @@ -477,16 +469,15 @@ yy.frm yy.ibd yy.isl ---- MYSQL_TMP_DIR/alt_dir/test +nolink.ibd.bak ny.ibd wy.ibd yw.ibd yy.ibd # # Start the server with innodb-force-recovery=1 so that it does not quit -# when it finds multiple possible locations for aa, yy, wy and yw. +# when it finds multiple possible locations for yy, wy and yw. # -SELECT * FROM aa; -ERROR 42S02: Table 'test.aa' doesn't exist SELECT * FROM ny; c1 c2 1 ny @@ -499,8 +490,6 @@ SELECT * FROM yw; ERROR 42S02: Table 'test.yw' doesn't exist SELECT * FROM yy; ERROR 42S02: Table 'test.yy' doesn't exist -SHOW CREATE TABLE aa; -ERROR 42S02: Table 'test.aa' doesn't exist SHOW CREATE TABLE ny; Table Create Table ny CREATE TABLE `ny` ( @@ -524,7 +513,6 @@ ERROR 42S02: Table 'test.yy' doesn't exi SELECT path FROM information_schema.innodb_sys_datafiles WHERE path LIKE '%test%' ORDER BY space; path -MYSQLD_DATADIR/test/aa.ibd MYSQL_TMP_DIR/alt_dir/test/ny.ibd MYSQL_TMP_DIR/alt_dir/test/wy.ibd MYSQL_TMP_DIR/alt_dir/test/yn.ibd @@ -534,10 +522,33 @@ MYSQL_TMP_DIR/alt_dir/test/yy.ibd # Shutdown the server and remove extra tablespace files. # # +# List of files before removing unused files +# +---- MYSQLD_DATADIR/test +ny.frm +ny.isl +wy.frm +wy.ibd +wy.isl +yn.frm +yn.ibd +yn.isl +yw.frm +yw.ibd +yw.isl +yy.frm +yy.ibd +yy.isl +---- MYSQL_TMP_DIR/alt_dir/test +nolink.ibd.bak +ny.ibd +wy.ibd +yw.ibd +yy.ibd +# # List of files before restart and DROP TABLES # ---- MYSQLD_DATADIR/test -aa.frm ny.frm wy.frm yn.frm @@ -547,7 +558,6 @@ yy.frm # # Start the server without using force_recover. # -DROP TABLE aa; DROP TABLE ny; DROP TABLE wy; DROP TABLE yn; === modified file 'mysql-test/suite/innodb/t/innodb-multiple-tablespaces.test' --- a/mysql-test/suite/innodb/t/innodb-multiple-tablespaces.test revid:inaam.rana@stripped +++ b/mysql-test/suite/innodb/t/innodb-multiple-tablespaces.test revid:kevin.lewis@stripped @@ -194,6 +194,9 @@ INSERT INTO nolink VALUES (1, 'no link f --echo # it should still be found. And the ISL file should be re-created. --remove_file $MYSQLD_DATADIR/test/nolink.isl +--echo # Make a backup of this tablespace to use later. +--copy_file $MYSQL_TMP_DIR/alt_dir/test/nolink.ibd $MYSQL_TMP_DIR/alt_dir/test/nolink.ibd.bak + --echo ---- MYSQLD_DATADIR/test --list_files $MYSQLD_DATADIR/test --echo ---- MYSQL_TMP_DIR/alt_dir/test @@ -336,11 +339,10 @@ DROP TABLE nolink; --echo # SYS_DATAFILES is unavailable during recovery. --echo # Link File will refer to the file at alt_dir. --echo # In each case except the control tablespace, the Link file will ---echo # exist with a file name in alt_dir. 'aa' is the control table and ---echo # is alphabetically before the other tablespace names so it will be ---echo # recovered first by InnoDB. It is the source of the 'wrong' tablespaces. +--echo # exist with a file name in alt_dir. 'fnolink.ibd.bak' is the +--echo # source of the 'wrong' tablespaces. +--echo # --echo # Tablename Default_Tablespace Remote_Tablespace ---echo # aa Yes No --echo # ny Yes Yes --echo # wy Wrong Yes --echo # yn Yes No @@ -352,10 +354,6 @@ set global innodb_file_per_table=on; set global innodb_file_format='Barracuda'; --replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR -eval CREATE TABLE aa (c1 INT KEY, c2 TEXT) ENGINE=InnoDB; -INSERT INTO aa VALUES (1, 'aa - control table'); - ---replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR eval CREATE TABLE ny (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory; INSERT INTO ny VALUES (1, 'ny'); @@ -379,14 +377,12 @@ INSERT INTO yy VALUES (1, 'yy'); --echo # Crash the server, copy and remove files. --echo # BEGIN; -INSERT INTO aa VALUES (2, 'aa'); INSERT INTO ny VALUES (2, 'ny'); INSERT INTO wy VALUES (2, 'wy'); INSERT INTO yn VALUES (2, 'yn'); INSERT INTO yw VALUES (2, 'yw'); INSERT INTO yy VALUES (2, 'yy'); -SELECT * FROM aa; SELECT * FROM ny; SELECT * FROM wy; SELECT * FROM yn; @@ -405,19 +401,16 @@ COMMIT; --echo # --echo # Now that the engine is not running, move files around to test various scenarios. --echo # ---echo # AA; Control table, used as the source of 'wrong' tablespaces. ---echo # AA also has a link file which points to the file in the default datadir. ---exec echo $MYSQLD_DATADIR/test/aa.ibd > $MYSQLD_DATADIR/test/aa.isl --echo # NY; Tablespace found in alt_dir but not the default directory. --echo # WY; The wrong tablespace is found in the default directory --echo # and the correct one in alt_dir. ---copy_file $MYSQLD_DATADIR/test/aa.ibd $MYSQLD_DATADIR/test/wy.ibd +--copy_file $MYSQL_TMP_DIR/alt_dir/test/nolink.ibd.bak $MYSQLD_DATADIR/test/wy.ibd --echo # YW; Tablespace is found in the default directory but the wrong file in alt_dir. --move_file $MYSQL_TMP_DIR/alt_dir/test/yw.ibd $MYSQLD_DATADIR/test/yw.ibd ---copy_file $MYSQLD_DATADIR/test/aa.ibd $MYSQL_TMP_DIR/alt_dir/test/yw.ibd +--copy_file $MYSQL_TMP_DIR/alt_dir/test/nolink.ibd.bak $MYSQL_TMP_DIR/alt_dir/test/yw.ibd --echo # YN; Tablespace found the default directory but not in alt_dir. --move_file $MYSQL_TMP_DIR/alt_dir/test/yn.ibd $MYSQLD_DATADIR/test/yn.ibd @@ -432,15 +425,13 @@ COMMIT; --echo # --echo # Start the server with innodb-force-recovery=1 so that it does not quit ---echo # when it finds multiple possible locations for aa, yy, wy and yw. +--echo # when it finds multiple possible locations for yy, wy and yw. --echo # --enable_reconnect --exec echo "restart:--innodb-force-recovery=1" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --source include/wait_until_connected_again.inc --disable_reconnect ---error ER_NO_SUCH_TABLE -SELECT * FROM aa; SELECT * FROM ny; --error ER_NO_SUCH_TABLE SELECT * FROM wy; @@ -450,8 +441,6 @@ SELECT * FROM yw; --error ER_NO_SUCH_TABLE SELECT * FROM yy; ---error ER_NO_SUCH_TABLE -SHOW CREATE TABLE aa; --replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR SHOW CREATE TABLE ny; --error ER_NO_SUCH_TABLE @@ -471,8 +460,15 @@ SELECT path FROM information_schema.inno --echo # --source include/shutdown_mysqld.inc ---remove_file $MYSQLD_DATADIR/test/aa.ibd ---remove_file $MYSQLD_DATADIR/test/aa.isl +--echo # +--echo # List of files before removing unused files +--echo # + +--echo ---- MYSQLD_DATADIR/test +--list_files $MYSQLD_DATADIR/test +--echo ---- MYSQL_TMP_DIR/alt_dir/test +--list_files $MYSQL_TMP_DIR/alt_dir/test + --remove_file $MYSQLD_DATADIR/test/ny.isl --remove_file $MYSQLD_DATADIR/test/wy.ibd --remove_file $MYSQLD_DATADIR/test/wy.isl @@ -483,6 +479,7 @@ SELECT path FROM information_schema.inno --remove_file $MYSQLD_DATADIR/test/yy.ibd --remove_file $MYSQLD_DATADIR/test/yy.isl +--remove_file $MYSQL_TMP_DIR/alt_dir/test/nolink.ibd.bak --remove_file $MYSQL_TMP_DIR/alt_dir/test/ny.ibd --remove_file $MYSQL_TMP_DIR/alt_dir/test/wy.ibd --remove_file $MYSQL_TMP_DIR/alt_dir/test/yw.ibd @@ -502,7 +499,6 @@ SELECT path FROM information_schema.inno --echo # --source include/start_mysqld.inc -DROP TABLE aa; DROP TABLE ny; DROP TABLE wy; DROP TABLE yn; No bundle (reason: useless for push emails).