Commit bb88f4fb authored by unknown's avatar unknown
Browse files

Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.0

into gw.mysql.r18.ru:/usr/home/ram/work/4.0.b2205

parents 3a476a6e de027f10
Loading
Loading
Loading
Loading
+27 −2
Original line number Diff line number Diff line
@@ -2200,8 +2200,9 @@ static int com_source(String *buffer, char *line)
static int
com_use(String *buffer __attribute__((unused)), char *line)
{
  char *tmp;
  char buff[256];
  char *tmp, buff[FN_REFLEN + 1];
  MYSQL_RES *res;
  MYSQL_ROW row;

  while (isspace(*line))
    line++;
@@ -2214,6 +2215,30 @@ com_use(String *buffer __attribute__((unused)), char *line)
    put_info("USE must be followed by a database name",INFO_ERROR);
    return 0;
  }
  /*
    We need to recheck the current database, because it may change
    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);
  }

  if (!current_db || cmp_database(current_db,tmp))
  {
    if (one_database)