diff options
-rw-r--r-- | sql/sql_db.cc | 33 | ||||
-rw-r--r-- | sql/sql_db.h | 2 |
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 */ |