diff --git a/sql/events.cc b/sql/events.cc index e3b921c0ccf..3f57fbb745f 100644 --- a/sql/events.cc +++ b/sql/events.cc @@ -823,9 +823,6 @@ Events::show_create_event(THD *thd, const LEX_CSTRING *dbname, int Events::fill_schema_events(THD *thd, TABLE_LIST *tables, COND * /* cond */) { - const char *db= NULL; - int ret; - char db_tmp[SAFE_NAME_LEN]; DBUG_ENTER("Events::fill_schema_events"); /* @@ -849,11 +846,11 @@ Events::fill_schema_events(THD *thd, TABLE_LIST *tables, COND * /* cond */) if (!is_infoschema_db(lexdb) && !is_perfschema_db(lexdb) && check_access(thd, EVENT_ACL, lexdb->str, NULL, NULL, 0, 0)) DBUG_RETURN(1); - db= normalize_db_name(lexdb->str, db_tmp, sizeof(db_tmp)); + const DBNameBuffer db_tmp(*lexdb, lower_case_table_names); + const char *db= db_tmp.to_lex_cstring().str; + DBUG_RETURN(db_repository->fill_schema_events(thd, tables, db)); } - ret= db_repository->fill_schema_events(thd, tables, db); - - DBUG_RETURN(ret); + DBUG_RETURN(db_repository->fill_schema_events(thd, tables, NULL)); } diff --git a/sql/sql_db.cc b/sql/sql_db.cc index 5a3bbda5b3e..66d20f961d1 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -744,10 +744,9 @@ mysql_create_db_internal(THD *thd, const LEX_CSTRING *db, DBUG_RETURN(-1); } - char db_tmp[SAFE_NAME_LEN+1]; - const char *dbnorm= normalize_db_name(db->str, db_tmp, sizeof(db_tmp)); + const DBNameBuffer db_tmp(*db, lower_case_table_names); - if (lock_schema_name(thd, dbnorm)) + if (lock_schema_name(thd, db_tmp.to_lex_cstring().str)) DBUG_RETURN(-1); /* Check directory */ @@ -1047,16 +1046,13 @@ mysql_rm_db_internal(THD *thd, const LEX_CSTRING *db, bool if_exists, TABLE_LIST *table; DDL_LOG_STATE ddl_log_state; Drop_table_error_handler err_handler; - LEX_CSTRING rm_db; - char db_tmp[SAFE_NAME_LEN+1]; - const char *dbnorm; DBUG_ENTER("mysql_rm_db"); - dbnorm= normalize_db_name(db->str, db_tmp, sizeof(db_tmp)); - lex_string_set(&rm_db, dbnorm); + const DBNameBuffer db_tmp(*db, lower_case_table_names); + const LEX_CSTRING rm_db= db_tmp.to_lex_cstring(); bzero(&ddl_log_state, sizeof(ddl_log_state)); - if (lock_schema_name(thd, dbnorm)) + if (lock_schema_name(thd, rm_db.str)) DBUG_RETURN(true); path_length= build_table_filename(path, sizeof(path) - 1, db->str, "", "", 0); @@ -1079,7 +1075,7 @@ mysql_rm_db_internal(THD *thd, const LEX_CSTRING *db, bool if_exists, } } - if (find_db_tables_and_rm_known_files(thd, dirp, dbnorm, path, &tables)) + if (find_db_tables_and_rm_known_files(thd, dirp, rm_db.str, path, &tables)) goto exit; /* @@ -1097,7 +1093,7 @@ mysql_rm_db_internal(THD *thd, const LEX_CSTRING *db, bool if_exists, /* Lock all tables and stored routines about to be dropped. */ if (lock_table_names(thd, tables, NULL, thd->variables.lock_wait_timeout, 0) || - lock_db_routines(thd, dbnorm)) + lock_db_routines(thd, rm_db.str)) goto exit; if (!rm_mysql_schema) @@ -2139,14 +2135,3 @@ bool check_db_dir_existence(const char *db_name) mysql_rwlock_unlock(&rmdir_lock); return ret; } - - -const char *normalize_db_name(const 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 3c037d668e0..92e0c4357aa 100644 --- a/sql/sql_db.h +++ b/sql/sql_db.h @@ -44,9 +44,6 @@ CHARSET_INFO *get_default_db_collation(THD *thd, const char *db_name); bool my_dbopt_init(void); void my_dbopt_cleanup(void); -const char *normalize_db_name(const char *db, char *buffer, - size_t buffer_size); - void drop_database_objects(THD *thd, const LEX_CSTRING *path, const LEX_CSTRING *db, bool rm_mysql_schema);