mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
API change: mysql_shutdown() now needs a 2nd parameter, the shutdown level.
Server will however still accept shutdown without specified level; so that old mysqladmin can still shut server down. I would like your comments on the names of shutdown level which I chose. You are welcome to propose better names. Please however check WL#709 before. Reason for the names I propose is to be accurate, thus leaving possibility for other levels which we may imagine in the future; that's why I have rejected names like "fast", "smart", "graceful" so far. My position is that WAIT_ALL_BUFFERS or WAIT_CRITICAL_BUFFERS say what the shutdown does, whereas for "smart", "fast" you need to remember what it does. This should be pushed in 4.1.3 but only after your comments. client/mysqladmin.c: 2nd parameter for mysql_shutdown() include/mysql.h: 2nd paramater for mysql_shutdown() include/mysql_com.h: 4 types of shutdown libmysql/libmysql.c: passing the requested shutdown level sql/sql_parse.cc: check for the shutdown level in dispatch_command(). Though its value is ignored for now. tools/mysqlmanager.c: 2nd parameter to mysql_shutdown
This commit is contained in:
@@ -1308,6 +1308,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
||||
if (command != COM_STATISTICS && command != COM_PING)
|
||||
query_id++;
|
||||
thread_running++;
|
||||
/* TODO: set thd->lex->sql_command to SQLCOM_PARSE here */
|
||||
VOID(pthread_mutex_unlock(&LOCK_thread_count));
|
||||
|
||||
thd->server_status&=
|
||||
@@ -1478,6 +1479,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
||||
thd->query_length= length;
|
||||
thd->query= packet;
|
||||
thd->query_id= query_id++;
|
||||
/* TODO: set thd->lex->sql_command to SQLCOM_PARSE here */
|
||||
VOID(pthread_mutex_unlock(&LOCK_thread_count));
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
mysql_parse(thd, packet, length);
|
||||
@@ -1631,10 +1633,25 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
||||
}
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
case COM_SHUTDOWN:
|
||||
{
|
||||
statistic_increment(com_other,&LOCK_status);
|
||||
if (check_global_access(thd,SHUTDOWN_ACL))
|
||||
break; /* purecov: inspected */
|
||||
DBUG_PRINT("quit",("Got shutdown command"));
|
||||
enum enum_shutdown_level level= (packet_length >= 2) ?
|
||||
(enum enum_shutdown_level) (uchar) packet[0] : SHUTDOWN_DEFAULT;
|
||||
DBUG_PRINT("quit",("Got shutdown command for level %u", level));
|
||||
/*
|
||||
Accept old mysql_shutdown (with no argument). For now we do nothing of
|
||||
the argument.
|
||||
*/
|
||||
if (level == SHUTDOWN_DEFAULT)
|
||||
level= SHUTDOWN_WAIT_ALL_BUFFERS; // soon default will be configurable
|
||||
else if (level != SHUTDOWN_WAIT_ALL_BUFFERS)
|
||||
{
|
||||
my_error(ER_NOT_SUPPORTED_YET, MYF(0), "this shutdown level");
|
||||
send_error(thd);
|
||||
break;
|
||||
}
|
||||
mysql_log.write(thd,command,NullS);
|
||||
send_eof(thd);
|
||||
#ifdef __WIN__
|
||||
@@ -1650,6 +1667,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
||||
kill_mysql();
|
||||
error=TRUE;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
case COM_STATISTICS:
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user