mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 02:46:29 +01:00 
			
		
		
		
	 a19cb3884f
			
		
	
	
	a19cb3884f
	
	
	
		
			
			Shutdown of mtr tests may be too impatient, esp on CI environment where 10 seconds of `arg` of `shutdown_server arg` may not be enough for the clean shutdown to complete. This is fixed to remove explicit non-zero timeout argument to `shutdown_server` from all mtr tests. mysqltest computes 60 seconds default value for the timeout for the argless `shutdown_server` command. This policy is additionally ensured with a compile time assert.
		
			
				
	
	
		
			102 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #
 | |
| # IMPORT / DISCARD TABLESPACE
 | |
| #
 | |
| # The test might require additional engine options,
 | |
| # e.g. for InnoDB it is --innodb-file-per-table
 | |
| 
 | |
| --source have_engine.inc
 | |
| 
 | |
| --disable_warnings
 | |
| DROP TABLE IF EXISTS t1, t2;
 | |
| --enable_warnings
 | |
| 
 | |
| --let $create_definition = a $int_col
 | |
| --source create_table.inc
 | |
| 
 | |
| --let $alter_definition = DISCARD TABLESPACE
 | |
| 
 | |
| --source alter_table.inc
 | |
| if ($mysql_errname)
 | |
| {
 | |
|   --let $my_last_stmt = $alter_statement
 | |
|   --let $functionality = Tablespace operations
 | |
|   --source unexpected_result.inc
 | |
| }
 | |
| if (!$mysql_errname)
 | |
| {
 | |
|   DROP TABLE t1;
 | |
| 
 | |
|   --let $create_definition = a $int_col
 | |
|   --source create_table.inc
 | |
|   INSERT INTO t1 (a) VALUES (1),(2);
 | |
|   --sorted_result
 | |
|   SELECT a FROM t1;
 | |
| 
 | |
| # http://dev.mysql.com/doc/mysql-enterprise-backup/3.5/en/partial.restoring.single.html 
 | |
| # To get a "clean" backup we need to either use innobackup, or to monitor show engine innodb status,
 | |
| # and the documented conditions do not look exactly feasible. So, we will go a simple way:
 | |
| # just restart the server, and take the backup while the server is down.
 | |
| # (And we need to have a really clean backup, see MySQL:65429 / LP:1004910)
 | |
| 
 | |
|   --let $datadir = `SELECT @@datadir`
 | |
| 
 | |
|   --write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
 | |
| restart
 | |
| wait
 | |
| EOF
 | |
| 
 | |
|   --enable_reconnect
 | |
|   --shutdown_server
 | |
| 
 | |
|   --source include/wait_until_disconnected.inc
 | |
| 
 | |
|   --replace_result $datadir <DATADIR>
 | |
|   --copy_file $datadir/test/t1.ibd $datadir/test/t1.ibd.save
 | |
| 
 | |
|   --append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
 | |
| restart
 | |
| EOF
 | |
| 
 | |
|   --source include/wait_until_connected_again.inc
 | |
| 
 | |
|   --let $alter_definition = DISCARD TABLESPACE
 | |
|   --source alter_table.inc
 | |
| 
 | |
|   --let $error_codes = ER_TABLESPACE_DISCARDED
 | |
|   --replace_result $storage_engine <STORAGE_ENGINE>
 | |
|   SELECT a FROM t1;
 | |
|   --source check_errors.inc
 | |
|   if ($mysql_errname != ER_TABLESPACE_DISCARDED)
 | |
|   {
 | |
|     --let $functionality = Tablespace operations
 | |
|     --source unexpected_result.inc
 | |
|   }
 | |
| 
 | |
|   --move_file $datadir/test/t1.ibd.save $datadir/test/t1.ibd
 | |
|   --let $alter_definition = IMPORT TABLESPACE
 | |
|   --source alter_table.inc
 | |
|   --sorted_result
 | |
|   SELECT a FROM t1;
 | |
| 
 | |
|   # Adding a warning suppression based on what InnoDB currently does
 | |
|   # when it attempts to access a table without an *.ibd file
 | |
|   --disable_query_log
 | |
|   eval CALL mtr.add_suppression('$storage_engine: Error:');
 | |
|   --enable_query_log
 | |
| 
 | |
|   # The sleep below is a very bad style, but so far there seems to be 
 | |
|   # no reliable way to prevent a failure on Windows, which is caused 
 | |
|   # by the fact that the error message that we added the above suppression for,
 | |
|   # on Windows appears in the error log with a delay, so MTR 
 | |
|   # thinks the error was raised on server shutdown, and the suppression
 | |
|   # does not work. Adding it globally is not an option because 
 | |
|   # it must be caught in other tests which do not produce the failure
 | |
|   # intentionally
 | |
| 
 | |
|   --sleep 1
 | |
| }
 | |
| 
 | |
| DROP TABLE t1;
 | |
| 
 | |
| --source cleanup_engine.inc
 | |
| 
 |