Commit 7b8f4c6d authored by unknown's avatar unknown
Browse files

BUG#9455 mysqladmin status crash the server

 - Send error to client when mysql_change_db fails.


sql/sql_db.cc:
  Added a note to comment for mysql_change_db that it will not send any error to the client.
sql/sql_parse.cc:
  Call net_send_error(thd) if mysql_change_db fails.
  Remove comments claiming that mysql_change_db sends error the the client.
parent 5630f073
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1009,6 +1009,9 @@ static long mysql_rm_arc_files(THD *thd, MY_DIR *dirp,
    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
+6 −2
Original line number Diff line number Diff line
@@ -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);