-- source include/have_query_cache.inc -- source include/have_ndb.inc -- source include/have_multi_ndb.inc -- source include/not_embedded.inc --disable_warnings drop table if exists t1, t2; --enable_warnings # Turn on and reset query cache on server1 connection server1; echo == Connected to server1 ==; set GLOBAL query_cache_type=on; set GLOBAL query_cache_size=1355776; set GLOBAL ndb_cache_check_time=1; reset query cache; flush status; # Turn on and reset query cache on server2 connection server2; echo == Connected to server2 ==; set GLOBAL query_cache_type=on; set GLOBAL query_cache_size=1355776; set GLOBAL ndb_cache_check_time=1; reset query cache; flush status; # Create test tables in NDB and load them into cache # on server1 connection server1; echo == Connected to server1 ==; create table t1 (a int) engine=ndbcluster; create table t2 (a int) engine=ndbcluster; insert into t1 value (2); insert into t2 value (3); select * from t1; # Run the check query once to load it into qc on server1 select a != 3 from t1; select * from t2; show status like "Qcache_queries_in_cache"; show status like "Qcache_inserts"; show status like "Qcache_hits"; # Connect server2, load table in to cache, then update the table connection server2; echo == Connected to server2 ==; show status like "Qcache_queries_in_cache"; show status like "Qcache_inserts"; show status like "Qcache_hits"; select * from t1; show status like "Qcache_queries_in_cache"; show status like "Qcache_inserts"; show status like "Qcache_hits"; update t1 set a=3 where a=2; # Connect to server1 and check that cache is invalidated # and correct data is returned connection server1; echo == Connected to server1 ==; # Loop and wait for max 10 seconds until query cache thread # has invalidated the cache and the column a in t1 is equal to 3 let $retries=20; while (`select a != 3 from t1`) { dec $retries; if (!$retries) { The query_cache thread failed to invalidate query_cache in 10 seconds; } sleep 0.5; } # Select from t1 one last time for the result file # Column a should be 3 select * from t1; # There should now be three queries in the cache show status like "Qcache_queries_in_cache"; drop table t1, t2; # Turn off and reset query cache on server1 and server2 connection server1; set GLOBAL query_cache_size=0; set GLOBAL ndb_cache_check_time=0; reset query cache; flush status; connection server2; set GLOBAL query_cache_size=0; set GLOBAL ndb_cache_check_time=0; reset query cache; flush status;