diff options
Diffstat (limited to 'mysql-test')
-rwxr-xr-x | mysql-test/create-test-result | 4 | ||||
-rw-r--r-- | mysql-test/r/query_cache.result | 100 | ||||
-rw-r--r-- | mysql-test/t/query_cache-master.opt | 2 | ||||
-rw-r--r-- | mysql-test/t/query_cache.test | 94 |
4 files changed, 193 insertions, 7 deletions
diff --git a/mysql-test/create-test-result b/mysql-test/create-test-result index 24c3d175303..bfd64f32fc5 100755 --- a/mysql-test/create-test-result +++ b/mysql-test/create-test-result @@ -5,7 +5,7 @@ # If you have a spare moment feel free to improve it - the right way is # to start mysqld yourself and run mysqltest -r -RESULT_DIR=r/3.23 +RESULT_DIR=r if [ -z $EDITOR] ; then EDITOR=vi fi @@ -32,7 +32,7 @@ result_file=$RESULT_DIR/$test_name.result touch $result_file echo "Running the test case against empty file, will fail, but don't worry" -./mysql-test-run $test_name +./mysql-test-run --do-test=$test_name reject_file=$result_file.reject diff --git a/mysql-test/r/query_cache.result b/mysql-test/r/query_cache.result index 973d693d9aa..bae492b0b50 100644 --- a/mysql-test/r/query_cache.result +++ b/mysql-test/r/query_cache.result @@ -2,7 +2,7 @@ flush query cache; flush query cache; reset query cache; flush status; -drop table if exists t1,t2,t3; +drop table if exists t1,t2,t3,t11,t21; create table t1 (a int not null); insert into t1 values (1),(2),(3); select * from t1; @@ -173,6 +173,59 @@ show status like "Qcache_free_blocks"; Variable_name Value Qcache_free_blocks 1 drop table t1, t2; +create table t1 (a text not null); +create table t11 (a text not null); +create table t2 (a text not null); +create table t21 (a text not null); +create table t3 (a text not null); +insert into t1 values("1111111111111111111111111111111111111111111111111111"); +insert into t11 select * from t1; +insert into t21 select * from t1; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t3 select * from t1; +insert into t3 select * from t2; +insert into t3 select * from t1; +select * from t11; +select * from t21; +show status like "Qcache_total_blocks"; +Variable_name Value +Qcache_total_blocks 7 +show status like "Qcache_free_blocks"; +Variable_name Value +Qcache_free_blocks 1 +insert into t11 values(""); +select * from t3; +show status like "Qcache_total_blocks"; +Variable_name Value +Qcache_total_blocks 8 +show status like "Qcache_free_blocks"; +Variable_name Value +Qcache_free_blocks 1 +flush query cache; +show status like "Qcache_total_blocks"; +Variable_name Value +Qcache_total_blocks 7 +show status like "Qcache_free_blocks"; +Variable_name Value +Qcache_free_blocks 1 +drop table t1, t2, t3, t11, t21; set sql_query_cache_type=demand; create table t1 (a int not null); insert into t1 values (1),(2),(3); @@ -264,7 +317,6 @@ insert into t2 select * from t1; insert into t1 select * from t2; insert into t2 select * from t1; insert into t1 select * from t2; -drop table t2; show status like "Qcache_hits"; Variable_name Value Qcache_hits 4 @@ -279,4 +331,48 @@ show status like "Qcache_queries_in_cache"; Variable_name Value Qcache_queries_in_cache 2 reset query cache; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +select * from t1; +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 0 +drop table t1,t2; +create database foo; +create table foo.t1 (i int not null auto_increment, a int, primary key (i)); +insert into foo.t1 (a) values (1); +select * from foo.t1 where i is null; +i a +1 1 +select * from foo.t1; +i a +1 1 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +drop database foo; +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 0 +create table t1 (a char(1) not null); +insert into t1 values("á"); +select * from t1; +a +á +set CHARACTER SET cp1251_koi8; +select * from t1; +a +À +set CHARACTER SET DEFAULT; +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 2 drop table t1; diff --git a/mysql-test/t/query_cache-master.opt b/mysql-test/t/query_cache-master.opt index 5f0ebff98f6..cfdce628e74 100644 --- a/mysql-test/t/query_cache-master.opt +++ b/mysql-test/t/query_cache-master.opt @@ -1 +1 @@ ---set-variable=query_cache_size=1M +--set-variable=query_cache_size=1355776 diff --git a/mysql-test/t/query_cache.test b/mysql-test/t/query_cache.test index d2af702e566..5f67ea2b59a 100644 --- a/mysql-test/t/query_cache.test +++ b/mysql-test/t/query_cache.test @@ -8,7 +8,7 @@ flush query cache; # This crashed in some versions flush query cache; # This crashed in some versions reset query cache; flush status; -drop table if exists t1,t2,t3; +drop table if exists t1,t2,t3,t11,t21; # # First simple test @@ -86,6 +86,53 @@ show status like "Qcache_free_blocks"; flush query cache; show status like "Qcache_free_blocks"; drop table t1, t2; +# With join results... +create table t1 (a text not null); +create table t11 (a text not null); +create table t2 (a text not null); +create table t21 (a text not null); +create table t3 (a text not null); +insert into t1 values("1111111111111111111111111111111111111111111111111111"); +insert into t11 select * from t1; +insert into t21 select * from t1; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +#results of t3 must be > 0.5Mb +insert into t3 select * from t1; +insert into t3 select * from t2; +insert into t3 select * from t1; +disable_result_log; +select * from t11; +select * from t21; +enable_result_log; +show status like "Qcache_total_blocks"; +show status like "Qcache_free_blocks"; +disable_result_log; +insert into t11 values(""); +select * from t3; +enable_result_log; +show status like "Qcache_total_blocks"; +show status like "Qcache_free_blocks"; +flush query cache; +show status like "Qcache_total_blocks"; +show status like "Qcache_free_blocks"; +drop table t1, t2, t3, t11, t21; # # SELECT SQL_CACHE ... # @@ -154,7 +201,6 @@ insert into t2 select * from t1; # 987 insert into t1 select * from t2; # 1597 insert into t2 select * from t1; # 2584 insert into t1 select * from t2; # 4181 -drop table t2; show status like "Qcache_hits"; disable_result_log; @@ -167,6 +213,50 @@ enable_result_log; show status like "Qcache_hits"; show status like "Qcache_queries_in_cache"; reset query cache; +# +# Query bigger then query_cache_limit +# +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +insert into t2 select * from t1; +insert into t1 select * from t2; +disable_result_log; +select * from t1; +enable_result_log; +show status like "Qcache_queries_in_cache"; +drop table t1,t2; + +# +# noncachable ODBC work around (and prepare cache for drop database) +# +create database foo; +create table foo.t1 (i int not null auto_increment, a int, primary key (i)); +insert into foo.t1 (a) values (1); +select * from foo.t1 where i is null; + +# +# drop db +# +select * from foo.t1; +show status like "Qcache_queries_in_cache"; +drop database foo; +show status like "Qcache_queries_in_cache"; +# +# Charset convertion (cp1251_koi8 always present) +# +create table t1 (a char(1) not null); +insert into t1 values("á"); +select * from t1; +set CHARACTER SET cp1251_koi8; +select * from t1; +set CHARACTER SET DEFAULT; +show status like "Qcache_queries_in_cache"; drop table t1; # The following tests can't be done as the values differen on 32 and 64 bit |