mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
WL#4738 streamline/simplify @@variable creation process
Bug#16565 mysqld --help --verbose does not order variablesBug#20413 sql_slave_skip_counter is not shown in show variables Bug#20415 Output of mysqld --help --verbose is incomplete Bug#25430 variable not found in SELECT @@global.ft_max_word_len; Bug#32902 plugin variables don't know their names Bug#34599 MySQLD Option and Variable Reference need to be consistent in formatting! Bug#34829 No default value for variable and setting default does not raise error Bug#34834 ? Is accepted as a valid sql mode Bug#34878 Few variables have default value according to documentation but error occurs Bug#34883 ft_boolean_syntax cant be assigned from user variable to global var. Bug#37187 `INFORMATION_SCHEMA`.`GLOBAL_VARIABLES`: inconsistent status Bug#40988 log_output_basic.test succeeded though syntactically false. Bug#41010 enum-style command-line options are not honoured (maria.maria-recover fails) Bug#42103 Setting key_buffer_size to a negative value may lead to very large allocations Bug#44691 Some plugins configured as MYSQL_PLUGIN_MANDATORY in can be disabled Bug#44797 plugins w/o command-line options have no disabling option in --help Bug#46314 string system variables don't support expressions Bug#46470 sys_vars.max_binlog_cache_size_basic_32 is broken Bug#46586 When using the plugin interface the type "set" for options caused a crash. Bug#47212 Crash in DBUG_PRINT in mysqltest.cc when trying to print octal number Bug#48758 mysqltest crashes on sys_vars.collation_server_basic in gcov builds Bug#49417 some complaints about mysqld --help --verbose output Bug#49540 DEFAULT value of binlog_format isn't the default value Bug#49640 ambiguous option '--skip-skip-myisam' (double skip prefix) Bug#49644 init_connect and \0 Bug#49645 init_slave and multi-byte characters Bug#49646 mysql --show-warnings crashes when server dies
This commit is contained in:
@ -36,7 +36,6 @@ struct pos_arg_info
|
||||
uint have_longlong; /* used from integer values */
|
||||
char *str_arg; /* string value of the arg */
|
||||
longlong longlong_arg; /* integer value of the arg */
|
||||
double double_arg; /* double value of the arg */
|
||||
};
|
||||
|
||||
|
||||
@ -235,19 +234,23 @@ static char *process_int_arg(char *to, char *end, size_t length,
|
||||
store_start= buff;
|
||||
|
||||
if (arg_type == 'd')
|
||||
store_end= int10_to_str(par, store_start, -10);
|
||||
store_end= longlong10_to_str(par, store_start, -10);
|
||||
else if (arg_type == 'u')
|
||||
store_end= int10_to_str(par, store_start, 10);
|
||||
store_end= longlong10_to_str(par, store_start, 10);
|
||||
else if (arg_type == 'p')
|
||||
{
|
||||
store_start[0]= '0';
|
||||
store_start[1]= 'x';
|
||||
store_end= int2str(par, store_start + 2, 16, 0);
|
||||
store_end= ll2str(par, store_start + 2, 16, 0);
|
||||
}
|
||||
else if (arg_type == 'o')
|
||||
{
|
||||
store_end= ll2str(par, store_start, 8, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
DBUG_ASSERT(arg_type == 'X' || arg_type =='x');
|
||||
store_end= int2str(par, store_start, 16, (arg_type == 'X'));
|
||||
store_end= ll2str(par, store_start, 16, (arg_type == 'X'));
|
||||
}
|
||||
|
||||
if ((res_length= (size_t) (store_end - store_start)) > to_length)
|
||||
@ -369,14 +372,11 @@ start:
|
||||
case 'b':
|
||||
args_arr[i].str_arg= va_arg(ap, char *);
|
||||
break;
|
||||
case 'f':
|
||||
case 'g':
|
||||
args_arr[i].double_arg= va_arg(ap, double);
|
||||
break;
|
||||
case 'd':
|
||||
case 'u':
|
||||
case 'x':
|
||||
case 'X':
|
||||
case 'o':
|
||||
case 'p':
|
||||
if (args_arr[i].have_longlong)
|
||||
args_arr[i].longlong_arg= va_arg(ap,longlong);
|
||||
@ -395,21 +395,23 @@ start:
|
||||
/* Print result string */
|
||||
for (i= 0; i <= idx; i++)
|
||||
{
|
||||
uint width= 0, length= 0;
|
||||
size_t width= 0, length= 0;
|
||||
switch (print_arr[i].arg_type) {
|
||||
case 's':
|
||||
{
|
||||
char *par= args_arr[print_arr[i].arg_idx].str_arg;
|
||||
width= (print_arr[i].flags & WIDTH_ARG) ?
|
||||
args_arr[print_arr[i].width].longlong_arg : print_arr[i].width;
|
||||
width= (print_arr[i].flags & WIDTH_ARG)
|
||||
? (size_t)args_arr[print_arr[i].width].longlong_arg
|
||||
: print_arr[i].width;
|
||||
to= process_str_arg(cs, to, end, width, par, print_arr[i].flags);
|
||||
break;
|
||||
}
|
||||
case 'b':
|
||||
{
|
||||
char *par = args_arr[print_arr[i].arg_idx].str_arg;
|
||||
width= (print_arr[i].flags & WIDTH_ARG) ?
|
||||
args_arr[print_arr[i].width].longlong_arg : print_arr[i].width;
|
||||
width= (print_arr[i].flags & WIDTH_ARG)
|
||||
? (size_t)args_arr[print_arr[i].width].longlong_arg
|
||||
: print_arr[i].width;
|
||||
to= process_bin_arg(to, end, width, par);
|
||||
break;
|
||||
}
|
||||
@ -424,12 +426,14 @@ start:
|
||||
case 'u':
|
||||
case 'x':
|
||||
case 'X':
|
||||
case 'o':
|
||||
case 'p':
|
||||
{
|
||||
/* Integer parameter */
|
||||
longlong larg;
|
||||
length= (print_arr[i].flags & LENGTH_ARG) ?
|
||||
args_arr[print_arr[i].length].longlong_arg : print_arr[i].length;
|
||||
length= (print_arr[i].flags & LENGTH_ARG)
|
||||
? (size_t)args_arr[print_arr[i].length].longlong_arg
|
||||
: print_arr[i].length;
|
||||
|
||||
if (args_arr[print_arr[i].arg_idx].have_longlong)
|
||||
larg = args_arr[print_arr[i].arg_idx].longlong_arg;
|
||||
@ -571,7 +575,7 @@ size_t my_vsnprintf_ex(CHARSET_INFO *cs, char *to, size_t n,
|
||||
continue;
|
||||
}
|
||||
else if (*fmt == 'd' || *fmt == 'u' || *fmt == 'x' || *fmt == 'X' ||
|
||||
*fmt == 'p')
|
||||
*fmt == 'p' || *fmt == 'o')
|
||||
{
|
||||
/* Integer parameter */
|
||||
longlong larg;
|
||||
|
Reference in New Issue
Block a user