summaryrefslogtreecommitdiff
path: root/sql/sql_db.cc
diff options
context:
space:
mode:
authoraivanov@mysql.com <>2006-03-01 17:43:55 +0300
committeraivanov@mysql.com <>2006-03-01 17:43:55 +0300
commitd20ccef6e5460d2c6b77467b0f67bcad84154fc5 (patch)
treef092a0cb2ee7ffe6a5004d04964ee4a57a2ffd31 /sql/sql_db.cc
parent70b344f910cb1a02c2b9be911f7e629c2298e438 (diff)
parenta3ea8947584dcac29f7cddf35c804e84bba8bb21 (diff)
downloadmariadb-git-d20ccef6e5460d2c6b77467b0f67bcad84154fc5.tar.gz
Merge aivanov@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/alexi/bugs/mysql-5.0-merged
Diffstat (limited to 'sql/sql_db.cc')
-rw-r--r--sql/sql_db.cc18
1 files changed, 12 insertions, 6 deletions
diff --git a/sql/sql_db.cc b/sql/sql_db.cc
index 344a6887ebb..4caa0076c60 100644
--- a/sql/sql_db.cc
+++ b/sql/sql_db.cc
@@ -1098,7 +1098,8 @@ err:
bool mysql_change_db(THD *thd, const char *name, bool no_access_check)
{
int length, db_length;
- char *dbname=my_strdup((char*) name,MYF(MY_WME));
+ char *dbname= thd->slave_thread ? (char *) name :
+ my_strdup((char *) name, MYF(MY_WME));
char path[FN_REFLEN];
HA_CREATE_INFO create;
bool system_db= 0;
@@ -1121,7 +1122,8 @@ bool mysql_change_db(THD *thd, const char *name, bool no_access_check)
system_db= 1;
goto end;
}
- x_free(dbname); /* purecov: inspected */
+ if (!(thd->slave_thread))
+ x_free(dbname); /* purecov: inspected */
my_message(ER_NO_DB_ERROR, ER(ER_NO_DB_ERROR),
MYF(0)); /* purecov: inspected */
DBUG_RETURN(1); /* purecov: inspected */
@@ -1129,7 +1131,8 @@ bool mysql_change_db(THD *thd, const char *name, bool no_access_check)
if (check_db_name(dbname))
{
my_error(ER_WRONG_DB_NAME, MYF(0), dbname);
- my_free(dbname, MYF(0));
+ if (!(thd->slave_thread))
+ my_free(dbname, MYF(0));
DBUG_RETURN(1);
}
DBUG_PRINT("info",("Use database: %s", dbname));
@@ -1159,7 +1162,8 @@ bool mysql_change_db(THD *thd, const char *name, bool no_access_check)
dbname);
mysql_log.write(thd, COM_INIT_DB, ER(ER_DBACCESS_DENIED_ERROR),
sctx->priv_user, sctx->priv_host, dbname);
- my_free(dbname,MYF(0));
+ if (!(thd->slave_thread))
+ my_free(dbname,MYF(0));
DBUG_RETURN(1);
}
}
@@ -1171,7 +1175,8 @@ bool mysql_change_db(THD *thd, const char *name, bool no_access_check)
if (my_access(path,F_OK))
{
my_error(ER_BAD_DB_ERROR, MYF(0), dbname);
- my_free(dbname,MYF(0));
+ if (!(thd->slave_thread))
+ my_free(dbname,MYF(0));
DBUG_RETURN(1);
}
end:
@@ -1179,7 +1184,8 @@ end:
x_free(thd->db);
if (dbname && dbname[0] == 0)
{
- my_free(dbname, MYF(0));
+ if (!(thd->slave_thread))
+ my_free(dbname, MYF(0));
thd->db= NULL;
thd->db_length= 0;
}