diff options
Diffstat (limited to 'mysql-test/main/mysql_upgrade.test')
-rw-r--r-- | mysql-test/main/mysql_upgrade.test | 107 |
1 files changed, 75 insertions, 32 deletions
diff --git a/mysql-test/main/mysql_upgrade.test b/mysql-test/main/mysql_upgrade.test index 70206213..a17f1869 100644 --- a/mysql-test/main/mysql_upgrade.test +++ b/mysql-test/main/mysql_upgrade.test @@ -7,6 +7,19 @@ set sql_mode=""; call mtr.add_suppression("Incorrect definition of table mysql.column_stats:.*"); + +# It should create a file in the MySQL Servers datadir +let $MYSQLD_DATADIR= `select @@datadir`; + +# +# MDEV-30498 Rename mysql_upgrade state file to mariadb_upgrade. +# +# Ensure that old $MYSQLD_DATADIR/mysql_upgrade_info file is deleted. +# + +write_file $MYSQLD_DATADIR/mysql_upgrade_info; +EOF + # # Basic test that we can run mysql_upgrde and that it finds the # expected binaries it uses. @@ -14,22 +27,22 @@ call mtr.add_suppression("Incorrect definition of table mysql.column_stats:.*"); --echo Run mysql_upgrade once --exec $MYSQL_UPGRADE --force 2>&1 -# It should have created a file in the MySQL Servers datadir -let $MYSQLD_DATADIR= `select @@datadir`; +--error 1 file_exists $MYSQLD_DATADIR/mysql_upgrade_info; +file_exists $MYSQLD_DATADIR/mariadb_upgrade_info; --echo Run it again - should say already completed --replace_regex /upgraded to [^\n].*/upgraded to VERSION./ /again for [^\n]*/again for VERSION./ --exec $MYSQL_UPGRADE 2>&1 # It should have created a file in the MySQL Servers datadir -file_exists $MYSQLD_DATADIR/mysql_upgrade_info; +file_exists $MYSQLD_DATADIR/mariadb_upgrade_info; --echo Force should run it regardless of whether it has been run before --exec $MYSQL_UPGRADE --force 2>&1 # It should have created a file in the MySQL Servers datadir -file_exists $MYSQLD_DATADIR/mysql_upgrade_info; +file_exists $MYSQLD_DATADIR/mariadb_upgrade_info; # @@ -123,16 +136,16 @@ DROP USER 'user3'@'%'; let $MYSQLD_DATADIR= `select @@datadir`; ---echo # Droping the previously created mysql_upgrade_info file.. ---remove_file $MYSQLD_DATADIR/mysql_upgrade_info +--echo # Droping the previously created mariadb_upgrade_info file.. +--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info --echo # Running mysql_upgrade with --skip-write-binlog.. ---replace_regex /[^ ]*mysql_upgrade_info/...mysql_upgrade_info/ +--replace_regex /[^ ]*mariadb_upgrade_info/...mariadb_upgrade_info/ --exec $MYSQL_UPGRADE --skip-write-binlog -# mysql_upgrade must have created mysql_upgrade_info file, +# mysql_upgrade must have created mariadb_upgrade_info file, # so the following command should never fail. ---remove_file $MYSQLD_DATADIR/mysql_upgrade_info +--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info --echo # --echo # Bug #21489398: MYSQL_UPGRADE: FATAL ERROR: UPGRADE FAILED - IMPROVE ERROR @@ -201,8 +214,8 @@ set sql_mode=default; # # Enforce storage engine option should not effect mysql_upgrade # ---echo # Droping the previously created mysql_upgrade_info file.. ---remove_file $MYSQLD_DATADIR/mysql_upgrade_info +--echo # Droping the previously created mariadb_upgrade_info file.. +--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info create table test.t1(a int) engine=MyISAM; --echo # Trying to enforce InnoDB for all tables @@ -215,9 +228,9 @@ SET GLOBAL enforce_storage_engine=InnoDB; SELECT count(*) FROM information_schema.tables where ENGINE="InnoDB"; SHOW CREATE TABLE test.t1; DROP TABLE test.t1; -# mysql_upgrade must have created mysql_upgrade_info file, +# mysql_upgrade must have created mariadb_upgrade_info file, # so the following command should never fail. ---remove_file $MYSQLD_DATADIR/mysql_upgrade_info +--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info SET GLOBAL enforce_storage_engine=NULL; --echo # End of 10.1 tests @@ -300,11 +313,11 @@ FLUSH PRIVILEGES; --echo # MDEV-27279: mariadb_upgrade check-if-upgrade absence is do it --echo # ---remove_file $MYSQLD_DATADIR/mysql_upgrade_info ---replace_regex /[^ ]*mysql_upgrade_info/...mysql_upgrade_info/ +--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info +--replace_regex /[^ ]*mariadb_upgrade_info/...mariadb_upgrade_info/ --exec $MYSQL_UPGRADE --check-if-upgrade-is-needed ---replace_regex /'mariadb.* as:[^\n]*/'mariadb' as: mariadb/ /open .* Assuming/open XXX. Assuming/ /[^ ]*mysql_upgrade_info/...mysql_upgrade_info/ +--replace_regex /'mariadb.* as:[^\n]*/'mariadb' as: mariadb/ /open .* Assuming/open XXX. Assuming/ /[^ ]*mariadb_upgrade_info/...mariadb_upgrade_info/ --exec $MYSQL_UPGRADE --check-if-upgrade-is-needed --verbose --echo # @@ -319,7 +332,7 @@ perl; my $ver= $ENV{'MYSQL_SERVER_VERSION'} or die "MYSQL_SERVER_VERSION not set"; my $file= $ENV{'DATADIR'} or die "MYSQLD_DATADIR not set"; $ver =~ s/^(\d*)\.(\d*).(\d*)(.*)/$1.$2.0$4/; - open(FILE, ">$file/mysql_upgrade_info") or die "Failed to open $file"; + open(FILE, ">$file/mariadb_upgrade_info") or die "Failed to open $file"; print FILE "$ver\n"; close(FILE); EOF @@ -331,21 +344,29 @@ EOF --exec $MYSQL_UPGRADE --check-if-upgrade-is-needed --verbose --replace_regex /\d\d\.\d*\.\d*[^ .\n]*/MariaDB / --exec $MYSQL_UPGRADE ---remove_file $MYSQLD_DATADIR/mysql_upgrade_info +--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info --echo # --echo # MDEV-27279: mariadb_upgrade check-if-upgrade with major version change --echo # -# take 2rd number of version and change to 0 - +# take 2rd number of version and change to 0. If the 2rd number is already 0, +# change the first number let DATADIR= $MYSQLD_DATADIR; perl; my $ver= $ENV{'MYSQL_SERVER_VERSION'} or die "MYSQL_SERVER_VERSION not set"; my $file= $ENV{'DATADIR'} or die "MYSQLD_DATADIR not set"; - $ver =~ s/^(\d*)\.(\d*).(\d*)(.*)/$1.0.$3$4/; - open(FILE, ">$file/mysql_upgrade_info") or die "Failed to open $file"; + open(FILE, ">$file/mariadb_upgrade_info") or die "Failed to open $file"; + if ($ver =~ m/(\d*)\.0\.(\d*)(.*)/) + { + my $prev= $1-1; + $ver= $prev . '.0.' . $2 . $3; + } + else + { + $ver =~ s/^(\d*)\.(\d*)\.(\d*)(.*)/$1.0.$3$4/; + } print FILE "$ver\n"; close(FILE); EOF @@ -355,7 +376,7 @@ EOF --exec $MYSQL_UPGRADE --check-if-upgrade-is-needed --replace_regex /\d\d\.\d*\.\d*[^ .\n]*/MariaDB / /'mariadb.* as:[^\n]*/'mysql' as: mysql/ --exec $MYSQL_UPGRADE --check-if-upgrade-is-needed --verbose ---remove_file $MYSQLD_DATADIR/mysql_upgrade_info +--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info drop table mysql.global_priv; rename table mysql.global_priv_bak to mysql.global_priv; @@ -376,7 +397,7 @@ alter table mysql.db drop column Delete_history_priv; --source include/restart_mysqld.inc --echo Run mysql_upgrade with all privileges on a user --exec $MYSQL_UPGRADE --force --silent 2>&1 ---remove_file $MYSQLD_DATADIR/mysql_upgrade_info +--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info flush privileges; SHOW GRANTS FOR 'user3'@'%'; DROP USER 'user3'@'%'; @@ -395,9 +416,9 @@ SHOW GLOBAL VARIABLES LIKE 'alter_algorithm'; --exec $MYSQL_UPGRADE --force 2>&1 SET GLOBAL alter_algorithm=DEFAULT; SHOW GLOBAL VARIABLES LIKE 'alter_algorithm'; ---remove_file $MYSQLD_DATADIR/mysql_upgrade_info +--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info ---echo End of 10.3 tests +--echo # End of 10.3 tests --source include/switch_to_mysql_user.inc drop view mysql.user_bak; @@ -413,7 +434,7 @@ disconnect con1; connection default; --echo # mysql_upgrade --force --silent 2>&1 --exec $MYSQL_UPGRADE --force --silent 2>&1 ---remove_file $MYSQLD_DATADIR/mysql_upgrade_info +--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info show create user user3@localhost; connect con1,localhost,user3,a_password; select current_user(); @@ -431,7 +452,7 @@ drop view mysql.user_bak; drop table mysql.innodb_index_stats, mysql.innodb_table_stats; --echo # mysql_upgrade --force --silent 2>&1 --exec $MYSQL_UPGRADE --force --silent 2>&1 ---remove_file $MYSQLD_DATADIR/mysql_upgrade_info +--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info drop table mysql.global_priv; rename table mysql.global_priv_bak to mysql.global_priv; @@ -443,7 +464,7 @@ drop view mysql.user_bak; alter table mysql.user change authentication_string auth_string text collate utf8_bin not null; --echo # mysql_upgrade --force --silent 2>&1 --exec $MYSQL_UPGRADE --force --silent 2>&1 ---remove_file $MYSQLD_DATADIR/mysql_upgrade_info +--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info select count(*) from mysql.global_priv; drop table mysql.global_priv; rename table mysql.global_priv_bak to mysql.global_priv; @@ -484,7 +505,7 @@ connection default; drop table mysql.global_priv; rename table mysql.global_priv_bak to mysql.global_priv; ---remove_file $MYSQLD_DATADIR/mysql_upgrade_info +--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info --echo # --echo # mariadb-upgrade fails with sql_safe_updates = on @@ -493,7 +514,7 @@ rename table mysql.global_priv_bak to mysql.global_priv; set @orig_sql_safe_updates = @@GLOBAL.sql_safe_updates; set global sql_safe_updates=ON; --exec $MYSQL_UPGRADE --force 2>&1 ---remove_file $MYSQLD_DATADIR/mysql_upgrade_info +--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info set global sql_safe_updates=@orig_sql_safe_updates; --echo # @@ -505,7 +526,7 @@ INSERT INTO mysql.plugin SELECT 'unix_socket', 'auth_socket.so' --echo # mariadb-upgrade --force --silent 2>&1 --exec $MYSQL_UPGRADE --force --silent 2>&1 SELECT * FROM mysql.plugin WHERE name='unix_socket'; ---remove_file $MYSQLD_DATADIR/mysql_upgrade_info +--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info --echo # End of 10.4 tests @@ -540,3 +561,25 @@ call mtr.add_suppression("Column count of mysql.proc is wrong. Expected 21, foun --let $old_version= 10.4 --source include/load_dump_and_upgrade.inc + +--echo # End of 10.5 tests + +--echo # +--echo # MDEV-33554 Upgrade from 11.2 to 11.3 changes root's privileges +--echo # +alter table mysql.db drop column show_create_routine_priv; +flush privileges; +create user foo@bar; +grant all privileges on mysql.* to foo@bar; +show grants for foo@bar; +flush privileges; +show grants for foo@bar; + +--exec $MYSQL_UPGRADE --force --silent 2>&1 +--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info + +select show_create_routine_priv from mysql.db where user='foo'; +show grants for foo@bar; +drop user foo@bar; + +--echo # End of 11.3 tests |