mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
0c50974573
OPTION SKIP-WRITE-BINLOG System tables were not getting upgraded when mysql_upgrade was run with --skip-write-binlog option. (Same for --write-binlog.) Also, with this option, mysql_upgrade_info file was not getting created after the upgrade. mysql_upgrade makes use of mysql client tool in order to run upgrade scripts, while doing so it passes some of the command line options (used to start mysql_upgrade) directly to mysql client. The reason behind this bug being, some options like skip-write-binlog and upgrade-system-tables were being passed to mysql tool along with other options, and hence mysql execution failed due presence of these invalid options. Fixed this issue by filtering out the above mentioned options from the list of options that will be passed to mysql and mysqlcheck tools. However, since --write-binlog is supported by mysqlcheck, this option would be used explicitly while running mysqlcheck. (not part of patch, already there) Checking the contents of general log after the upgrade is not doable via an mtr test. So performed manual test. Added a test to verify the creation of mysql_upgrade_info.
229 lines
12 KiB
Text
229 lines
12 KiB
Text
Run mysql_upgrade once
|
|
mtr.global_suppressions OK
|
|
mtr.test_suppressions OK
|
|
mysql.columns_priv OK
|
|
mysql.db OK
|
|
mysql.event OK
|
|
mysql.func OK
|
|
mysql.general_log OK
|
|
mysql.help_category OK
|
|
mysql.help_keyword OK
|
|
mysql.help_relation OK
|
|
mysql.help_topic OK
|
|
mysql.host OK
|
|
mysql.ndb_binlog_index OK
|
|
mysql.plugin OK
|
|
mysql.proc OK
|
|
mysql.procs_priv OK
|
|
mysql.proxies_priv OK
|
|
mysql.servers OK
|
|
mysql.slow_log OK
|
|
mysql.tables_priv OK
|
|
mysql.time_zone OK
|
|
mysql.time_zone_leap_second OK
|
|
mysql.time_zone_name OK
|
|
mysql.time_zone_transition OK
|
|
mysql.time_zone_transition_type OK
|
|
mysql.user OK
|
|
Run it again - should say already completed
|
|
This installation of MySQL is already upgraded to VERSION, use --force if you still need to run mysql_upgrade
|
|
Force should run it regardless of wether it's been run before
|
|
mtr.global_suppressions OK
|
|
mtr.test_suppressions OK
|
|
mysql.columns_priv OK
|
|
mysql.db OK
|
|
mysql.event OK
|
|
mysql.func OK
|
|
mysql.general_log OK
|
|
mysql.help_category OK
|
|
mysql.help_keyword OK
|
|
mysql.help_relation OK
|
|
mysql.help_topic OK
|
|
mysql.host OK
|
|
mysql.ndb_binlog_index OK
|
|
mysql.plugin OK
|
|
mysql.proc OK
|
|
mysql.procs_priv OK
|
|
mysql.proxies_priv OK
|
|
mysql.servers OK
|
|
mysql.slow_log OK
|
|
mysql.tables_priv OK
|
|
mysql.time_zone OK
|
|
mysql.time_zone_leap_second OK
|
|
mysql.time_zone_name OK
|
|
mysql.time_zone_transition OK
|
|
mysql.time_zone_transition_type OK
|
|
mysql.user OK
|
|
CREATE USER mysqltest1@'%' IDENTIFIED by 'sakila';
|
|
GRANT ALL ON *.* TO mysqltest1@'%';
|
|
Run mysql_upgrade with password protected account
|
|
mtr.global_suppressions OK
|
|
mtr.test_suppressions OK
|
|
mysql.columns_priv OK
|
|
mysql.db OK
|
|
mysql.event OK
|
|
mysql.func OK
|
|
mysql.general_log OK
|
|
mysql.help_category OK
|
|
mysql.help_keyword OK
|
|
mysql.help_relation OK
|
|
mysql.help_topic OK
|
|
mysql.host OK
|
|
mysql.ndb_binlog_index OK
|
|
mysql.plugin OK
|
|
mysql.proc OK
|
|
mysql.procs_priv OK
|
|
mysql.proxies_priv OK
|
|
mysql.servers OK
|
|
mysql.slow_log OK
|
|
mysql.tables_priv OK
|
|
mysql.time_zone OK
|
|
mysql.time_zone_leap_second OK
|
|
mysql.time_zone_name OK
|
|
mysql.time_zone_transition OK
|
|
mysql.time_zone_transition_type OK
|
|
mysql.user OK
|
|
DROP USER mysqltest1@'%';
|
|
Run mysql_upgrade with a non existing server socket
|
|
mysqlcheck: Got error: 2005: Unknown MySQL server host 'not_existing_host' (errno) when trying to connect
|
|
FATAL ERROR: Upgrade failed
|
|
set GLOBAL sql_mode='STRICT_ALL_TABLES,ANSI_QUOTES,NO_ZERO_DATE';
|
|
mtr.global_suppressions OK
|
|
mtr.test_suppressions OK
|
|
mysql.columns_priv OK
|
|
mysql.db OK
|
|
mysql.event OK
|
|
mysql.func OK
|
|
mysql.general_log OK
|
|
mysql.help_category OK
|
|
mysql.help_keyword OK
|
|
mysql.help_relation OK
|
|
mysql.help_topic OK
|
|
mysql.host OK
|
|
mysql.ndb_binlog_index OK
|
|
mysql.plugin OK
|
|
mysql.proc OK
|
|
mysql.procs_priv OK
|
|
mysql.proxies_priv OK
|
|
mysql.servers OK
|
|
mysql.slow_log OK
|
|
mysql.tables_priv OK
|
|
mysql.time_zone OK
|
|
mysql.time_zone_leap_second OK
|
|
mysql.time_zone_name OK
|
|
mysql.time_zone_transition OK
|
|
mysql.time_zone_transition_type OK
|
|
mysql.user OK
|
|
set GLOBAL sql_mode=default;
|
|
#
|
|
# Bug #41569 mysql_upgrade (ver 5.1) add 3 fields to mysql.proc table
|
|
# but does not set values.
|
|
#
|
|
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';
|
|
mtr.global_suppressions OK
|
|
mtr.test_suppressions OK
|
|
mysql.columns_priv OK
|
|
mysql.db OK
|
|
mysql.event OK
|
|
mysql.func OK
|
|
mysql.general_log OK
|
|
mysql.help_category OK
|
|
mysql.help_keyword OK
|
|
mysql.help_relation OK
|
|
mysql.help_topic OK
|
|
mysql.host OK
|
|
mysql.ndb_binlog_index OK
|
|
mysql.plugin OK
|
|
mysql.proc OK
|
|
mysql.procs_priv OK
|
|
mysql.proxies_priv OK
|
|
mysql.servers OK
|
|
mysql.slow_log OK
|
|
mysql.tables_priv OK
|
|
mysql.time_zone OK
|
|
mysql.time_zone_leap_second OK
|
|
mysql.time_zone_name OK
|
|
mysql.time_zone_transition OK
|
|
mysql.time_zone_transition_type OK
|
|
mysql.user OK
|
|
CALL testproc();
|
|
DROP PROCEDURE testproc;
|
|
WARNING: NULL values of the 'character_set_client' column ('mysql.proc' table) have been updated with a default value (latin1). Please verify if necessary.
|
|
WARNING: NULL values of the 'collation_connection' column ('mysql.proc' table) have been updated with a default value (latin1_swedish_ci). Please verify if necessary.
|
|
WARNING: NULL values of the 'db_collation' column ('mysql.proc' table) have been updated with default values. Please verify if necessary.
|
|
#
|
|
# Bug #53613: mysql_upgrade incorrectly revokes
|
|
# TRIGGER privilege on given table
|
|
#
|
|
GRANT USAGE ON *.* TO 'user3'@'%';
|
|
GRANT ALL PRIVILEGES ON `roelt`.`test2` TO 'user3'@'%';
|
|
Run mysql_upgrade with all privileges on a user
|
|
mtr.global_suppressions OK
|
|
mtr.test_suppressions OK
|
|
mysql.columns_priv OK
|
|
mysql.db OK
|
|
mysql.event OK
|
|
mysql.func OK
|
|
mysql.general_log OK
|
|
mysql.help_category OK
|
|
mysql.help_keyword OK
|
|
mysql.help_relation OK
|
|
mysql.help_topic OK
|
|
mysql.host OK
|
|
mysql.ndb_binlog_index OK
|
|
mysql.plugin OK
|
|
mysql.proc OK
|
|
mysql.procs_priv OK
|
|
mysql.proxies_priv OK
|
|
mysql.servers OK
|
|
mysql.slow_log OK
|
|
mysql.tables_priv OK
|
|
mysql.time_zone OK
|
|
mysql.time_zone_leap_second OK
|
|
mysql.time_zone_name OK
|
|
mysql.time_zone_transition OK
|
|
mysql.time_zone_transition_type OK
|
|
mysql.user OK
|
|
SHOW GRANTS FOR 'user3'@'%';
|
|
Grants for user3@%
|
|
GRANT USAGE ON *.* TO 'user3'@'%'
|
|
GRANT ALL PRIVILEGES ON `roelt`.`test2` TO 'user3'@'%'
|
|
DROP USER 'user3'@'%';
|
|
End of 5.1 tests
|
|
The --upgrade-system-tables option was used, databases won't be touched.
|
|
#
|
|
# Bug#11827359 60223: MYSQL_UPGRADE PROBLEM WITH OPTION
|
|
# SKIP-WRITE-BINLOG
|
|
#
|
|
# Droping the previously created mysql_upgrade_info file..
|
|
# Running mysql_upgrade with --skip-write-binlog..
|
|
mtr.global_suppressions OK
|
|
mtr.test_suppressions OK
|
|
mysql.columns_priv OK
|
|
mysql.db OK
|
|
mysql.event OK
|
|
mysql.func OK
|
|
mysql.general_log OK
|
|
mysql.help_category OK
|
|
mysql.help_keyword OK
|
|
mysql.help_relation OK
|
|
mysql.help_topic OK
|
|
mysql.host OK
|
|
mysql.ndb_binlog_index OK
|
|
mysql.plugin OK
|
|
mysql.proc OK
|
|
mysql.procs_priv OK
|
|
mysql.proxies_priv OK
|
|
mysql.servers OK
|
|
mysql.slow_log OK
|
|
mysql.tables_priv OK
|
|
mysql.time_zone OK
|
|
mysql.time_zone_leap_second OK
|
|
mysql.time_zone_name OK
|
|
mysql.time_zone_transition OK
|
|
mysql.time_zone_transition_type OK
|
|
mysql.user OK
|
|
End of tests
|