summaryrefslogtreecommitdiff
path: root/mysql-test/t/key_cache.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/t/key_cache.test')
-rw-r--r--mysql-test/t/key_cache.test36
1 files changed, 26 insertions, 10 deletions
diff --git a/mysql-test/t/key_cache.test b/mysql-test/t/key_cache.test
index 371d610eb5f..dc9f9c9b18a 100644
--- a/mysql-test/t/key_cache.test
+++ b/mysql-test/t/key_cache.test
@@ -1,6 +1,9 @@
#
# Test of multiple key caches
#
+--disable_warnings
+drop table if exists t1, t2, t3;
+--enable_warnings
SET @save_key_buffer=@@key_buffer_size;
@@ -58,12 +61,9 @@ select @@keycache1.key_cache_block_size;
select @@key_buffer_size;
select @@key_cache_block_size;
+set global keycache1.key_buffer_size=1024*1024;
---disable_warnings
-drop table if exists t1, t2;
---enable_warnings
-
-create table t1 (p int primary key, a char(10));
+create table t1 (p int primary key, a char(10)) delay_key_write=1;
create table t2 (p int primary key, i int, a char(10), key k1(i), key k2(a));
insert into t1 values (1, 'qqqq'), (11, 'yyyy');
@@ -75,7 +75,7 @@ select * from t2;
update t1 set p=2 where p=1;
update t2 set i=2 where i=1;
-cache index t1 keys in keycache1;
+cache index t1 keys (`primary`) in keycache1;
explain select p from t1;
select p from t1;
@@ -84,11 +84,11 @@ select i from t2;
explain select count(*) from t1, t2 where t1.p = t2.i;
select count(*) from t1, t2 where t1.p = t2.i;
-cache index t2 keys in keycache1;
+cache index t2 in keycache1;
update t2 set p=p+1000, i=2 where a='qqqq';
-cache index t2 keys in keycache2;
+cache index t2 in keycache2;
insert into t2 values (2000, 3, 'yyyy');
-cache index t2 keys in keycache1;
+cache index t2 in keycache1;
update t2 set p=3000 where a='zzzz';
select * from t2;
explain select p from t2;
@@ -98,12 +98,18 @@ select i from t2;
explain select a from t2;
select a from t2;
+# Test some error conditions
+--error 1287
+cache index t1 in unknown_key_cache;
+cache index t1 keys (unknown_key) in keycache1;
+
select @@keycache2.key_buffer_size;
select @@keycache2.key_cache_block_size;
set global keycache2.key_buffer_size=0;
select @@keycache2.key_buffer_size;
select @@keycache2.key_cache_block_size;
-
+set global keycache2.key_buffer_size=1024*1024;
+select @@keycache2.key_buffer_size;
update t2 set p=4000 where a='zzzz';
update t1 set p=p+1;
@@ -119,4 +125,14 @@ select a from t2;
select * from t1;
select p from t1;
+# Use the 'small' key cache
+create table t3 (like t1);
+cache index t3 in small;
+insert into t3 select * from t1;
+cache index t3 in keycache2;
+cache index t1,t2 in default;
+drop table t1,t2,t3;
+# Cleanup
+# We don't reset keycache2 as we want to ensure that mysqld will reset it
+set global keycache1.key_buffer_size=0;