127 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			127 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | # Can't run test of external client with embedded server | ||
|  | -- source include/not_embedded.inc | ||
|  | 
 | ||
|  | # Only run test if "mysql_upgrade" is found | ||
|  | --require r/have_mysql_upgrade.result | ||
|  | --disable_query_log | ||
|  | select LENGTH("$MYSQL_UPGRADE")>0 as have_mysql_upgrade; | ||
|  | --enable_query_log | ||
|  | 
 | ||
|  | # | ||
|  | # Hack: | ||
|  | # | ||
|  | # If running with Valgrind ($VALGRIND_TEST <> 0) then the resource | ||
|  | # consumption (CPU) for upgrading a large log table will be intense. | ||
|  | # Therefore, truncate the log table in advance and issue a statement | ||
|  | # that should be logged. | ||
|  | # | ||
|  | if (`SELECT $VALGRIND_TEST`) | ||
|  | { | ||
|  |   --disable_query_log | ||
|  |   --disable_result_log | ||
|  |   --disable_abort_on_error | ||
|  |   TRUNCATE TABLE mysql.general_log; | ||
|  |   SELECT 1; | ||
|  |   --enable_abort_on_error | ||
|  |   --enable_result_log | ||
|  |   --enable_query_log | ||
|  | } | ||
|  | 
 | ||
|  | # | ||
|  | # Basic test that we can run mysql_upgrde and that it finds the | ||
|  | # expected binaries it uses. | ||
|  | # | ||
|  | --echo Run mysql_upgrade once | ||
|  | --exec $MYSQL_UPGRADE --skip-verbose --force 2>&1 | ||
|  | 
 | ||
|  | # It should have created a file in the MySQL Servers datadir | ||
|  | let $MYSQLD_DATADIR= `select @@datadir`; | ||
|  | file_exists $MYSQLD_DATADIR/mysql_upgrade_info; | ||
|  | 
 | ||
|  | --echo Run it again - should say already completed | ||
|  | --replace_result $MYSQL_SERVER_VERSION VERSION | ||
|  | --error 1 | ||
|  | --exec $MYSQL_UPGRADE --skip-verbose 2>&1 | ||
|  | 
 | ||
|  | # It should have created a file in the MySQL Servers datadir | ||
|  | file_exists $MYSQLD_DATADIR/mysql_upgrade_info; | ||
|  | 
 | ||
|  | --echo Force should run it regardless of wether it's been run before | ||
|  | --exec $MYSQL_UPGRADE --skip-verbose --force 2>&1 | ||
|  | 
 | ||
|  | # It should have created a file in the MySQL Servers datadir | ||
|  | file_exists $MYSQLD_DATADIR/mysql_upgrade_info; | ||
|  | 
 | ||
|  | 
 | ||
|  | # | ||
|  | # Bug #25452 mysql_upgrade access denied. | ||
|  | # | ||
|  | 
 | ||
|  | # Password protect a root account and run mysql_upgrade | ||
|  | 
 | ||
|  | CREATE USER mysqltest1@'%' IDENTIFIED by 'sakila'; | ||
|  | GRANT ALL ON *.* TO mysqltest1@'%'; | ||
|  | --echo Run mysql_upgrade with password protected account | ||
|  | --exec $MYSQL_UPGRADE --skip-verbose --force --user=mysqltest1 --password=sakila 2>&1 | ||
|  | 
 | ||
|  | DROP USER mysqltest1@'%'; | ||
|  | 
 | ||
|  | 
 | ||
|  | # | ||
|  | # Bug #26639 mysql_upgrade exits successfully even if external command failed | ||
|  | # | ||
|  | 
 | ||
|  | --echo Run mysql_upgrade with a non existing server socket | ||
|  | --replace_result $MYSQLTEST_VARDIR var | ||
|  | --replace_regex /.*mysqlcheck.*: Got/mysqlcheck: Got/ /\([0-9]*\)/(errno)/ | ||
|  | --error 1 | ||
|  | --exec $MYSQL_UPGRADE --skip-verbose --force --host=not_existing_host 2>&1 | ||
|  | 
 | ||
|  | # | ||
|  | # Bug #28401 mysql_upgrade Failed with STRICT_ALL_TABLES, ANSI_QUOTES and NO_ZERO_DATE | ||
|  | # | ||
|  | 
 | ||
|  | # The SQL commands used by mysql_upgrade are written to be run | ||
|  | # with sql_mode set to '' - thus the scripts should change sql_mode | ||
|  | # for the session to make sure the SQL is legal. | ||
|  | 
 | ||
|  | # Test by setting sql_mode before running mysql_upgrade | ||
|  | set GLOBAL sql_mode='STRICT_ALL_TABLES,ANSI_QUOTES,NO_ZERO_DATE'; | ||
|  | --exec $MYSQL_UPGRADE --skip-verbose --force 2>&1 | ||
|  | eval set GLOBAL sql_mode=default; | ||
|  | 
 | ||
|  | 
 | ||
|  | --echo # | ||
|  | --echo # Bug #41569 mysql_upgrade (ver 5.1) add 3 fields to mysql.proc table  | ||
|  | --echo # but does not set values. | ||
|  | --echo # | ||
|  | 
 | ||
|  | # Create a stored procedure and set the fields in question to null.  | ||
|  | # When running mysql_upgrade, a warning should be written. | ||
|  | 
 | ||
|  | CREATE PROCEDURE testproc() BEGIN END; | ||
|  | UPDATE mysql.proc SET character_set_client = NULL WHERE name LIKE 'testproc'; | ||
|  | UPDATE mysql.proc SET collation_connection = NULL WHERE name LIKE 'testproc'; | ||
|  | UPDATE mysql.proc SET db_collation = NULL WHERE name LIKE 'testproc'; | ||
|  | --exec $MYSQL_UPGRADE --skip-verbose --force 2> $MYSQLTEST_VARDIR/tmp/41569.txt | ||
|  | CALL testproc(); | ||
|  | DROP PROCEDURE testproc; | ||
|  | --cat_file $MYSQLTEST_VARDIR/tmp/41569.txt | ||
|  | --remove_file $MYSQLTEST_VARDIR/tmp/41569.txt | ||
|  | 
 | ||
|  | 
 | ||
|  | --echo # | ||
|  | --echo # Bug #53613: mysql_upgrade incorrectly revokes  | ||
|  | --echo #   TRIGGER privilege on given table | ||
|  | --echo # | ||
|  | 
 | ||
|  | GRANT USAGE ON *.* TO 'user3'@'%'; | ||
|  | GRANT ALL PRIVILEGES ON `roelt`.`test2` TO 'user3'@'%'; | ||
|  | --echo Run mysql_upgrade with all privileges on a user | ||
|  | --exec $MYSQL_UPGRADE --skip-verbose --force 2>&1 | ||
|  | SHOW GRANTS FOR 'user3'@'%'; | ||
|  | 
 | ||
|  | DROP USER 'user3'@'%'; | ||
|  | 
 | ||
|  | --echo End of 5.1 tests |