Commit 376f0265 authored by bell@sanja.is.com.ua's avatar bell@sanja.is.com.ua

tabe & query hashes made case insensitive (BUG#933)

parent 7336f9cd
...@@ -374,22 +374,23 @@ drop database mysqltest; ...@@ -374,22 +374,23 @@ drop database mysqltest;
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
Variable_name Value Variable_name Value
Qcache_queries_in_cache 0 Qcache_queries_in_cache 0
create table t1 (a char(1) not null); create table t1 (a char(1) not null collate koi8r_general_ci);
insert into t1 values(""); insert into t1 values(_koi8r"");
set CHARACTER SET koi8r;
select * from t1; select * from t1;
a a
set CHARACTER SET cp1251_koi8; set CHARACTER SET cp1251_koi8;
select * from t1; select * from t1;
a a
set CHARACTER SET DEFAULT; set CHARACTER SET DEFAULT;
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
Variable_name Value Variable_name Value
Qcache_queries_in_cache 1 Qcache_queries_in_cache 2
show status like "Qcache_hits"; show status like "Qcache_hits";
Variable_name Value Variable_name Value
Qcache_hits 5 Qcache_hits 4
drop table t1; drop table t1;
create database if not exists mysqltest; create database if not exists mysqltest;
create table mysqltest.t1 (i int not null); create table mysqltest.t1 (i int not null);
...@@ -415,7 +416,7 @@ Variable_name Value ...@@ -415,7 +416,7 @@ Variable_name Value
Qcache_queries_in_cache 2 Qcache_queries_in_cache 2
show status like "Qcache_hits"; show status like "Qcache_hits";
Variable_name Value Variable_name Value
Qcache_hits 7 Qcache_hits 6
drop database mysqltest; drop database mysqltest;
drop table t1; drop table t1;
create table t1 (i int not null); create table t1 (i int not null);
...@@ -429,7 +430,7 @@ FOUND_ROWS() ...@@ -429,7 +430,7 @@ FOUND_ROWS()
4 4
show status like "Qcache_hits"; show status like "Qcache_hits";
Variable_name Value Variable_name Value
Qcache_hits 7 Qcache_hits 6
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
Variable_name Value Variable_name Value
Qcache_queries_in_cache 1 Qcache_queries_in_cache 1
...@@ -441,7 +442,7 @@ FOUND_ROWS() ...@@ -441,7 +442,7 @@ FOUND_ROWS()
1 1
show status like "Qcache_hits"; show status like "Qcache_hits";
Variable_name Value Variable_name Value
Qcache_hits 7 Qcache_hits 6
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
Variable_name Value Variable_name Value
Qcache_queries_in_cache 2 Qcache_queries_in_cache 2
...@@ -454,7 +455,7 @@ FOUND_ROWS() ...@@ -454,7 +455,7 @@ FOUND_ROWS()
4 4
show status like "Qcache_hits"; show status like "Qcache_hits";
Variable_name Value Variable_name Value
Qcache_hits 8 Qcache_hits 7
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
Variable_name Value Variable_name Value
Qcache_queries_in_cache 2 Qcache_queries_in_cache 2
...@@ -466,7 +467,7 @@ FOUND_ROWS() ...@@ -466,7 +467,7 @@ FOUND_ROWS()
1 1
show status like "Qcache_hits"; show status like "Qcache_hits";
Variable_name Value Variable_name Value
Qcache_hits 9 Qcache_hits 8
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
Variable_name Value Variable_name Value
Qcache_queries_in_cache 2 Qcache_queries_in_cache 2
...@@ -535,7 +536,7 @@ a ...@@ -535,7 +536,7 @@ a
3 3
show status like "Qcache_hits"; show status like "Qcache_hits";
Variable_name Value Variable_name Value
Qcache_hits 12 Qcache_hits 11
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
Variable_name Value Variable_name Value
Qcache_queries_in_cache 2 Qcache_queries_in_cache 2
...@@ -552,7 +553,7 @@ a ...@@ -552,7 +553,7 @@ a
3 3
show status like "Qcache_hits"; show status like "Qcache_hits";
Variable_name Value Variable_name Value
Qcache_hits 13 Qcache_hits 12
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
Variable_name Value Variable_name Value
Qcache_queries_in_cache 2 Qcache_queries_in_cache 2
...@@ -561,6 +562,15 @@ set GLOBAL query_cache_min_res_unit=default; ...@@ -561,6 +562,15 @@ set GLOBAL query_cache_min_res_unit=default;
show global variables like "query_cache_min_res_unit"; show global variables like "query_cache_min_res_unit";
Variable_name Value Variable_name Value
query_cache_min_res_unit 4096 query_cache_min_res_unit 4096
create table t1 (a int not null);
insert into t1 values (1);
select "aaa" from t1;
aaa
aaa
select "AAA" from t1;
AAA
AAA
drop table t1;
create table t1 (a int); create table t1 (a int);
set GLOBAL query_cache_size=1000; set GLOBAL query_cache_size=1000;
show global variables like "query_cache_size"; show global variables like "query_cache_size";
......
...@@ -260,8 +260,9 @@ show status like "Qcache_queries_in_cache"; ...@@ -260,8 +260,9 @@ show status like "Qcache_queries_in_cache";
# #
# Charset convertion (cp1251_koi8 always present) # Charset convertion (cp1251_koi8 always present)
# #
create table t1 (a char(1) not null); create table t1 (a char(1) not null collate koi8r_general_ci);
insert into t1 values(""); insert into t1 values(_koi8r"");
set CHARACTER SET koi8r;
select * from t1; select * from t1;
set CHARACTER SET cp1251_koi8; set CHARACTER SET cp1251_koi8;
select * from t1; select * from t1;
...@@ -368,6 +369,15 @@ drop table t2; ...@@ -368,6 +369,15 @@ drop table t2;
set GLOBAL query_cache_min_res_unit=default; set GLOBAL query_cache_min_res_unit=default;
show global variables like "query_cache_min_res_unit"; show global variables like "query_cache_min_res_unit";
#
# Case sensitive test
#
create table t1 (a int not null);
insert into t1 values (1);
select "aaa" from t1;
select "AAA" from t1;
drop table t1;
# #
# Test of query cache resizing # Test of query cache resizing
# #
......
...@@ -1422,10 +1422,10 @@ ulong Query_cache::init_cache() ...@@ -1422,10 +1422,10 @@ ulong Query_cache::init_cache()
DUMP(this); DUMP(this);
VOID(hash_init(&queries,system_charset_info,def_query_hash_size, 0, 0, VOID(hash_init(&queries, &my_charset_bin, def_query_hash_size, 0, 0,
query_cache_query_get_key, 0, 0)); query_cache_query_get_key, 0, 0));
#ifndef FN_NO_CASE_SENCE #ifndef FN_NO_CASE_SENCE
VOID(hash_init(&tables,system_charset_info,def_table_hash_size, 0, 0, VOID(hash_init(&tables, &my_charset_bin, def_table_hash_size, 0, 0,
query_cache_table_get_key, 0, 0)); query_cache_table_get_key, 0, 0));
#else #else
// windows, OS/2 or other case insensitive file names work around // windows, OS/2 or other case insensitive file names work around
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment