mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/usr/home/ram/work/4.1.b4802 client/mysql.cc: Auto merged include/mysql_com.h: Auto merged sql/sql_db.cc: Auto merged BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted
This commit is contained in:
@ -180,6 +180,7 @@ ram@gw.mysql.r18.ru
|
|||||||
ram@gw.udmsearch.izhnet.ru
|
ram@gw.udmsearch.izhnet.ru
|
||||||
ram@mysql.r18.ru
|
ram@mysql.r18.ru
|
||||||
ram@ram.(none)
|
ram@ram.(none)
|
||||||
|
ramil@mysql.com
|
||||||
ranger@regul.home.lan
|
ranger@regul.home.lan
|
||||||
rburnett@build.mysql.com
|
rburnett@build.mysql.com
|
||||||
reggie@bob.(none)
|
reggie@bob.(none)
|
||||||
|
@ -1581,6 +1581,22 @@ static int reconnect(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void get_current_db()
|
||||||
|
{
|
||||||
|
MYSQL_RES *res;
|
||||||
|
|
||||||
|
my_free(current_db, MYF(MY_ALLOW_ZERO_PTR));
|
||||||
|
current_db= NULL;
|
||||||
|
/* In case of error below current_db will be NULL */
|
||||||
|
if (!mysql_query(&mysql, "SELECT DATABASE()") &&
|
||||||
|
(res= mysql_use_result(&mysql)))
|
||||||
|
{
|
||||||
|
MYSQL_ROW row= mysql_fetch_row(res);
|
||||||
|
if (row[0])
|
||||||
|
current_db= my_strdup(row[0], MYF(MY_WME));
|
||||||
|
mysql_free_result(res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
The different commands
|
The different commands
|
||||||
@ -1905,6 +1921,9 @@ com_go(String *buffer,char *line __attribute__((unused)))
|
|||||||
if (err >= 1)
|
if (err >= 1)
|
||||||
error= put_error(&mysql);
|
error= put_error(&mysql);
|
||||||
|
|
||||||
|
if (!status.batch && (mysql.server_status & SERVER_STATUS_DB_DROPPED))
|
||||||
|
get_current_db();
|
||||||
|
|
||||||
return error; /* New command follows */
|
return error; /* New command follows */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2621,24 +2640,7 @@ com_use(String *buffer __attribute__((unused)), char *line)
|
|||||||
under our feet, for example if DROP DATABASE or RENAME DATABASE
|
under our feet, for example if DROP DATABASE or RENAME DATABASE
|
||||||
(latter one not yet available by the time the comment was written)
|
(latter one not yet available by the time the comment was written)
|
||||||
*/
|
*/
|
||||||
/* Let's reset current_db, assume it's gone */
|
get_current_db();
|
||||||
my_free(current_db, MYF(MY_ALLOW_ZERO_PTR));
|
|
||||||
current_db= 0;
|
|
||||||
/*
|
|
||||||
We don't care about in case of an error below because current_db
|
|
||||||
was just set to 0.
|
|
||||||
*/
|
|
||||||
if (!mysql_query(&mysql, "SELECT DATABASE()") &&
|
|
||||||
(res= mysql_use_result(&mysql)))
|
|
||||||
{
|
|
||||||
row= mysql_fetch_row(res);
|
|
||||||
if (row[0])
|
|
||||||
{
|
|
||||||
current_db= my_strdup(row[0], MYF(MY_WME));
|
|
||||||
}
|
|
||||||
(void) mysql_fetch_row(res); // Read eof
|
|
||||||
mysql_free_result(res);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!current_db || cmp_database(charset_info, current_db,tmp))
|
if (!current_db || cmp_database(charset_info, current_db,tmp))
|
||||||
{
|
{
|
||||||
|
@ -130,6 +130,7 @@ enum enum_server_command
|
|||||||
#define SERVER_MORE_RESULTS_EXISTS 8 /* Multi query - next query exists */
|
#define SERVER_MORE_RESULTS_EXISTS 8 /* Multi query - next query exists */
|
||||||
#define SERVER_QUERY_NO_GOOD_INDEX_USED 16
|
#define SERVER_QUERY_NO_GOOD_INDEX_USED 16
|
||||||
#define SERVER_QUERY_NO_INDEX_USED 32
|
#define SERVER_QUERY_NO_INDEX_USED 32
|
||||||
|
#define SERVER_STATUS_DB_DROPPED 256 /* A database was dropped */
|
||||||
|
|
||||||
#define MYSQL_ERRMSG_SIZE 512
|
#define MYSQL_ERRMSG_SIZE 512
|
||||||
#define NET_READ_TIMEOUT 30 /* Timeout on read */
|
#define NET_READ_TIMEOUT 30 /* Timeout on read */
|
||||||
|
@ -668,7 +668,9 @@ int mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent)
|
|||||||
thd->clear_error();
|
thd->clear_error();
|
||||||
mysql_bin_log.write(&qinfo);
|
mysql_bin_log.write(&qinfo);
|
||||||
}
|
}
|
||||||
|
thd->server_status|= SERVER_STATUS_DB_DROPPED;
|
||||||
send_ok(thd, (ulong) deleted);
|
send_ok(thd, (ulong) deleted);
|
||||||
|
thd->server_status&= !SERVER_STATUS_DB_DROPPED;
|
||||||
}
|
}
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
|
Reference in New Issue
Block a user