Commit 60e19d28 authored by unknown's avatar unknown
Browse files

Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.0

into  mysql.com:/usr/home/bar/mysql-5.0.b10979


client/mysql.cc:
  Auto merged
parents 567df161 a084e1fd
Loading
Loading
Loading
Loading
+38 −19
Original line number Diff line number Diff line
@@ -2970,6 +2970,7 @@ static int
com_use(String *buffer __attribute__((unused)), char *line)
{
  char *tmp, buff[FN_REFLEN + 1];
  int select_db;

  bzero(buff, sizeof(buff));
  strmov(buff, line);
@@ -2989,8 +2990,27 @@ com_use(String *buffer __attribute__((unused)), char *line)
  if (!current_db || cmp_database(charset_info, current_db,tmp))
  {
    if (one_database)
    {
      skip_updates= 1;
      select_db= 0;    // don't do mysql_select_db()
    }
    else
      select_db= 2;    // do mysql_select_db() and build_completion_hash()
  }
  else
  {
    /*
      USE to the current db specified.
      We do need to send mysql_select_db() to make server
      update database level privileges, which might
      change since last USE (see bug#10979).
      For performance purposes, we'll skip rebuilding of completion hash.
    */
    skip_updates= 0;
    select_db= 1;      // do only mysql_select_db(), without completion
  }

  if (select_db)
  {
    /*
      reconnect once if connection is down or if connection was found to
@@ -3011,12 +3031,11 @@ com_use(String *buffer __attribute__((unused)), char *line)
    my_free(current_db,MYF(MY_ALLOW_ZERO_PTR));
    current_db=my_strdup(tmp,MYF(MY_WME));
#ifdef HAVE_READLINE
    if (select_db > 1)
      build_completion_hash(rehash, 1);
#endif
  }
  }
  else
    skip_updates= 0;

  put_info("Database changed",INFO_INFO);
  return 0;
}