summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/sql_db.cc33
-rw-r--r--sql/sql_db.h2
2 files changed, 17 insertions, 18 deletions
diff --git a/sql/sql_db.cc b/sql/sql_db.cc
index 8b7d4ee5ed2..2a5f8a37fa0 100644
--- a/sql/sql_db.cc
+++ b/sql/sql_db.cc
@@ -583,15 +583,8 @@ mysql_create_db_internal(THD *thd, char *db,
DBUG_RETURN(-1);
}
- char db_tmp[SAFE_NAME_LEN], *dbnorm;
- if (lower_case_table_names)
- {
- strmake_buf(db_tmp, db);
- my_casedn_str(system_charset_info, db_tmp);
- dbnorm= db_tmp;
- }
- else
- dbnorm= db;
+ char db_tmp[SAFE_NAME_LEN];
+ char *dbnorm= normalize_db_name(db, db_tmp, sizeof(db_tmp));
if (lock_schema_name(thd, dbnorm))
DBUG_RETURN(-1);
@@ -824,15 +817,8 @@ mysql_rm_db_internal(THD *thd,char *db, bool if_exists, bool silent)
Drop_table_error_handler err_handler;
DBUG_ENTER("mysql_rm_db");
- char db_tmp[SAFE_NAME_LEN], *dbnorm;
- if (lower_case_table_names)
- {
- strmake_buf(db_tmp, db);
- my_casedn_str(system_charset_info, db_tmp);
- dbnorm= db_tmp;
- }
- else
- dbnorm= db;
+ char db_tmp[SAFE_NAME_LEN];
+ char *dbnorm= normalize_db_name(db, db_tmp, sizeof(db_tmp));
if (lock_schema_name(thd, dbnorm))
DBUG_RETURN(true);
@@ -1891,3 +1877,14 @@ bool check_db_dir_existence(const char *db_name)
return my_access(db_dir_path, F_OK);
}
+
+
+char *normalize_db_name(char *db, char *buffer, size_t buffer_size)
+{
+ DBUG_ASSERT(buffer_size > 1);
+ if (!lower_case_table_names)
+ return db;
+ strmake(buffer, db, buffer_size - 1);
+ my_casedn_str(system_charset_info, buffer);
+ return buffer;
+}
diff --git a/sql/sql_db.h b/sql/sql_db.h
index b0d99cc1ba4..7b3417dde1b 100644
--- a/sql/sql_db.h
+++ b/sql/sql_db.h
@@ -45,6 +45,8 @@ CHARSET_INFO *get_default_db_collation(THD *thd, const char *db_name);
bool my_dbopt_init(void);
void my_dbopt_cleanup(void);
+char *normalize_db_name(char *db, char *buffer, size_t buffer_size);
+
#define MY_DB_OPT_FILE "db.opt"
#endif /* SQL_DB_INCLUDED */