mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge rama.(none):/home/jimw/my/tmp_merge
into rama.(none):/home/jimw/my/mysql-5.1-clean client/mysql.cc: Auto merged client/mysqldump.c: Auto merged configure.in: Auto merged extra/yassl/include/openssl/ssl.h: Auto merged extra/yassl/include/yassl_int.hpp: Auto merged extra/yassl/src/ssl.cpp: Auto merged extra/yassl/src/template_instnt.cpp: Auto merged extra/yassl/src/yassl_imp.cpp: Auto merged extra/yassl/src/yassl_int.cpp: Auto merged include/mysql.h: Auto merged libmysql/libmysql.c: Auto merged libmysqld/embedded_priv.h: Auto merged BitKeeper/deleted/.del-mysql_explain_log.sh~5ddc62808e16bd57: Auto merged libmysqld/lib_sql.cc: Auto merged libmysqld/libmysqld.c: Auto merged mysql-test/r/date_formats.result: Auto merged mysql-test/r/func_str.result: Auto merged mysql-test/r/mysqldump-max.result: Auto merged mysql-test/r/ps.result: Auto merged mysql-test/t/date_formats.test: Auto merged mysql-test/t/ps.test: Auto merged scripts/mysqld_safe.sh: Auto merged sql/item_func.h: Auto merged sql/item_strfunc.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_lex.cc: Auto merged sql-common/client.c: Auto merged sql/sql_prepare.cc: Auto merged sql/sql_string.h: Auto merged sql/table.cc: Auto merged sql/table.h: Auto merged sql/time.cc: Auto merged storage/myisam/mi_create.c: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp: Auto merged storage/ndb/src/mgmsrv/ConfigInfo.cpp: Auto merged tests/mysql_client_test.c: Auto merged BitKeeper/deleted/.del-have_case_sensitive_file_system.inc: Delete: mysql-test/include/have_case_sensitive_file_system.inc BitKeeper/deleted/.del-case_sensitive_file_system.require: Delete: mysql-test/r/case_sensitive_file_system.require mysql-test/lib/mtr_cases.pl: Resolve conflict mysql-test/mysql-test-run.pl: Resolve conflict mysql-test/r/mysqldump.result: Resolve conflict mysql-test/t/mysqldump.test: Resolve conflict sql/sql_parse.cc: Resolve conflict
This commit is contained in:
@ -1093,7 +1093,7 @@ static int read_and_execute(bool interactive)
|
||||
(We want to allow help, print and clear anywhere at line start
|
||||
*/
|
||||
if ((named_cmds || glob_buffer.is_empty())
|
||||
&& !in_string && (com=find_command(line,0)))
|
||||
&& !ml_comment && !in_string && (com=find_command(line,0)))
|
||||
{
|
||||
if ((*com->func)(&glob_buffer,line) > 0)
|
||||
break;
|
||||
@ -2995,6 +2995,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);
|
||||
@ -3014,34 +3015,52 @@ com_use(String *buffer __attribute__((unused)), char *line)
|
||||
if (!current_db || cmp_database(charset_info, current_db,tmp))
|
||||
{
|
||||
if (one_database)
|
||||
skip_updates= 1;
|
||||
else
|
||||
{
|
||||
/*
|
||||
reconnect once if connection is down or if connection was found to
|
||||
be down during query
|
||||
*/
|
||||
if (!connected && reconnect())
|
||||
return opt_reconnect ? -1 : 1; // Fatal error
|
||||
if (mysql_select_db(&mysql,tmp))
|
||||
{
|
||||
if (mysql_errno(&mysql) != CR_SERVER_GONE_ERROR)
|
||||
return put_error(&mysql);
|
||||
|
||||
if (reconnect())
|
||||
return opt_reconnect ? -1 : 1; // Fatal error
|
||||
if (mysql_select_db(&mysql,tmp))
|
||||
return put_error(&mysql);
|
||||
}
|
||||
my_free(current_db,MYF(MY_ALLOW_ZERO_PTR));
|
||||
current_db=my_strdup(tmp,MYF(MY_WME));
|
||||
#ifdef HAVE_READLINE
|
||||
build_completion_hash(rehash, 1);
|
||||
#endif
|
||||
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
|
||||
be down during query
|
||||
*/
|
||||
if (!connected && reconnect())
|
||||
return opt_reconnect ? -1 : 1; // Fatal error
|
||||
if (mysql_select_db(&mysql,tmp))
|
||||
{
|
||||
if (mysql_errno(&mysql) != CR_SERVER_GONE_ERROR)
|
||||
return put_error(&mysql);
|
||||
|
||||
if (reconnect())
|
||||
return opt_reconnect ? -1 : 1; // Fatal error
|
||||
if (mysql_select_db(&mysql,tmp))
|
||||
return put_error(&mysql);
|
||||
}
|
||||
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
|
||||
}
|
||||
|
||||
put_info("Database changed",INFO_INFO);
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user