diff options
author | unknown <dlenev@brandersnatch.localdomain> | 2004-05-22 23:41:58 +0400 |
---|---|---|
committer | unknown <dlenev@brandersnatch.localdomain> | 2004-05-22 23:41:58 +0400 |
commit | 0e86cf8aba3c7d067dd28efd78f138d467ec7e7b (patch) | |
tree | 396b746d77b997977420c7bc8c1903ab26a53a21 /sql/sql_cache.cc | |
parent | 11ee33b181f20b3d746da871918c96890480a1ae (diff) | |
download | mariadb-git-0e86cf8aba3c7d067dd28efd78f138d467ec7e7b.tar.gz |
Fix for bug which caused grant.test fail on darwin7.3. We were converting db and table
names to lower case using latin1 instead of utf-8 in sql_acl.cc if lower_case_table_names
was on. Also replaced in other such places system_charset_info with files_charset_info
for consistency.
sql/handler.cc:
Replaced system_charset_info with files_charset_info in places where we are converting
names to lower case because of lower_case_table_names for consistency.
sql/sql_acl.cc:
We should use files_charset_info when converting db/table names to lower case because they
could be in utf-8 and not in latin1!
sql/sql_cache.cc:
Added clarifying comments in tricky place after discussion with Sanja.
Replaced system_charset_info with files_charset_info in places where we
are converting names to lower case because of lower_case_table_names for
consistency.
sql/sql_db.cc:
Replaced system_charset_info with files_charset_info in places where we are converting
names to lower case because of lower_case_table_names for consistency.
sql/sql_show.cc:
Replaced system_charset_info with files_charset_info in places where we are converting
names to lower case because of lower_case_table_names for consistency.
sql/sql_table.cc:
Replaced system_charset_info with files_charset_info in places where we are converting
names to lower case because of lower_case_table_names for consistency.
Diffstat (limited to 'sql/sql_cache.cc')
-rw-r--r-- | sql/sql_cache.cc | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc index d7d4219c7fd..b9fe61ac48a 100644 --- a/sql/sql_cache.cc +++ b/sql/sql_cache.cc @@ -1512,13 +1512,28 @@ ulong Query_cache::init_cache() VOID(hash_init(&queries, &my_charset_bin, def_query_hash_size, 0, 0, query_cache_query_get_key, 0, 0)); #ifndef FN_NO_CASE_SENCE + /* + If lower_case_table_names!=0 then db and table names are already + converted to lower case and we can use binary collation for their + comparison (no matter if file system case sensitive or not). + If we have case-sensitive file system (like on most Unixes) and + lower_case_table_names == 0 then we should distinguish my_table + and MY_TABLE cases and so again can use binary collation. + */ VOID(hash_init(&tables, &my_charset_bin, def_table_hash_size, 0, 0, query_cache_table_get_key, 0, 0)); #else - // windows, OS/2 or other case insensitive file names work around + /* + On windows, OS/2, MacOS X with HFS+ or any other case insensitive + file system if lower_case_table_names!=0 we have same situation as + in previous case, but if lower_case_table_names==0 then we should + not distinguish cases (to be compatible in behavior with underlaying + file system) and so should use case insensitive collation for + comparison. + */ VOID(hash_init(&tables, lower_case_table_names ? &my_charset_bin : - system_charset_info, + files_charset_info, def_table_hash_size, 0, 0,query_cache_table_get_key, 0, 0)); #endif |