diff options
Diffstat (limited to 'mysql-test/t/key_cache.test')
-rw-r--r-- | mysql-test/t/key_cache.test | 36 |
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; |