Commit c21b9271 authored by Sergei Golubchik's avatar Sergei Golubchik

mysql_upgrade cleanup

parent f0d774d4
...@@ -109,6 +109,7 @@ static struct my_option my_long_options[]= ...@@ -109,6 +109,7 @@ static struct my_option my_long_options[]=
&opt_force, &opt_force, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, &opt_force, &opt_force, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"host", 'h', "Connect to host.", 0, {"host", 'h', "Connect to host.", 0,
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#define PASSWORD_OPT 12
{"password", 'p', {"password", 'p',
"Password to use when connecting to server. If password is not given," "Password to use when connecting to server. If password is not given,"
" it's solicited on the tty.", &opt_password,&opt_password, " it's solicited on the tty.", &opt_password,&opt_password,
...@@ -146,6 +147,7 @@ static struct my_option my_long_options[]= ...@@ -146,6 +147,7 @@ static struct my_option my_long_options[]=
"do not try to upgrade the data.", "do not try to upgrade the data.",
&opt_systables_only, &opt_systables_only, 0, &opt_systables_only, &opt_systables_only, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
#define USER_OPT (array_elements(my_long_options) - 6)
{"user", 'u', "User for login if not current user.", &opt_user, {"user", 'u', "User for login if not current user.", &opt_user,
&opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, &opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"verbose", 'v', "Display more output about the process.", {"verbose", 'v', "Display more output about the process.",
...@@ -235,26 +237,15 @@ static void verbose(const char *fmt, ...) ...@@ -235,26 +237,15 @@ static void verbose(const char *fmt, ...)
static void add_one_option(DYNAMIC_STRING* ds, static void add_one_option(DYNAMIC_STRING* ds,
const struct my_option *opt, const struct my_option *opt,
const char* argument) const char* arg)
{ {
const char* eq= NullS; dynstr_append(ds, "--");
const char* arg= NullS; dynstr_append(ds, opt->name);
if (opt->arg_type != NO_ARG) if (arg)
{ {
eq= "="; dynstr_append(ds, "=");
switch (opt->var_type & GET_TYPE_MASK) { dynstr_append_os_quoted(ds, arg, NullS);
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__);
}
} }
dynstr_append_os_quoted(ds, "--", opt->name, eq, arg, NullS);
dynstr_append(ds, " "); dynstr_append(ds, " ");
} }
...@@ -288,7 +279,6 @@ get_one_option(int optid, const struct my_option *opt, ...@@ -288,7 +279,6 @@ get_one_option(int optid, const struct my_option *opt,
case 'p': case 'p':
if (argument == disabled_my_option) if (argument == disabled_my_option)
argument= (char*) ""; /* Don't require password */ argument= (char*) ""; /* Don't require password */
tty_password= 1;
add_option= FALSE; add_option= FALSE;
if (argument) if (argument)
{ {
...@@ -298,6 +288,8 @@ get_one_option(int optid, const struct my_option *opt, ...@@ -298,6 +288,8 @@ get_one_option(int optid, const struct my_option *opt,
*argument++= 'x'; /* Destroy argument */ *argument++= 'x'; /* Destroy argument */
tty_password= 0; tty_password= 0;
} }
else
tty_password= 1;
break; break;
case 't': case 't':
...@@ -351,7 +343,7 @@ get_one_option(int optid, const struct my_option *opt, ...@@ -351,7 +343,7 @@ get_one_option(int optid, const struct my_option *opt,
if (add_option) if (add_option)
{ {
/* /*
This is an option that is accpted by mysql_upgrade just so This is an option that is accepted by mysql_upgrade just so
it can be passed on to "mysql" and "mysqlcheck" it can be passed on to "mysql" and "mysqlcheck"
Save it in the ds_args string Save it in the ds_args string
*/ */
...@@ -415,11 +407,8 @@ static int run_tool(char *tool_path, DYNAMIC_STRING *ds_res, ...) ...@@ -415,11 +407,8 @@ static int run_tool(char *tool_path, DYNAMIC_STRING *ds_res, ...)
while ((arg= va_arg(args, char *))) while ((arg= va_arg(args, char *)))
{ {
/* Options should be os quoted */ /* Options should already be os quoted */
if (strncmp(arg, "--", 2) == 0) dynstr_append(&ds_cmdline, arg);
dynstr_append_os_quoted(&ds_cmdline, arg, NullS);
else
dynstr_append(&ds_cmdline, arg);
dynstr_append(&ds_cmdline, " "); dynstr_append(&ds_cmdline, " ");
} }
...@@ -1031,12 +1020,12 @@ int main(int argc, char **argv) ...@@ -1031,12 +1020,12 @@ int main(int argc, char **argv)
{ {
opt_password= get_tty_password(NullS); opt_password= get_tty_password(NullS);
/* add password to defaults file */ /* add password to defaults file */
dynstr_append_os_quoted(&ds_args, "--password=", opt_password, NullS); add_one_option(&ds_args, &my_long_options[PASSWORD_OPT], opt_password);
dynstr_append(&ds_args, " "); DBUG_ASSERT(strcmp(my_long_options[PASSWORD_OPT].name, "password") == 0);
} }
/* add user to defaults file */ /* add user to defaults file */
dynstr_append_os_quoted(&ds_args, "--user=", opt_user, NullS); add_one_option(&ds_args, &my_long_options[USER_OPT], opt_user);
dynstr_append(&ds_args, " "); DBUG_ASSERT(strcmp(my_long_options[USER_OPT].name, "user") == 0);
/* Find mysql */ /* Find mysql */
find_tool(mysql_path, IF_WIN("mysql.exe", "mysql"), self_name); find_tool(mysql_path, IF_WIN("mysql.exe", "mysql"), self_name);
......
...@@ -36,7 +36,7 @@ Phase 4/4: Running 'mysql_fix_privilege_tables' ...@@ -36,7 +36,7 @@ Phase 4/4: Running 'mysql_fix_privilege_tables'
OK OK
Run it again - should say already completed 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 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 Force should run it regardless of whether it has been run before
Phase 1/4: Fixing views Phase 1/4: Fixing views
Phase 2/4: Fixing table and database names Phase 2/4: Fixing table and database names
Phase 3/4: Checking and upgrading tables Phase 3/4: Checking and upgrading tables
......
...@@ -19,7 +19,7 @@ file_exists $MYSQLD_DATADIR/mysql_upgrade_info; ...@@ -19,7 +19,7 @@ file_exists $MYSQLD_DATADIR/mysql_upgrade_info;
# It should have created a file in the MySQL Servers datadir # It should have created a file in the MySQL Servers datadir
file_exists $MYSQLD_DATADIR/mysql_upgrade_info; file_exists $MYSQLD_DATADIR/mysql_upgrade_info;
--echo Force should run it regardless of wether it's been run before --echo Force should run it regardless of whether it has been run before
--exec $MYSQL_UPGRADE --force 2>&1 --exec $MYSQL_UPGRADE --force 2>&1
# It should have created a file in the MySQL Servers datadir # It should have created a file in the MySQL Servers datadir
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment