Commit b9d94d2b authored by papa@gbichot.local's avatar papa@gbichot.local

Added options reconnect/enable-reconnect/disable-reconnect/skip-reconnect to...

Added options reconnect/enable-reconnect/disable-reconnect/skip-reconnect to the 'mysql' command-line client.
Disabling can be safer when the server silently dies & restarts.
This is for SCRUM task #727.
parent 35636c6b
......@@ -67,6 +67,7 @@ mwagner@evoq.mwagner.org
mwagner@work.mysql.com
nick@mysql.com
nick@nick.leippe.com
papa@gbichot.local
paul@central.snake.net
paul@teton.kitebird.com
pem@mysql.com
......
......@@ -39,4 +39,4 @@ enum options { OPT_CHARSETS_DIR=256, OPT_DEFAULT_CHARSET,
OPT_SSL_CIPHER, OPT_SHUTDOWN_TIMEOUT, OPT_LOCAL_INFILE,
OPT_PROMPT, OPT_IGN_LINES,OPT_TRANSACTION,OPT_MYSQL_PROTOCOL,
OPT_SHARED_MEMORY_BASE_NAME, OPT_FRM, OPT_SKIP_OPTIMIZATION,
OPT_COMPATIBLE };
OPT_COMPATIBLE, OPT_RECONNECT };
......@@ -128,7 +128,7 @@ static my_bool info_flag=0,ignore_errors=0,wait_flag=0,quick=0,
opt_compress=0, using_opt_local_infile=0,
vertical=0, line_numbers=1, column_names=1,opt_html=0,
opt_xml=0,opt_nopager=1, opt_outfile=0, named_cmds= 0,
tty_password= 0, opt_nobeep=0;
tty_password= 0, opt_nobeep=0, opt_reconnect=1;
static uint verbose=0,opt_silent=0,opt_mysql_port=0, opt_local_infile=0;
static my_string opt_mysql_unix_port=0;
static int connect_flag=CLIENT_INTERACTIVE;
......@@ -556,6 +556,8 @@ static struct my_option my_long_options[] =
{"raw", 'r', "Write fields without conversion. Used with --batch",
(gptr*) &opt_raw_data, (gptr*) &opt_raw_data, 0, GET_BOOL, NO_ARG, 0, 0, 0,
0, 0, 0},
{"reconnect", OPT_RECONNECT, "Reconnect if the connection is lost. Disable with --disable-reconnect. This option is enabled by default.",
(gptr*) &opt_reconnect, (gptr*) &opt_reconnect, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
{"silent", 's', "Be more silent.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0,
0, 0},
#ifdef HAVE_SMEM
......@@ -783,6 +785,7 @@ static int get_options(int argc, char **argv)
strmov(pager, "stdout");
opt_nopager= 1;
opt_outfile= 0;
opt_reconnect= 0;
connect_flag= 0; /* Not in interactive mode */
}
if (default_charset)
......@@ -1374,7 +1377,7 @@ char *rindex(const char *s,int c)
static int reconnect(void)
{
if (!status.batch)
if (opt_reconnect)
{
put_info("No connection. Trying to reconnect...",INFO_INFO);
(void) com_connect((String *) 0, 0);
......@@ -1399,7 +1402,7 @@ int mysql_real_query_for_lazy(const char *buf, int length)
return 0;
uint error=put_info(mysql_error(&mysql),INFO_ERROR, mysql_errno(&mysql));
if (mysql_errno(&mysql) != CR_SERVER_GONE_ERROR || retry > 1 ||
status.batch)
!opt_reconnect)
return error;
if (reconnect())
return error;
......@@ -1584,7 +1587,7 @@ com_go(String *buffer,char *line __attribute__((unused)))
if (!connected && reconnect())
{
buffer->length(0); // Remove query on error
return status.batch ? 1 : -1; // Fatal error
return opt_reconnect ? -1 : 1; // Fatal error
}
if (verbose)
(void) com_print(buffer,0);
......@@ -2393,14 +2396,14 @@ com_use(String *buffer __attribute__((unused)), char *line)
be down during query
*/
if (!connected && reconnect())
return status.batch ? 1 : -1; // Fatal error
return opt_reconnect ? -1 : 1; // Fatal error
if (mysql_select_db(&mysql,tmp))
{
if (mysql_errno(&mysql) != CR_SERVER_GONE_ERROR)
return put_info(mysql_error(&mysql),INFO_ERROR,mysql_errno(&mysql));
if (reconnect())
return status.batch ? 1 : -1; // Fatal error
return opt_reconnect ? -1 : 1; // Fatal error
if (mysql_select_db(&mysql,tmp))
return put_info(mysql_error(&mysql),INFO_ERROR,mysql_errno(&mysql));
}
......
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