mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.1-marvel
into ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-5.1-marvel
This commit is contained in:
@@ -885,14 +885,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
opt_nopager= 1;
|
||||
break;
|
||||
case OPT_MYSQL_PROTOCOL:
|
||||
{
|
||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||
opt->name);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'A':
|
||||
opt_rehash= 0;
|
||||
|
@@ -284,15 +284,10 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
#endif
|
||||
break;
|
||||
case OPT_MYSQL_PROTOCOL:
|
||||
{
|
||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||
opt->name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (error)
|
||||
{
|
||||
usage();
|
||||
|
@@ -948,14 +948,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
remote_opt= 1;
|
||||
break;
|
||||
case OPT_MYSQL_PROTOCOL:
|
||||
{
|
||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||
opt->name);
|
||||
break;
|
||||
}
|
||||
case OPT_START_DATETIME:
|
||||
start_datetime= convert_str_to_timestamp(start_datetime_str);
|
||||
break;
|
||||
|
@@ -310,15 +310,10 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
break;
|
||||
case 'V': print_version(); exit(0);
|
||||
case OPT_MYSQL_PROTOCOL:
|
||||
{
|
||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||
opt->name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@@ -790,14 +790,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
break;
|
||||
}
|
||||
case (int) OPT_MYSQL_PROTOCOL:
|
||||
{
|
||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||
opt->name);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@@ -231,14 +231,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
break;
|
||||
#endif
|
||||
case OPT_MYSQL_PROTOCOL:
|
||||
{
|
||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||
opt->name);
|
||||
break;
|
||||
}
|
||||
case '#':
|
||||
DBUG_PUSH(argument ? argument : "d:t:o");
|
||||
break;
|
||||
|
@@ -287,14 +287,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
#endif
|
||||
break;
|
||||
case OPT_MYSQL_PROTOCOL:
|
||||
{
|
||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||
opt->name);
|
||||
break;
|
||||
}
|
||||
case '#':
|
||||
DBUG_PUSH(argument ? argument : "d:t:o");
|
||||
break;
|
||||
|
@@ -568,14 +568,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
#endif
|
||||
break;
|
||||
case OPT_MYSQL_PROTOCOL:
|
||||
{
|
||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||
opt->name);
|
||||
break;
|
||||
case '#':
|
||||
DBUG_PUSH(argument ? argument : default_dbug_option);
|
||||
break;
|
||||
|
@@ -26,6 +26,8 @@ typedef struct st_typelib { /* Different types saved here */
|
||||
unsigned int *type_lengths;
|
||||
} TYPELIB;
|
||||
|
||||
extern int find_type_or_exit(const char *x, TYPELIB *typelib,
|
||||
const char *option);
|
||||
extern int find_type(char *x,TYPELIB *typelib,unsigned int full_name);
|
||||
extern void make_type(char *to,unsigned int nr,TYPELIB *typelib);
|
||||
extern const char *get_type(TYPELIB *typelib,unsigned int nr);
|
||||
|
@@ -7,3 +7,4 @@ SOCKET
|
||||
ERROR 2047 (HY000): Wrong or unknown protocol
|
||||
ERROR 2047 (HY000): Wrong or unknown protocol
|
||||
Unknown option to protocol: NullS
|
||||
Alternatives are: 'TCP','SOCKET','PIPE','MEMORY'
|
||||
|
@@ -20,6 +20,28 @@
|
||||
#include <m_ctype.h>
|
||||
|
||||
|
||||
int find_type_or_exit(const char *x, TYPELIB *typelib, const char *option)
|
||||
{
|
||||
int res;
|
||||
const char **ptr;
|
||||
|
||||
if ((res= find_type((my_string) x, typelib, 2)) <= 0)
|
||||
{
|
||||
ptr= typelib->type_names;
|
||||
if (!*x)
|
||||
fprintf(stderr, "No option given to %s\n", option);
|
||||
else
|
||||
fprintf(stderr, "Unknown option to %s: %s\n", option, x);
|
||||
fprintf(stderr, "Alternatives are: '%s'", *ptr);
|
||||
while (*++ptr)
|
||||
fprintf(stderr, ",'%s'", *ptr);
|
||||
fprintf(stderr, "\n");
|
||||
exit(1);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Search after a string in a list of strings. Endspace in x is not compared.
|
||||
|
||||
|
118
sql/mysqld.cc
118
sql/mysqld.cc
@@ -737,6 +737,8 @@ pthread_handler_t handle_connections_shared_memory(void *arg);
|
||||
#endif
|
||||
pthread_handler_t handle_slave(void *arg);
|
||||
static ulong find_bit_type(const char *x, TYPELIB *bit_lib);
|
||||
static ulong find_bit_type_or_exit(const char *x, TYPELIB *bit_lib,
|
||||
const char *option);
|
||||
static void clean_up(bool print_message);
|
||||
static int test_if_case_insensitive(const char *dir_name);
|
||||
|
||||
@@ -7422,11 +7424,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
case (int) OPT_INIT_RPL_ROLE:
|
||||
{
|
||||
int role;
|
||||
if ((role=find_type(argument, &rpl_role_typelib, 2)) <= 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown replication role: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
role= find_type_or_exit(argument, &rpl_role_typelib, opt->name);
|
||||
rpl_status = (role == 1) ? RPL_AUTH_MASTER : RPL_IDLE_SLAVE;
|
||||
break;
|
||||
}
|
||||
@@ -7482,17 +7480,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
case OPT_BINLOG_FORMAT:
|
||||
{
|
||||
int id;
|
||||
if ((id= find_type(argument, &binlog_format_typelib, 2)) <= 0)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"Unknown binary log format: '%s' "
|
||||
"(should be one of '%s', '%s', '%s')\n",
|
||||
argument,
|
||||
binlog_format_names[BINLOG_FORMAT_STMT],
|
||||
binlog_format_names[BINLOG_FORMAT_ROW],
|
||||
binlog_format_names[BINLOG_FORMAT_MIXED]);
|
||||
exit(1);
|
||||
}
|
||||
id= find_type_or_exit(argument, &binlog_format_typelib, opt->name);
|
||||
global_system_variables.binlog_format= opt_binlog_format_id= id - 1;
|
||||
break;
|
||||
}
|
||||
@@ -7552,13 +7540,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
else
|
||||
{
|
||||
log_output_str= argument;
|
||||
if ((log_output_options=
|
||||
find_bit_type(argument, &log_output_typelib)) == ~(ulong) 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to log-output: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
log_output_options=
|
||||
find_bit_type_or_exit(argument, &log_output_typelib, opt->name);
|
||||
}
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
@@ -7572,10 +7556,8 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
type= 5 1 2 3 4
|
||||
(DISABLE ) - (OFF | ON) - (0 | 1)
|
||||
*/
|
||||
switch ((type=find_type(argument, &Events::opt_typelib, 1))) {
|
||||
case 0:
|
||||
fprintf(stderr, "Unknown option to event-scheduler: %s\n",argument);
|
||||
exit(1);
|
||||
type= find_type_or_exit(argument, &Events::opt_typelib, opt->name);
|
||||
switch (type) {
|
||||
case 5: /* OPT_DISABLED */
|
||||
Events::opt_event_scheduler= Events::EVENTS_DISABLED;
|
||||
break;
|
||||
@@ -7725,11 +7707,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
else
|
||||
{
|
||||
int type;
|
||||
if ((type=find_type(argument, &delay_key_write_typelib, 2)) <= 0)
|
||||
{
|
||||
fprintf(stderr,"Unknown delay_key_write type: %s\n",argument);
|
||||
exit(1);
|
||||
}
|
||||
type= find_type_or_exit(argument, &delay_key_write_typelib, opt->name);
|
||||
delay_key_write_options= (uint) type-1;
|
||||
}
|
||||
break;
|
||||
@@ -7740,11 +7718,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
case OPT_TX_ISOLATION:
|
||||
{
|
||||
int type;
|
||||
if ((type=find_type(argument, &tx_isolation_typelib, 2)) <= 0)
|
||||
{
|
||||
fprintf(stderr,"Unknown transaction isolation type: %s\n",argument);
|
||||
exit(1);
|
||||
}
|
||||
type= find_type_or_exit(argument, &tx_isolation_typelib, opt->name);
|
||||
global_system_variables.tx_isolation= (type-1);
|
||||
break;
|
||||
}
|
||||
@@ -7785,16 +7759,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
break;
|
||||
case OPT_NDB_DISTRIBUTION:
|
||||
int id;
|
||||
if ((id= find_type(argument, &ndb_distribution_typelib, 2)) <= 0)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"Unknown ndb distribution type: '%s' "
|
||||
"(should be '%s' or '%s')\n",
|
||||
argument,
|
||||
ndb_distribution_names[ND_KEYHASH],
|
||||
ndb_distribution_names[ND_LINHASH]);
|
||||
exit(1);
|
||||
}
|
||||
id= find_type_or_exit(argument, &ndb_distribution_typelib, opt->name);
|
||||
opt_ndb_distribution_id= (enum ndb_distribution)(id-1);
|
||||
break;
|
||||
case OPT_NDB_EXTRA_LOGGING:
|
||||
@@ -7834,12 +7799,8 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
else
|
||||
{
|
||||
myisam_recover_options_str=argument;
|
||||
if ((myisam_recover_options=
|
||||
find_bit_type(argument, &myisam_recover_typelib)) == ~(ulong) 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to myisam-recover: %s\n",argument);
|
||||
exit(1);
|
||||
}
|
||||
myisam_recover_options=
|
||||
find_bit_type_or_exit(argument, &myisam_recover_typelib, opt->name);
|
||||
}
|
||||
ha_open_options|=HA_OPEN_ABORT_IF_CRASHED;
|
||||
break;
|
||||
@@ -7852,14 +7813,10 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
myisam_concurrent_insert= 0; /* --skip-concurrent-insert */
|
||||
break;
|
||||
case OPT_TC_HEURISTIC_RECOVER:
|
||||
{
|
||||
if ((tc_heuristic_recover=find_type(argument,
|
||||
&tc_heuristic_recover_typelib, 2)) <=0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to tc-heuristic-recover: %s\n",argument);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
tc_heuristic_recover= find_type_or_exit(argument,
|
||||
&tc_heuristic_recover_typelib,
|
||||
opt->name);
|
||||
break;
|
||||
case OPT_MYISAM_STATS_METHOD:
|
||||
{
|
||||
ulong method_conv;
|
||||
@@ -7867,11 +7824,8 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
LINT_INIT(method_conv);
|
||||
|
||||
myisam_stats_method_str= argument;
|
||||
if ((method=find_type(argument, &myisam_stats_method_typelib, 2)) <= 0)
|
||||
{
|
||||
fprintf(stderr, "Invalid value of myisam_stats_method: %s.\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
method= find_type_or_exit(argument, &myisam_stats_method_typelib,
|
||||
opt->name);
|
||||
switch (method-1) {
|
||||
case 2:
|
||||
method_conv= MI_STATS_METHOD_IGNORE_NULLS;
|
||||
@@ -7890,12 +7844,8 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
case OPT_SQL_MODE:
|
||||
{
|
||||
sql_mode_str= argument;
|
||||
if ((global_system_variables.sql_mode=
|
||||
find_bit_type(argument, &sql_mode_typelib)) == ~(ulong) 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to sql-mode: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
global_system_variables.sql_mode=
|
||||
find_bit_type_or_exit(argument, &sql_mode_typelib, opt->name);
|
||||
global_system_variables.sql_mode= fix_sql_mode(global_system_variables.
|
||||
sql_mode);
|
||||
break;
|
||||
@@ -8203,6 +8153,30 @@ static void fix_paths(void)
|
||||
}
|
||||
|
||||
|
||||
static ulong find_bit_type_or_exit(const char *x, TYPELIB *bit_lib,
|
||||
const char *option)
|
||||
{
|
||||
ulong res;
|
||||
|
||||
const char **ptr;
|
||||
|
||||
if ((res= find_bit_type(x, bit_lib)) == ~(ulong) 0)
|
||||
{
|
||||
ptr= bit_lib->type_names;
|
||||
if (!*x)
|
||||
fprintf(stderr, "No option given to %s\n", option);
|
||||
else
|
||||
fprintf(stderr, "Wrong option to %s. Option(s) given: %s\n", option, x);
|
||||
fprintf(stderr, "Alternatives are: '%s'", *ptr);
|
||||
while (*++ptr)
|
||||
fprintf(stderr, ",'%s'", *ptr);
|
||||
fprintf(stderr, "\n");
|
||||
exit(1);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Return a bitfield from a string of substrings separated by ','
|
||||
returns ~(ulong) 0 on error.
|
||||
|
Reference in New Issue
Block a user