Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
9a0566b0
Commit
9a0566b0
authored
Sep 17, 2014
by
Nirbhay Choubey
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MDEV-6447: Galera: Enable QC
* Added galera/query_cache test * Merged patch for lp:1296403
parent
99b449bb
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
2656 additions
and
1 deletion
+2656
-1
mysql-test/suite/galera/r/query_cache.result
mysql-test/suite/galera/r/query_cache.result
+1645
-0
mysql-test/suite/galera/t/query_cache.test
mysql-test/suite/galera/t/query_cache.test
+1002
-0
sql/wsrep_check_opts.cc
sql/wsrep_check_opts.cc
+4
-0
sql/wsrep_mysqld.cc
sql/wsrep_mysqld.cc
+5
-1
No files found.
mysql-test/suite/galera/r/query_cache.result
0 → 100644
View file @
9a0566b0
# Execute FLUSH/RESET commands.
# On node-1
SET @query_cache_size_saved=@@GLOBAL.query_cache_size;
SET @query_cache_type_saved=@@GLOBAL.query_cache_type;
set GLOBAL query_cache_size=1355776;
flush query cache;
reset query cache;
flush status;
# On node-2
SET @query_cache_size_saved=@@GLOBAL.query_cache_size;
SET @query_cache_type_saved=@@GLOBAL.query_cache_type;
set GLOBAL query_cache_size=1355776;
flush query cache;
reset query cache;
flush status;
# On node-1
create table t1 (a int not null) engine=innodb;
insert into t1 values (1),(2),(3);
select * from t1;
a
1
2
3
select * from t1;
a
1
2
3
select sql_no_cache * from t1;
a
1
2
3
select length(now()) from t1;
length(now())
19
19
19
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_inserts";
Variable_name Value
Qcache_inserts 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 1
# On node-2
select * from t1;
a
1
2
3
select * from t1;
a
1
2
3
select sql_no_cache * from t1;
a
1
2
3
select length(now()) from t1;
length(now())
19
19
19
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_inserts";
Variable_name Value
Qcache_inserts 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 1
# On node-1
delete from t1 where a=1;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 1
# On node-2
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 1
# On node-1
select * from t1;
a
2
3
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 1
# On node-2
select * from t1;
a
2
3
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 1
# On node-1
update t1 set a=1 where a=3;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 1
# On node-2
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 1
# On node-1
select * from t1;
a
2
1
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 1
# On node-2
select * from t1;
a
2
1
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 1
# On node-1
drop table t1;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 1
# On node-2
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 1
# On node-1
create table t1 (a int not null) ENGINE=MyISAM;
insert into t1 values (1),(2),(3);
create table t2 (a int not null) ENGINE=MyISAM;
insert into t2 values (4),(5),(6);
create table t3 (a int not null) engine=MERGE UNION=(t1,t2) INSERT_METHOD=FIRST;
select * from t3;
a
1
2
3
4
5
6
select * from t3;
a
1
2
3
4
5
6
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 2
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 2
insert into t2 values (7);
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 2
select * from t1;
a
1
2
3
select * from t1;
a
1
2
3
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
insert into t3 values (8);
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
select * from t3;
a
1
2
3
8
4
5
6
7
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
update t2 set a=9 where a=7;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
select * from t1;
a
1
2
3
8
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
update t3 set a=10 where a=1;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
select * from t3;
a
10
2
3
8
4
5
6
9
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
delete from t2 where a=9;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
select * from t1;
a
10
2
3
8
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
delete from t3 where a=10;
select * from t3;
a
2
3
8
4
5
6
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
# On node-2
select * from t3;
a
select * from t3;
a
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_inserts";
Variable_name Value
Qcache_inserts 4
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 2
drop table t1, t2, t3;
# On node-1
set query_cache_type=demand;
create table t1 (a int not null) engine=innodb;
insert into t1 values (1),(2),(3);
select * from t1;
a
1
2
3
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
select sql_cache * from t1 union select * from t1;
a
1
2
3
set query_cache_type=2;
select sql_cache * from t1 union select * from t1;
a
1
2
3
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 4
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
set query_cache_type=on;
# On node-2
set query_cache_type=demand;
select * from t1;
a
1
2
3
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 2
select sql_cache * from t1 union select * from t1;
a
1
2
3
set query_cache_type=2;
select sql_cache * from t1 union select * from t1;
a
1
2
3
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
set query_cache_type=on;
# On node-1
reset query cache;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 4
# On node-2
reset query cache;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
# On node-1
select sql_no_cache * from t1;
a
1
2
3
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 4
# On node-2
select sql_no_cache * from t1;
a
1
2
3
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
drop table t1;
# On node-1
create table t1 (a text not null) engine=innodb;
select CONNECTION_ID() from t1;
CONNECTION_ID()
select FOUND_ROWS();
FOUND_ROWS()
0
select NOW() from t1;
NOW()
select CURDATE() from t1;
CURDATE()
select CURTIME() from t1;
CURTIME()
select DATABASE() from t1;
DATABASE()
select ENCRYPT("test") from t1;
ENCRYPT("test")
select LAST_INSERT_ID() from t1;
LAST_INSERT_ID()
select RAND() from t1;
RAND()
select UNIX_TIMESTAMP() from t1;
UNIX_TIMESTAMP()
select USER() from t1;
USER()
select CURRENT_USER() from t1;
CURRENT_USER()
select benchmark(1,1) from t1;
benchmark(1,1)
explain extended select benchmark(1,1) from t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 1 100.00
Warnings:
Note 1003 select benchmark(1,1) AS `benchmark(1,1)` from `test`.`t1`
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 4
# On node-2
select CONNECTION_ID() from t1;
CONNECTION_ID()
select FOUND_ROWS();
FOUND_ROWS()
0
select NOW() from t1;
NOW()
select CURDATE() from t1;
CURDATE()
select CURTIME() from t1;
CURTIME()
select DATABASE() from t1;
DATABASE()
select ENCRYPT("test") from t1;
ENCRYPT("test")
select LAST_INSERT_ID() from t1;
LAST_INSERT_ID()
select RAND() from t1;
RAND()
select UNIX_TIMESTAMP() from t1;
UNIX_TIMESTAMP()
select USER() from t1;
USER()
select CURRENT_USER() from t1;
CURRENT_USER()
select benchmark(1,1) from t1;
benchmark(1,1)
explain extended select benchmark(1,1) from t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 1 100.00
Warnings:
Note 1003 select benchmark(1,1) AS `benchmark(1,1)` from `test`.`t1`
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
drop table t1;
# On node-1
create database mysqltest;
create table mysqltest.t1 (i int not null auto_increment, a int, primary key
(i)) engine=innodb;
insert into mysqltest.t1 values (1, 1);
select * from mysqltest.t1 where i is null;
i a
create table t1(a int) engine=innodb;
select * from t1;
a
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 4
select * from mysqltest.t1;
i a
1 1
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 3
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 4
# On node-2
select * from t1;
a
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
select * from mysqltest.t1;
i a
1 1
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
drop database mysqltest;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
drop table t1;
# On node-1
create table t1 (a char(1) not null collate koi8r_general_ci) engine=innodb;
insert into t1 values(_koi8r"á");
Warnings:
Warning 1265 Data truncated for column 'a' at row 1
set CHARACTER SET koi8r;
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
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 4
# On node-2
set CHARACTER SET koi8r;
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
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
drop table t1;
# On node-1
create database if not exists mysqltest;
create table mysqltest.t1 (i int not null) engine=innodb;
create table t1 (i int not null) engine=innodb;
insert into mysqltest.t1 (i) values (1);
insert into t1 (i) values (2);
select * from t1;
i
2
use mysqltest;
select * from t1;
i
1
select * from t1;
i
1
use test;
select * from t1;
i
2
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 6
# On node-2
select * from t1;
i
2
use mysqltest;
select * from t1;
i
1
select * from t1;
i
1
use test;
select * from t1;
i
2
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 5
drop database mysqltest;
drop table t1;
# On node-1
create table t1 (i int not null) engine=innodb;
insert into t1 (i) values (1),(2),(3),(4);
select SQL_CALC_FOUND_ROWS * from t1 limit 2;
i
1
2
select FOUND_ROWS();
FOUND_ROWS()
4
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 6
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
select * from t1 where i=1;
i
1
select FOUND_ROWS();
FOUND_ROWS()
1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 6
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
select SQL_CALC_FOUND_ROWS * from t1 limit 2;
i
1
2
select FOUND_ROWS();
FOUND_ROWS()
4
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 7
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
select * from t1 where i=1;
i
1
select FOUND_ROWS();
FOUND_ROWS()
1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 8
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
# On node-2
select SQL_CALC_FOUND_ROWS * from t1 limit 2;
i
1
2
select FOUND_ROWS();
FOUND_ROWS()
4
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 5
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
select * from t1 where i=1;
i
1
select FOUND_ROWS();
FOUND_ROWS()
1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 5
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
select SQL_CALC_FOUND_ROWS * from t1 limit 2;
i
1
2
select FOUND_ROWS();
FOUND_ROWS()
4
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 6
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
select * from t1 where i=1;
i
1
select FOUND_ROWS();
FOUND_ROWS()
1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 7
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
drop table t1;
# On node-2
flush query cache;
reset query cache;
# On node-1
flush query cache;
reset query cache;
create table t1 (a int not null) ENGINE=MYISAM;
insert into t1 values (1),(2),(3);
select * from t1;
a
1
2
3
select * from t1;
a
1
2
3
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 9
insert delayed into t1 values (4);
select a from t1;
a
1
2
3
4
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 9
# On node-2
select * from t1;
a
select * from t1;
a
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 8
insert delayed into t1 values (4);
select a from t1;
a
4
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 8
drop table t1;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 8
# On node-1
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 9
# On node-2
show global variables like "query_cache_min_res_unit";
Variable_name Value
query_cache_min_res_unit 4096
set GLOBAL query_cache_min_res_unit=1001;
Warnings:
Warning 1292 Truncated incorrect query_cache_min_res_unit value: '1001'
show global variables like "query_cache_min_res_unit";
Variable_name Value
query_cache_min_res_unit 1000
# On node-1
show global variables like "query_cache_min_res_unit";
Variable_name Value
query_cache_min_res_unit 4096
set GLOBAL query_cache_min_res_unit=1001;
Warnings:
Warning 1292 Truncated incorrect query_cache_min_res_unit value: '1001'
show global variables like "query_cache_min_res_unit";
Variable_name Value
query_cache_min_res_unit 1000
create table t1 (a int not null) engine=innodb;
insert into t1 values (1),(2),(3);
create table t2 (a int not null) engine=innodb;
insert into t2 values (1),(2),(3);
select * from t1;
a
1
2
3
select * from t1;
a
1
2
3
select * from t2;
a
1
2
3
select * from t2;
a
1
2
3
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
# On node-2
select * from t1;
a
1
2
3
select * from t1;
a
1
2
3
select * from t2;
a
1
2
3
select * from t2;
a
1
2
3
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 10
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
drop table t1;
select a from t2;
a
1
2
3
select a from t2;
a
1
2
3
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
set GLOBAL query_cache_min_res_unit=default;
show global variables like "query_cache_min_res_unit";
Variable_name Value
query_cache_min_res_unit 4096
# On node-1
select a from t2;
a
1
2
3
select a from t2;
a
1
2
3
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
drop table t2;
set GLOBAL query_cache_min_res_unit=default;
show global variables like "query_cache_min_res_unit";
Variable_name Value
query_cache_min_res_unit 4096
# On node-1
create table t1 (a int not null) engine=innodb;
insert into t1 values (1);
select "aaa" from t1;
aaa
aaa
select "AAA" from t1;
AAA
AAA
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
# On node-2
select "aaa" from t1;
aaa
aaa
select "AAA" from t1;
AAA
AAA
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
drop table t1;
# On node-1
create table t1 (a int) engine=innodb;
set GLOBAL query_cache_size=1000;
Warnings:
Warning 1292 Truncated incorrect query_cache_size value: '1000'
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 0
select * from t1;
a
set GLOBAL query_cache_size=1024;
Warnings:
Warning 1282 Query cache failed to set size 1024; new query cache size is 0
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 0
select * from t1;
a
set GLOBAL query_cache_size=10240;
Warnings:
Warning 1282 Query cache failed to set size 10240; new query cache size is 0
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 0
select * from t1;
a
set GLOBAL query_cache_size=20480;
Warnings:
Warning 1282 Query cache failed to set size 20480; new query cache size is 0
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 0
select * from t1;
a
set GLOBAL query_cache_size=40960;
Warnings:
Warning 1282 Query cache failed to set size 40960; new query cache size is 0
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 0
select * from t1;
a
set GLOBAL query_cache_size=51200;
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 51200
select * from t1;
a
set GLOBAL query_cache_size=61440;
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 61440
select * from t1;
a
set GLOBAL query_cache_size=81920;
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 81920
select * from t1;
a
set GLOBAL query_cache_size=102400;
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 102400
select * from t1;
a
# On node-2
set GLOBAL query_cache_size=1000;
Warnings:
Warning 1292 Truncated incorrect query_cache_size value: '1000'
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 0
select * from t1;
a
set GLOBAL query_cache_size=1024;
Warnings:
Warning 1282 Query cache failed to set size 1024; new query cache size is 0
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 0
select * from t1;
a
set GLOBAL query_cache_size=10240;
Warnings:
Warning 1282 Query cache failed to set size 10240; new query cache size is 0
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 0
select * from t1;
a
set GLOBAL query_cache_size=20480;
Warnings:
Warning 1282 Query cache failed to set size 20480; new query cache size is 0
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 0
select * from t1;
a
set GLOBAL query_cache_size=40960;
Warnings:
Warning 1282 Query cache failed to set size 40960; new query cache size is 0
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 0
select * from t1;
a
set GLOBAL query_cache_size=51200;
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 51200
select * from t1;
a
set GLOBAL query_cache_size=61440;
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 61440
select * from t1;
a
set GLOBAL query_cache_size=81920;
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 81920
select * from t1;
a
set GLOBAL query_cache_size=102400;
show global variables like "query_cache_size";
Variable_name Value
query_cache_size 102400
select * from t1;
a
drop table t1;
# On node-1
set GLOBAL query_cache_size=1048576;
create table t1 (i int not null) engine=innodb;
create table t2 (i int not null) engine=innodb;
select * from t1;
i
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
create temporary table t3 (i int not null);
select * from t2;
i
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
select * from t3;
i
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
update t1 set i=(select distinct 1 from (select * from t2) a);
drop table t3;
# On node-2
set GLOBAL query_cache_size=1048576;
select * from t1;
i
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
select * from t2;
i
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
drop table t1, t2;
# On node-1
use mysql;
select * from db;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
use test;
select * from mysql.db;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
# On node-1
create table t1(id int auto_increment primary key) engine=innodb;
insert into t1 values (1), (2), (3);
select * from t1;
id
1
2
3
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
# On node-2
select * from t1;
id
1
2
3
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
# On node-1
alter table t1 rename to t2;
select * from t1;
ERROR 42S02: Table 'test.t1' doesn't exist
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
# On node-2
select * from t1;
ERROR 42S02: Table 'test.t1' doesn't exist
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
drop table t2;
# On node-1
create table t1 (word char(20) not null) engine=innodb;
select * from t1;
word
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
load data infile 'MYSQLTEST_VARDIR/std_data/words.dat' into table t1;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
select count(*) from t1;
count(*)
70
# On node-2
select count(*) from t1;
count(*)
70
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
load data infile 'MYSQLTEST_VARDIR/std_data/words.dat' into table t1;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
select count(*) from t1;
count(*)
140
drop table t1;
# On node-1
create table t1 (a int) engine=innodb;
insert into t1 values (1),(2),(3);
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
select * from t1 into outfile "query_cache.out.file";
select * from t1 into outfile "query_cache.out.file";
ERROR HY000: File 'query_cache.out.file' already exists
select * from t1 limit 1 into dumpfile "query_cache.dump.file";
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
drop table t1;
# On node-1
create table t1 (a int) engine=innodb;
insert into t1 values (1),(2);
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
select * from t1;
a
1
2
SET SQL_SELECT_LIMIT=1;
select * from t1;
a
1
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
SET SQL_SELECT_LIMIT=DEFAULT;
# On node-2
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
select * from t1;
a
1
2
SET SQL_SELECT_LIMIT=1;
select * from t1;
a
1
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
SET SQL_SELECT_LIMIT=DEFAULT;
drop table t1;
# On node-1
create table t1 (a int not null) engine=innodb;
create table t2 (a int not null) engine=innodb;
set query_cache_wlock_invalidate=1;
create view v1 as select * from t1;
select * from t1;
a
select * from t2;
a
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
lock table t1 write, t2 read;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
unlock table;
select * from t1;
a
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
lock table v1 write;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
unlock table;
drop view v1;
set query_cache_wlock_invalidate=default;
# On node-2
set query_cache_wlock_invalidate=1;
create view v1 as select * from t1;
select * from t1;
a
select * from t2;
a
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
lock table t1 write, t2 read;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
unlock table;
select * from t1;
a
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
lock table v1 write;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
unlock table;
drop view v1;
set query_cache_wlock_invalidate=default;
drop table t1,t2;
# On node-1
create table t1 (id int primary key) engine=innodb;
insert into t1 values (1),(2),(3);
select * from t1;
id
1
2
3
create temporary table t1 (a int not null auto_increment primary key);
select * from t1;
a
drop table t1;
drop table t1;
# On node-1
SET NAMES koi8r;
CREATE TABLE t1 (a char(1) character set koi8r) engine=innodb;
INSERT INTO t1 VALUES (_koi8r'á'),(_koi8r'Á');
Warnings:
Warning 1265 Data truncated for column 'a' at row 1
Warning 1265 Data truncated for column 'a' at row 2
SELECT a,'Â','â'='Â' FROM t1;
a  'â'='Â'
 0
 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
