From 124fc93dba29b9e00a6b4ab8827be6db905ecfdd Mon Sep 17 00:00:00 2001 From: Guilhem Bichot Date: Wed, 11 Aug 2010 19:56:56 +0200 Subject: [PATCH] fix for Bug #55672 "mysql_upgrade dies with internal error": it couldn't parse the --ssl option. --- client/mysql_upgrade.c | 3 ++ .../include/mysql_upgrade_preparation.inc | 30 +++++++++++++++++ mysql-test/r/mysql_upgrade_ssl.result | 32 +++++++++++++++++++ mysql-test/t/mysql_upgrade.test | 29 +---------------- mysql-test/t/mysql_upgrade_ssl.test | 10 ++++++ 5 files changed, 76 insertions(+), 28 deletions(-) create mode 100644 mysql-test/include/mysql_upgrade_preparation.inc create mode 100644 mysql-test/r/mysql_upgrade_ssl.result create mode 100644 mysql-test/t/mysql_upgrade_ssl.test diff --git a/client/mysql_upgrade.c b/client/mysql_upgrade.c index eeab3611913..882350f813b 100644 --- a/client/mysql_upgrade.c +++ b/client/mysql_upgrade.c @@ -209,6 +209,9 @@ static void add_one_option(DYNAMIC_STRING* ds, case GET_STR: arg= argument; break; + case GET_BOOL: + arg= (*(my_bool *)opt->value) ? "1" : "0"; + break; default: die("internal error at %s: %d",__FILE__, __LINE__); } diff --git a/mysql-test/include/mysql_upgrade_preparation.inc b/mysql-test/include/mysql_upgrade_preparation.inc new file mode 100644 index 00000000000..5de8a79d6e0 --- /dev/null +++ b/mysql-test/include/mysql_upgrade_preparation.inc @@ -0,0 +1,30 @@ +# Include this in any test using mysql_upgrade + +# 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 +} diff --git a/mysql-test/r/mysql_upgrade_ssl.result b/mysql-test/r/mysql_upgrade_ssl.result new file mode 100644 index 00000000000..f1229c4a405 --- /dev/null +++ b/mysql-test/r/mysql_upgrade_ssl.result @@ -0,0 +1,32 @@ +# +# Bug#55672 mysql_upgrade dies with internal error +# +mtr.global_suppressions OK +mtr.test_suppressions OK +mysql.columns_priv OK +mysql.db OK +mysql.event OK +mysql.func OK +mysql.general_log +Error : You can't use locks with log tables. +status : 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.servers OK +mysql.slow_log +Error : You can't use locks with log tables. +status : 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 diff --git a/mysql-test/t/mysql_upgrade.test b/mysql-test/t/mysql_upgrade.test index 3ea612d2ca7..3c6cc45da38 100644 --- a/mysql-test/t/mysql_upgrade.test +++ b/mysql-test/t/mysql_upgrade.test @@ -1,31 +1,4 @@ -# 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 -} +-- source include/mysql_upgrade_preparation.inc # # Basic test that we can run mysql_upgrde and that it finds the diff --git a/mysql-test/t/mysql_upgrade_ssl.test b/mysql-test/t/mysql_upgrade_ssl.test new file mode 100644 index 00000000000..d1c029bf33a --- /dev/null +++ b/mysql-test/t/mysql_upgrade_ssl.test @@ -0,0 +1,10 @@ +# mysql_upgrade tests requiring SSL support + +-- source include/have_ssl_communication.inc +-- source include/mysql_upgrade_preparation.inc + +--echo # +--echo # Bug#55672 mysql_upgrade dies with internal error +--echo # +--exec $MYSQL_UPGRADE --skip-verbose --ssl --force 2>&1 +--exit