Bug#51631 general-log flag doesn't accept "on" as a value in
the my.cnf, works as command Different parsing mechanisms are used for command line/my.cnf options and the SQL commands. The former only accepted numeric arguments, and regarded all numbers different from 0 as 'true'. Any other argument was parsed as 'false' . This patch adds the words 'true' and 'on' as valid truth values for boolean option arguments. A test case is not provided, as the fix is simple and does not warrant a separate test file (no existing suitable test file was found) (backported from mysql-trunk)
This commit is contained in:
parent
6bbfe7c62a
commit
296d494e66
@ -602,6 +602,24 @@ static char *check_struct_option(char *cur_arg, char *key_name)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Parse a boolean command line argument
|
||||
|
||||
"ON", "TRUE" and "1" will return true,
|
||||
other values will return false.
|
||||
|
||||
@param[in] argument The value argument
|
||||
@return boolean value
|
||||
*/
|
||||
static my_bool get_bool_argument(const char *argument)
|
||||
{
|
||||
if (!my_strcasecmp(&my_charset_latin1, argument, "true") ||
|
||||
!my_strcasecmp(&my_charset_latin1, argument, "on"))
|
||||
return 1;
|
||||
else
|
||||
return (my_bool) atoi(argument);
|
||||
}
|
||||
|
||||
/*
|
||||
function: setval
|
||||
|
||||
@ -629,7 +647,7 @@ static int setval(const struct my_option *opts, void *value, char *argument,
|
||||
|
||||
switch ((opts->var_type & GET_TYPE_MASK)) {
|
||||
case GET_BOOL: /* If argument differs from 0, enable option, else disable */
|
||||
*((my_bool*) value)= (my_bool) atoi(argument) != 0;
|
||||
*((my_bool*) value)= get_bool_argument(argument);
|
||||
break;
|
||||
case GET_INT:
|
||||
*((int*) value)= (int) getopt_ll(argument, opts, &err);
|
||||
|
Loading…
x
Reference in New Issue
Block a user