set collation_connection=koi8r_bin;
SELECT a,'Â','â'='Â' FROM t1;
a  'â'='Â'
 0
 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
set character_set_client=cp1251;
SELECT a,'Â','â'='Â' FROM t1;
a ? '?'='?'
? 1
? 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 3
set character_set_results=cp1251;
SELECT a,'Â','â'='Â' FROM t1;
a ? 'â'='Â'
? 1
? 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 4
SET NAMES default;
# On node-2
SELECT a,'Â','â'='Â' FROM t1;
a  'â'='Â'
? Â 0
? Â 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
set collation_connection=koi8r_bin;
SELECT a,'Â','â'='Â' FROM t1;
a ?? 'â'='Â'
? ?? 1
? ?? 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 2
set character_set_client=cp1251;
SELECT a,'Â','â'='Â' FROM t1;
a ?? '??'='?'
? ?? 1
? ?? 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 3
set character_set_results=cp1251;
SELECT a,'Â','â'='Â' FROM t1;
a ? 'â'='Â'
? 1
? 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 4
drop table t1;
# On node-1
create table t1 (a int) engine=innodb;
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_inserts";
Variable_name Value
Qcache_inserts 46
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
/**/ select * from t1;
a
/**/ select * from t1;
a
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_inserts";
Variable_name Value
Qcache_inserts 47
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 13
# On node-2
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_inserts";
Variable_name Value
Qcache_inserts 38
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 11
/**/ select * from t1;
a
/**/ select * from t1;
a
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_inserts";
Variable_name Value
Qcache_inserts 39
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 12
drop table t1;
# On node-1
set session query_cache_type = 2;
create table t1(a int) engine=innodb;
select table_name from information_schema.tables
where table_schema="test";
table_name
t1
drop table t1;
select table_name from information_schema.tables
where table_schema="test";
table_name
set session query_cache_type = 1;
set global query_cache_size=1024*1024;
flush query cache;
create table t1 ( a int ) engine=myisam;
insert into t1 values (1);
select a from t1;
a
1
select a from t1;
a
1
show status like 'qcache_queries_in_cache';
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 14
repair table t1;
Table Op Msg_type Msg_text
test.t1 repair status OK
show status like 'qcache_queries_in_cache';
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 14
# On node-2
select a from t1;
a
select a from t1;
a
show status like 'qcache_queries_in_cache';
Variable_name Value
Qcache_queries_in_cache 1
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 13
repair table t1;
Table Op Msg_type Msg_text
test.t1 repair status OK
show status like 'qcache_queries_in_cache';
Variable_name Value
Qcache_queries_in_cache 0
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 13
drop table t1;
# Restore original settings.
# On node-1
SET GLOBAL query_cache_size=@query_cache_size_saved;
SET GLOBAL query_cache_type=@query_cache_type_saved;
# On node-2
SET GLOBAL query_cache_size=@query_cache_size_saved;
SET GLOBAL query_cache_type=@query_cache_type_saved;
# End of test
mysql-test/suite/galera/t/query_cache.test
0 → 100644
View file @
9a0566b0
--
source
include
/
galera_cluster
.
inc
--
source
include
/
have_innodb
.
inc
--
source
include
/
have_query_cache
.
inc
--
echo
--
echo
# Execute FLUSH/RESET commands.
--
echo
# On node-1
--
connection
node_1
SET
@
query_cache_size_saved
=@@
GLOBAL
.
query_cache_size
;
SET
@
query_cache_type_saved
=@@
GLOBAL
.
query_cache_type
;
set
GLOBAL
query_cache_size
=
1355776
;
flush
query
cache
;
# This crashed in some versions
reset
query
cache
;
flush
status
;
--
echo
# On node-2
--
connection
node_2
SET
@
query_cache_size_saved
=@@
GLOBAL
.
query_cache_size
;
SET
@
query_cache_type_saved
=@@
GLOBAL
.
query_cache_type
;
set
GLOBAL
query_cache_size
=
1355776
;
flush
query
cache
;
# This crashed in some versions
reset
query
cache
;
flush
status
;
#
# INSERT/UPDATE/DELETE/DROP/SELECT
#
--
echo
# On node-1
--
connection
node_1
create
table
t1
(
a
int
not
null
)
engine
=
innodb
;
insert
into
t1
values
(
1
),(
2
),(
3
);
select
*
from
t1
;
select
*
from
t1
;
select
sql_no_cache
*
from
t1
;
select
length
(
now
())
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_inserts"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
select
*
from
t1
;
select
*
from
t1
;
select
sql_no_cache
*
from
t1
;
select
length
(
now
())
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_inserts"
;
show
status
like
"Qcache_hits"
;
# DELETE should invalidate cache on both the nodes.
--
echo
# On node-1
--
connection
node_1
delete
from
t1
where
a
=
1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
# Add a SELECT to the cache.
--
echo
# On node-1
--
connection
node_1
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
# UPDATE should invalidate cache on both the nodes.
--
echo
# On node-1
--
connection
node_1
update
t1
set
a
=
1
where
a
=
3
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
# Add a SELECT to the cache.
--
echo
# On node-1
--
connection
node_1
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
# DROP should invalidate cache on both the nodes.
--
echo
# On node-1
--
connection
node_1
drop
table
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
#
# MERGE TABLES with INSERT/UPDATE and DELETE
#
--
echo
--
echo
# On node-1
--
connection
node_1
create
table
t1
(
a
int
not
null
)
ENGINE
=
MyISAM
;
insert
into
t1
values
(
1
),(
2
),(
3
);
create
table
t2
(
a
int
not
null
)
ENGINE
=
MyISAM
;
insert
into
t2
values
(
4
),(
5
),(
6
);
create
table
t3
(
a
int
not
null
)
engine
=
MERGE
UNION
=
(
t1
,
t2
)
INSERT_METHOD
=
FIRST
;
# insert
select
*
from
t3
;
select
*
from
t3
;
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
insert
into
t2
values
(
7
);
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
select
*
from
t1
;
select
*
from
t1
;
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
insert
into
t3
values
(
8
);
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
# update
select
*
from
t3
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
update
t2
set
a
=
9
where
a
=
7
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
update
t3
set
a
=
10
where
a
=
1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
#delete
select
*
from
t3
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
delete
from
t2
where
a
=
9
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
delete
from
t3
where
a
=
10
;
select
*
from
t3
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
# MERGE table, expect no records.
select
*
from
t3
;
select
*
from
t3
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_inserts"
;
show
status
like
"Qcache_hits"
;
drop
table
t1
,
t2
,
t3
;
#
# SELECT SQL_CACHE ...
#
--
echo
# On node-1
--
connection
node_1
set
query_cache_type
=
demand
;
create
table
t1
(
a
int
not
null
)
engine
=
innodb
;
insert
into
t1
values
(
1
),(
2
),(
3
);
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
select
sql_cache
*
from
t1
union
select
*
from
t1
;
set
query_cache_type
=
2
;
select
sql_cache
*
from
t1
union
select
*
from
t1
;
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
set
query_cache_type
=
on
;
--
echo
# On node-2
--
connection
node_2
set
query_cache_type
=
demand
;
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
select
sql_cache
*
from
t1
union
select
*
from
t1
;
set
query_cache_type
=
2
;
select
sql_cache
*
from
t1
union
select
*
from
t1
;
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
set
query_cache_type
=
on
;
#
# RESET QUERY CACHE
#
--
echo
# On node-1
--
connection
node_1
reset
query
cache
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
reset
query
cache
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
#
# SELECT SQL_NO_CACHE
#
--
echo
# On node-1
--
connection
node_1
select
sql_no_cache
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
select
sql_no_cache
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
drop
table
t1
;
#
# Check that queries that uses NOW(), LAST_INSERT_ID()... are not cached.
#
--
echo
# On node-1
--
connection
node_1
create
table
t1
(
a
text
not
null
)
engine
=
innodb
;
select
CONNECTION_ID
()
from
t1
;
select
FOUND_ROWS
();
select
NOW
()
from
t1
;
select
CURDATE
()
from
t1
;
select
CURTIME
()
from
t1
;
select
DATABASE
()
from
t1
;
select
ENCRYPT
(
"test"
)
from
t1
;
select
LAST_INSERT_ID
()
from
t1
;
select
RAND
()
from
t1
;
select
UNIX_TIMESTAMP
()
from
t1
;
select
USER
()
from
t1
;
select
CURRENT_USER
()
from
t1
;
select
benchmark
(
1
,
1
)
from
t1
;
explain
extended
select
benchmark
(
1
,
1
)
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
select
CONNECTION_ID
()
from
t1
;
select
FOUND_ROWS
();
select
NOW
()
from
t1
;
select
CURDATE
()
from
t1
;
select
CURTIME
()
from
t1
;
select
DATABASE
()
from
t1
;
select
ENCRYPT
(
"test"
)
from
t1
;
select
LAST_INSERT_ID
()
from
t1
;
select
RAND
()
from
t1
;
select
UNIX_TIMESTAMP
()
from
t1
;
select
USER
()
from
t1
;
select
CURRENT_USER
()
from
t1
;
select
benchmark
(
1
,
1
)
from
t1
;
explain
extended
select
benchmark
(
1
,
1
)
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
drop
table
t1
;
#
# Non-cachable ODBC work around (and prepare cache for drop database)
#
--
echo
# On node-1
--
connection
node_1
create
database
mysqltest
;
create
table
mysqltest
.
t1
(
i
int
not
null
auto_increment
,
a
int
,
primary
key
(
i
))
engine
=
innodb
;
insert
into
mysqltest
.
t1
values
(
1
,
1
);
select
*
from
mysqltest
.
t1
where
i
is
null
;
create
table
t1
(
a
int
)
engine
=
innodb
;
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
select
*
from
mysqltest
.
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
select
*
from
mysqltest
.
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
#
# drop db
#
drop
database
mysqltest
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
drop
table
t1
;
#
# Charset conversion (cp1251_koi8 always present)
# Note: Queries using different default character sets are cached separately.
#
--
echo
# On node-1
--
connection
node_1
create
table
t1
(
a
char
(
1
)
not
null
collate
koi8r_general_ci
)
engine
=
innodb
;
insert
into
t1
values
(
_koi8r
"á"
);
set
CHARACTER
SET
koi8r
;
select
*
from
t1
;
set
CHARACTER
SET
cp1251_koi8
;
select
*
from
t1
;
set
CHARACTER
SET
DEFAULT
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
set
CHARACTER
SET
koi8r
;
select
*
from
t1
;
set
CHARACTER
SET
cp1251_koi8
;
select
*
from
t1
;
set
CHARACTER
SET
DEFAULT
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
drop
table
t1
;
#
# Same tables in different dbs
#
--
echo
# On node-1
--
connection
node_1
create
database
if
not
exists
mysqltest
;
create
table
mysqltest
.
t1
(
i
int
not
null
)
engine
=
innodb
;
create
table
t1
(
i
int
not
null
)
engine
=
innodb
;
insert
into
mysqltest
.
t1
(
i
)
values
(
1
);
insert
into
t1
(
i
)
values
(
2
);
select
*
from
t1
;
use
mysqltest
;
select
*
from
t1
;
select
*
from
t1
;
use
test
;
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
select
*
from
t1
;
use
mysqltest
;
select
*
from
t1
;
select
*
from
t1
;
use
test
;
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
drop
database
mysqltest
;
drop
table
t1
;
#
# FOUND_ROWS()
#
--
echo
# On node-1
--
connection
node_1
create
table
t1
(
i
int
not
null
)
engine
=
innodb
;
insert
into
t1
(
i
)
values
(
1
),(
2
),(
3
),(
4
);
select
SQL_CALC_FOUND_ROWS
*
from
t1
limit
2
;
select
FOUND_ROWS
();
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
select
*
from
t1
where
i
=
1
;
select
FOUND_ROWS
();
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
select
SQL_CALC_FOUND_ROWS
*
from
t1
limit
2
;
select
FOUND_ROWS
();
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
select
*
from
t1
where
i
=
1
;
select
FOUND_ROWS
();
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
--
echo
# On node-2
--
connection
node_2
select
SQL_CALC_FOUND_ROWS
*
from
t1
limit
2
;
select
FOUND_ROWS
();
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
select
*
from
t1
where
i
=
1
;
select
FOUND_ROWS
();
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
select
SQL_CALC_FOUND_ROWS
*
from
t1
limit
2
;
select
FOUND_ROWS
();
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
select
*
from
t1
where
i
=
1
;
select
FOUND_ROWS
();
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
drop
table
t1
;
#
# Test insert delayed (MYISAM)
#
--
echo
# On node-2
--
connection
node_2
flush
query
cache
;
reset
query
cache
;
--
echo
# On node-1
--
connection
node_1
flush
query
cache
;
reset
query
cache
;
create
table
t1
(
a
int
not
null
)
ENGINE
=
MYISAM
;
insert
into
t1
values
(
1
),(
2
),(
3
);
select
*
from
t1
;
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
insert
delayed
into
t1
values
(
4
);
--
sleep
5
# Wait for insert delayed to be executed.
select
a
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
select
*
from
t1
;
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
insert
delayed
into
t1
values
(
4
);
--
sleep
5
# Wait for insert delayed to be executed.
select
a
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
drop
table
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-1
--
connection
node_1
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
#
# Test of min result data unit size changing
#
--
echo
# On node-2
--
connection
node_2
show
global
variables
like
"query_cache_min_res_unit"
;
set
GLOBAL
query_cache_min_res_unit
=
1001
;
show
global
variables
like
"query_cache_min_res_unit"
;
--
echo
# On node-1
--
connection
node_1
show
global
variables
like
"query_cache_min_res_unit"
;
set
GLOBAL
query_cache_min_res_unit
=
1001
;
show
global
variables
like
"query_cache_min_res_unit"
;
create
table
t1
(
a
int
not
null
)
engine
=
innodb
;
insert
into
t1
values
(
1
),(
2
),(
3
);
create
table
t2
(
a
int
not
null
)
engine
=
innodb
;
insert
into
t2
values
(
1
),(
2
),(
3
);
select
*
from
t1
;
select
*
from
t1
;
select
*
from
t2
;
select
*
from
t2
;
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
--
echo
# On node-2
--
connection
node_2
select
*
from
t1
;
select
*
from
t1
;
select
*
from
t2
;
select
*
from
t2
;
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
drop
table
t1
;
select
a
from
t2
;
select
a
from
t2
;
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
set
GLOBAL
query_cache_min_res_unit
=
default
;
show
global
variables
like
"query_cache_min_res_unit"
;
--
echo
# On node-1
--
connection
node_1
select
a
from
t2
;
select
a
from
t2
;
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
drop
table
t2
;
set
GLOBAL
query_cache_min_res_unit
=
default
;
show
global
variables
like
"query_cache_min_res_unit"
;
#
# Case sensitive test
#
--
echo
# On node-1
--
connection
node_1
create
table
t1
(
a
int
not
null
)
engine
=
innodb
;
insert
into
t1
values
(
1
);
select
"aaa"
from
t1
;
select
"AAA"
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
select
"aaa"
from
t1
;
select
"AAA"
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
drop
table
t1
;
#
# Test of query cache resizing
#
--
echo
# On node-1
--
connection
node_1
create
table
t1
(
a
int
)
engine
=
innodb
;
set
GLOBAL
query_cache_size
=
1000
;
show
global
variables
like
"query_cache_size"
;
select
*
from
t1
;
set
GLOBAL
query_cache_size
=
1024
;
show
global
variables
like
"query_cache_size"
;
select
*
from
t1
;
set
GLOBAL
query_cache_size
=
10240
;
show
global
variables
like
"query_cache_size"
;
select
*
from
t1
;
set
GLOBAL
query_cache_size
=
20480
;
show
global
variables
like
"query_cache_size"
;
select
*
from
t1
;
set
GLOBAL
query_cache_size
=
40960
;
show
global
variables
like
"query_cache_size"
;
select
*
from
t1
;
set
GLOBAL
query_cache_size
=
51200
;
show
global
variables
like
"query_cache_size"
;
select
*
from
t1
;
set
GLOBAL
query_cache_size
=
61440
;
show
global
variables
like
"query_cache_size"
;
select
*
from
t1
;
set
GLOBAL
query_cache_size
=
81920
;
show
global
variables
like
"query_cache_size"
;
select
*
from
t1
;
set
GLOBAL
query_cache_size
=
102400
;
show
global
variables
like
"query_cache_size"
;
select
*
from
t1
;
--
echo
# On node-2
--
connection
node_2
set
GLOBAL
query_cache_size
=
1000
;
show
global
variables
like
"query_cache_size"
;
select
*
from
t1
;
set
GLOBAL
query_cache_size
=
1024
;
show
global
variables
like
"query_cache_size"
;
select
*
from
t1
;
set
GLOBAL
query_cache_size
=
10240
;
show
global
variables
like
"query_cache_size"
;
select
*
from
t1
;
set
GLOBAL
query_cache_size
=
20480
;
show
global
variables
like
"query_cache_size"
;
select
*
from
t1
;
set
GLOBAL
query_cache_size
=
40960
;
show
global
variables
like
"query_cache_size"
;
select
*
from
t1
;
set
GLOBAL
query_cache_size
=
51200
;
show
global
variables
like
"query_cache_size"
;
select
*
from
t1
;
set
GLOBAL
query_cache_size
=
61440
;
show
global
variables
like
"query_cache_size"
;
select
*
from
t1
;
set
GLOBAL
query_cache_size
=
81920
;
show
global
variables
like
"query_cache_size"
;
select
*
from
t1
;
set
GLOBAL
query_cache_size
=
102400
;
show
global
variables
like
"query_cache_size"
;
select
*
from
t1
;
drop
table
t1
;
#
# Temporary tables (ignored by Galera)
#
--
echo
# On node-1
--
connection
node_1
set
GLOBAL
query_cache_size
=
1048576
;
create
table
t1
(
i
int
not
null
)
engine
=
innodb
;
create
table
t2
(
i
int
not
null
)
engine
=
innodb
;
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
create
temporary
table
t3
(
i
int
not
null
);
select
*
from
t2
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
select
*
from
t3
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
update
t1
set
i
=
(
select
distinct
1
from
(
select
*
from
t2
)
a
);
drop
table
t3
;
--
echo
# On node-2
--
connection
node_2
set
GLOBAL
query_cache_size
=
1048576
;
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
select
*
from
t2
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
drop
table
t1
,
t2
;
#
# System databse test (no need to perform it on node_2)
# Note: Queries on system tables are not cached.
#
--
echo
# On node-1
--
connection
node_1
use
mysql
;
disable_result_log
;
select
*
from
db
;
enable_result_log
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
use
test
;
disable_result_log
;
select
*
from
mysql
.
db
;
enable_result_log
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
#
# Simple rename test
#
--
echo
# On node-1
--
connection
node_1
create
table
t1
(
id
int
auto_increment
primary
key
)
engine
=
innodb
;
insert
into
t1
values
(
1
),
(
2
),
(
3
);
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-1
--
connection
node_1
alter
table
t1
rename
to
t2
;
--
error
ER_NO_SUCH_TABLE
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
--
error
ER_NO_SUCH_TABLE
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
drop
table
t2
;
#
# Load data invalidation test
#
--
echo
# On node-1
--
connection
node_1
create
table
t1
(
word
char
(
20
)
not
null
)
engine
=
innodb
;
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
replace_result
$MYSQLTEST_VARDIR
MYSQLTEST_VARDIR
eval
load
data
infile
'$MYSQLTEST_VARDIR/std_data/words.dat'
into
table
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
select
count
(
*
)
from
t1
;
# Wait for "load data" to replicate.
--
sleep
5
--
echo
# On node-2
--
connection
node_2
select
count
(
*
)
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
--
replace_result
$MYSQLTEST_VARDIR
MYSQLTEST_VARDIR
eval
load
data
infile
'$MYSQLTEST_VARDIR/std_data/words.dat'
into
table
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
select
count
(
*
)
from
t1
;
drop
table
t1
;
#
# INTO OUTFILE/DUMPFILE test
#
--
echo
# On node-1
--
connection
node_1
create
table
t1
(
a
int
)
engine
=
innodb
;
insert
into
t1
values
(
1
),(
2
),(
3
);
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
select
*
from
t1
into
outfile
"query_cache.out.file"
;
--
error
ER_FILE_EXISTS_ERROR
select
*
from
t1
into
outfile
"query_cache.out.file"
;
select
*
from
t1
limit
1
into
dumpfile
"query_cache.dump.file"
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
drop
table
t1
;
let
$datadir
=
`select @@datadir`
;
--
remove_file
$datadir
/
test
/
query_cache
.
dump
.
file
--
remove_file
$datadir
/
test
/
query_cache
.
out
.
file
#
# Test of SQL_SELECT_LIMIT
#
--
echo
# On node-1
--
connection
node_1
create
table
t1
(
a
int
)
engine
=
innodb
;
insert
into
t1
values
(
1
),(
2
);
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
select
*
from
t1
;
SET
SQL_SELECT_LIMIT
=
1
;
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
SET
SQL_SELECT_LIMIT
=
DEFAULT
;
--
echo
# On node-2
--
connection
node_2
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
select
*
from
t1
;
SET
SQL_SELECT_LIMIT
=
1
;
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
SET
SQL_SELECT_LIMIT
=
DEFAULT
;
drop
table
t1
;
#
# WRITE LOCK & QC
#
--
echo
# On node-1
--
connection
node_1
create
table
t1
(
a
int
not
null
)
engine
=
innodb
;
create
table
t2
(
a
int
not
null
)
engine
=
innodb
;
set
query_cache_wlock_invalidate
=
1
;
create
view
v1
as
select
*
from
t1
;
select
*
from
t1
;
select
*
from
t2
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
lock
table
t1
write
,
t2
read
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
unlock
table
;
select
*
from
t1
;
# Implicit locking of t1 does not invalidate QC
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
lock
table
v1
write
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
unlock
table
;
drop
view
v1
;
set
query_cache_wlock_invalidate
=
default
;
--
echo
# On node-2
--
connection
node_2
set
query_cache_wlock_invalidate
=
1
;
create
view
v1
as
select
*
from
t1
;
select
*
from
t1
;
select
*
from
t2
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
lock
table
t1
write
,
t2
read
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
unlock
table
;
select
*
from
t1
;
# Implicit locking of t1 does not invalidate QC
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
lock
table
v1
write
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_hits"
;
unlock
table
;
drop
view
v1
;
set
query_cache_wlock_invalidate
=
default
;
drop
table
t1
,
t2
;
#
# Hiding real table stored in query cache by temporary table
#
--
echo
# On node-1
--
connection
node_1
create
table
t1
(
id
int
primary
key
)
engine
=
innodb
;
insert
into
t1
values
(
1
),(
2
),(
3
);
select
*
from
t1
;
create
temporary
table
t1
(
a
int
not
null
auto_increment
primary
key
);
select
*
from
t1
;
drop
table
t1
;
drop
table
t1
;
#
# Test character set related variables:
# character_set_result
# character_set_client
# charactet_set_connection/collation_connection
# If at least one of the above variables has changed,
# the cached query can't be reused. In the below test
# absolutely the same query is used several times,
# SELECT should fetch different results for every instance.
# No hits should be produced.
# New cache entry should appear for every SELECT.
#
--
echo
# On node-1
--
connection
node_1
SET
NAMES
koi8r
;
CREATE
TABLE
t1
(
a
char
(
1
)
character
set
koi8r
)
engine
=
innodb
;
INSERT
INTO
t1
VALUES
(
_koi8r
'á'
),(
_koi8r
'Á'
);
#
# Run select
#
SELECT
a
,
'Â'
,
'â'
=
'Â'
FROM
t1
;
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
#
# Change collation_connection and run the same query again
#
set
collation_connection
=
koi8r_bin
;
SELECT
a
,
'Â'
,
'â'
=
'Â'
FROM
t1
;
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
#
# Now change character_set_client and run the same query again
#
set
character_set_client
=
cp1251
;
SELECT
a
,
'Â'
,
'â'
=
'Â'
FROM
t1
;
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
#
# And finally change character_set_results and run the same query again
#
set
character_set_results
=
cp1251
;
SELECT
a
,
'Â'
,
'â'
=
'Â'
FROM
t1
;
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
SET
NAMES
default
;
--
echo
# On node-2
--
connection
node_2
#
# Run select
#
SELECT
a
,
'Â'
,
'â'
=
'Â'
FROM
t1
;
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
#
# Change collation_connection and run the same query again
#
set
collation_connection
=
koi8r_bin
;
SELECT
a
,
'Â'
,
'â'
=
'Â'
FROM
t1
;
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
#
# Now change character_set_client and run the same query again
#
set
character_set_client
=
cp1251
;
SELECT
a
,
'Â'
,
'â'
=
'Â'
FROM
t1
;
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
#
# And finally change character_set_results and run the same query again
#
set
character_set_results
=
cp1251
;
SELECT
a
,
'Â'
,
'â'
=
'Â'
FROM
t1
;
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_queries_in_cache"
;
drop
table
t1
;
#
# Comments before command
#
--
echo
# On node-1
--
connection
node_1
create
table
t1
(
a
int
)
engine
=
innodb
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_inserts"
;
show
status
like
"Qcache_hits"
;
/**/
select
*
from
t1
;
/**/
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_inserts"
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_inserts"
;
show
status
like
"Qcache_hits"
;
/**/
select
*
from
t1
;
/**/
select
*
from
t1
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_inserts"
;
show
status
like
"Qcache_hits"
;
drop
table
t1
;
#
# Information schema & query cache test
#
--
echo
# On node-1
--
connection
node_1
set
session
query_cache_type
=
2
;
create
table
t1
(
a
int
)
engine
=
innodb
;
select
table_name
from
information_schema
.
tables
where
table_schema
=
"test"
;
drop
table
t1
;
select
table_name
from
information_schema
.
tables
where
table_schema
=
"test"
;
# Bug #8480: REPAIR TABLE needs to flush the table from the query cache
set
session
query_cache_type
=
1
;
set
global
query_cache_size
=
1024
*
1024
;
flush
query
cache
;
create
table
t1
(
a
int
)
engine
=
myisam
;
# myisam for repair tables
insert
into
t1
values
(
1
);
select
a
from
t1
;
select
a
from
t1
;
show
status
like
'qcache_queries_in_cache'
;
show
status
like
"Qcache_hits"
;
repair
table
t1
;
show
status
like
'qcache_queries_in_cache'
;
show
status
like
"Qcache_hits"
;
--
echo
# On node-2
--
connection
node_2
select
a
from
t1
;
select
a
from
t1
;
show
status
like
'qcache_queries_in_cache'
;
show
status
like
"Qcache_hits"
;
repair
table
t1
;
show
status
like
'qcache_queries_in_cache'
;
show
status
like
"Qcache_hits"
;
drop
table
t1
;
--
echo
# Restore original settings.
--
echo
# On node-1
--
connection
node_1
SET
GLOBAL
query_cache_size
=@
query_cache_size_saved
;
SET
GLOBAL
query_cache_type
=@
query_cache_type_saved
;
--
echo
--
echo
# On node-2
--
connection
node_2
SET
GLOBAL
query_cache_size
=@
query_cache_size_saved
;
SET
GLOBAL
query_cache_type
=@
query_cache_type_saved
;
--
echo
# End of test
sql/wsrep_check_opts.cc
View file @
9a0566b0
...
...
@@ -44,8 +44,10 @@ static struct opt opts[] =
{
"wsrep_sst_receive_address"
,
"AUTO"
},
// mysqld.cc
{
"binlog_format"
,
"ROW"
},
// mysqld.cc
{
"wsrep_provider"
,
"none"
},
// mysqld.cc
#if 0
{ "query_cache_type", "0" }, // mysqld.cc
{ "query_cache_size", "0" }, // mysqld.cc
#endif
{
"locked_in_memory"
,
"0"
},
// mysqld.cc
{
"wsrep_cluster_address"
,
"0"
},
// mysqld.cc
{
"locks_unsafe_for_binlog"
,
"0"
},
// ha_innodb.cc
...
...
@@ -61,8 +63,10 @@ enum
WSREP_SST_RECEIVE_ADDRESS
,
BINLOG_FORMAT
,
WSREP_PROVIDER
,
#if 0
QUERY_CACHE_TYPE,
QUERY_CACHE_SIZE,
#endif
LOCKED_IN_MEMORY
,
WSREP_CLUSTER_ADDRESS
,
LOCKS_UNSAFE_FOR_BINLOG
,
...
...
sql/wsrep_mysqld.cc
View file @
9a0566b0
...
...
@@ -236,7 +236,11 @@ wsrep_view_handler_cb (void* app_ctx,
wsrep_cluster_size
,
wsrep_local_index
,
view
->
proto_ver
);
/* Proceed further only if view is PRIMARY */
if
(
WSREP_VIEW_PRIMARY
!=
view
->
status
)
{
if
(
WSREP_VIEW_PRIMARY
!=
view
->
status
)
{
// query cache must be initialised by now
query_cache
.
flush
();
wsrep_ready_set
(
FALSE
);
new_status
=
WSREP_MEMBER_UNDEFINED
;
/* Always record local_uuid and local_seqno in non-prim since this
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment