diff --git a/sql/sql_db.cc b/sql/sql_db.cc index 1f345a28d2c..3bdd800cd2f 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -1009,6 +1009,9 @@ err: replication slave SQL thread (for that thread, setting of thd->db is done in ::exec_event() methods of log_event.cc). + This function does not send the error message to the client, if that + should be sent to the client, call net_send_error after this function + RETURN VALUES 0 ok 1 error diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 851be2b3434..bef35dcfd0d 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -260,13 +260,15 @@ int check_user(THD *thd, enum enum_server_command command, #ifdef NO_EMBEDDED_ACCESS_CHECKS thd->master_access= GLOBAL_ACLS; // Full rights - /* Change database if necessary: OK or FAIL is sent in mysql_change_db */ + /* Change database if necessary */ if (db && db[0]) { thd->db= 0; thd->db_length= 0; if (mysql_change_db(thd, db)) { + /* Send the error to the client */ + net_send_error(thd); if (thd->user_connect) decrease_user_connections(thd->user_connect); DBUG_RETURN(-1); @@ -395,11 +397,13 @@ int check_user(THD *thd, enum enum_server_command command, check_for_max_user_connections(thd, thd->user_connect)) DBUG_RETURN(-1); - /* Change database if necessary: OK or FAIL is sent in mysql_change_db */ + /* Change database if necessary */ if (db && db[0]) { if (mysql_change_db(thd, db)) { + /* Send error to the client */ + net_send_error(thd); if (thd->user_connect) decrease_user_connections(thd->user_connect); DBUG_RETURN(-1);