Asserting correct database name lettercase in
various places in the code.
This commit is contained in:
parent
5b6c75ca4d
commit
d81b662b8c
@ -596,6 +596,8 @@ Events::drop_schema_events(THD *thd, char *db)
|
||||
DBUG_ENTER("Events::drop_schema_events");
|
||||
DBUG_PRINT("enter", ("dropping events from %s", db));
|
||||
|
||||
DBUG_ASSERT(ok_for_lower_case_names(db));
|
||||
|
||||
/*
|
||||
Sic: no check if the scheduler is disabled or system tables
|
||||
are damaged, as intended.
|
||||
|
@ -860,6 +860,8 @@ bool lock_object_name(THD *thd, MDL_key::enum_mdl_namespace mdl_type,
|
||||
MDL_request schema_request;
|
||||
MDL_request mdl_request;
|
||||
|
||||
DBUG_ASSERT(ok_for_lower_case_names(db));
|
||||
|
||||
if (thd->locked_tables_mode)
|
||||
{
|
||||
my_message(ER_LOCK_OR_ACTIVE_TRANSACTION,
|
||||
|
@ -37,6 +37,7 @@ class THD;
|
||||
class MDL_context;
|
||||
class MDL_lock;
|
||||
class MDL_ticket;
|
||||
bool ok_for_lower_case_names(const char *name);
|
||||
|
||||
/**
|
||||
@def ENTER_COND(C, M, S, O)
|
||||
@ -350,6 +351,7 @@ public:
|
||||
NAME_LEN) - m_ptr + 1);
|
||||
m_hash_value= my_hash_sort(&my_charset_bin, (uchar*) m_ptr + 1,
|
||||
m_length - 1);
|
||||
DBUG_ASSERT(ok_for_lower_case_names(db));
|
||||
}
|
||||
void mdl_key_init(const MDL_key *rhs)
|
||||
{
|
||||
|
@ -1437,6 +1437,8 @@ bool lock_db_routines(THD *thd, char *db)
|
||||
uchar keybuf[MAX_KEY_LENGTH];
|
||||
DBUG_ENTER("lock_db_routines");
|
||||
|
||||
DBUG_ASSERT(ok_for_lower_case_names(db));
|
||||
|
||||
/*
|
||||
mysql.proc will be re-opened during deletion, so we can ignore
|
||||
errors when opening the table here. The error handler is
|
||||
|
@ -493,6 +493,7 @@ sp_name::init_qname(THD *thd)
|
||||
(int) m_db.length, (m_db.length ? m_db.str : ""),
|
||||
dot, ".",
|
||||
(int) m_name.length, m_name.str);
|
||||
DBUG_ASSERT(ok_for_lower_case_names(m_db.str));
|
||||
}
|
||||
|
||||
|
||||
|
@ -2306,6 +2306,8 @@ void Query_cache::invalidate(THD *thd, char *db)
|
||||
if (is_disabled())
|
||||
DBUG_VOID_RETURN;
|
||||
|
||||
DBUG_ASSERT(ok_for_lower_case_names(db));
|
||||
|
||||
bool restart= FALSE;
|
||||
/*
|
||||
Lock the query cache and queue all invalidation attempts to avoid
|
||||
|
18
sql/table.cc
18
sql/table.cc
@ -3436,6 +3436,24 @@ uint calculate_key_len(TABLE *table, uint key, const uchar *buf,
|
||||
return length;
|
||||
}
|
||||
|
||||
#ifndef DBUG_OFF
|
||||
/**
|
||||
Verifies that database/table name is in lowercase, when it should be
|
||||
|
||||
This is supposed to be used only inside DBUG_ASSERT()
|
||||
*/
|
||||
bool ok_for_lower_case_names(const char *name)
|
||||
{
|
||||
if (!lower_case_table_names || !name)
|
||||
return true;
|
||||
|
||||
char buf[SAFE_NAME_LEN];
|
||||
strmake_buf(buf, name);
|
||||
my_casedn_str(files_charset_info, buf);
|
||||
return strcmp(name, buf) == 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
Check if database name is valid
|
||||
|
||||
|
@ -2511,6 +2511,8 @@ static inline void dbug_tmp_restore_column_maps(MY_BITMAP *read_set,
|
||||
#endif
|
||||
}
|
||||
|
||||
bool ok_for_lower_case_names(const char *names);
|
||||
|
||||
enum get_table_share_flags {
|
||||
GTS_TABLE = 1,
|
||||
GTS_VIEW = 2,
|
||||
|
Loading…
x
Reference in New Issue
Block a user