Loading client/mysql.cc +21 −18 Original line number Diff line number Diff line Loading @@ -1581,6 +1581,22 @@ static int reconnect(void) 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 Loading Loading @@ -1905,6 +1921,10 @@ com_go(String *buffer,char *line __attribute__((unused))) if (err >= 1) error= put_error(&mysql); if (!error && !status.batch && (mysql.server_status & SERVER_STATUS_DB_DROPPED)) get_current_db(); return error; /* New command follows */ } Loading Loading @@ -2621,24 +2641,7 @@ com_use(String *buffer __attribute__((unused)), char *line) under our feet, for example if DROP DATABASE or RENAME DATABASE (latter one not yet available by the time the comment was written) */ /* Let's reset current_db, assume it's gone */ 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); } get_current_db(); if (!current_db || cmp_database(charset_info, current_db,tmp)) { Loading include/mysql_com.h +1 −0 Original line number Diff line number Diff line Loading @@ -130,6 +130,7 @@ enum enum_server_command #define SERVER_MORE_RESULTS_EXISTS 8 /* Multi query - next query exists */ #define SERVER_QUERY_NO_GOOD_INDEX_USED 16 #define SERVER_QUERY_NO_INDEX_USED 32 #define SERVER_STATUS_DB_DROPPED 256 /* A database was dropped */ #define MYSQL_ERRMSG_SIZE 512 #define NET_READ_TIMEOUT 30 /* Timeout on read */ Loading sql/sql_db.cc +2 −0 Original line number Diff line number Diff line Loading @@ -668,7 +668,9 @@ int mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent) thd->clear_error(); mysql_bin_log.write(&qinfo); } thd->server_status|= SERVER_STATUS_DB_DROPPED; send_ok(thd, (ulong) deleted); thd->server_status&= ~SERVER_STATUS_DB_DROPPED; } exit: Loading Loading
client/mysql.cc +21 −18 Original line number Diff line number Diff line Loading @@ -1581,6 +1581,22 @@ static int reconnect(void) 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 Loading Loading @@ -1905,6 +1921,10 @@ com_go(String *buffer,char *line __attribute__((unused))) if (err >= 1) error= put_error(&mysql); if (!error && !status.batch && (mysql.server_status & SERVER_STATUS_DB_DROPPED)) get_current_db(); return error; /* New command follows */ } Loading Loading @@ -2621,24 +2641,7 @@ com_use(String *buffer __attribute__((unused)), char *line) under our feet, for example if DROP DATABASE or RENAME DATABASE (latter one not yet available by the time the comment was written) */ /* Let's reset current_db, assume it's gone */ 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); } get_current_db(); if (!current_db || cmp_database(charset_info, current_db,tmp)) { Loading
include/mysql_com.h +1 −0 Original line number Diff line number Diff line Loading @@ -130,6 +130,7 @@ enum enum_server_command #define SERVER_MORE_RESULTS_EXISTS 8 /* Multi query - next query exists */ #define SERVER_QUERY_NO_GOOD_INDEX_USED 16 #define SERVER_QUERY_NO_INDEX_USED 32 #define SERVER_STATUS_DB_DROPPED 256 /* A database was dropped */ #define MYSQL_ERRMSG_SIZE 512 #define NET_READ_TIMEOUT 30 /* Timeout on read */ Loading
sql/sql_db.cc +2 −0 Original line number Diff line number Diff line Loading @@ -668,7 +668,9 @@ int mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent) thd->clear_error(); mysql_bin_log.write(&qinfo); } thd->server_status|= SERVER_STATUS_DB_DROPPED; send_ok(thd, (ulong) deleted); thd->server_status&= ~SERVER_STATUS_DB_DROPPED; } exit: Loading