diff --git a/mysql-test/suite/plugins/r/cassandra_qcache.result b/mysql-test/suite/plugins/r/cassandra_qcache.result new file mode 100644 index 00000000000..32e9db8b817 --- /dev/null +++ b/mysql-test/suite/plugins/r/cassandra_qcache.result @@ -0,0 +1,16 @@ +drop table if exists t1, t2; +create table t1 (rowkey int primary key, a int) engine=cassandra +thrift_host='localhost' keyspace='mariadbtest2' column_family='cf1'; +create table t2 like t1; +set global query_cache_size=1024*1024; +select * from t1; +rowkey a +insert into t2 values (1,1); +select * from t1; +rowkey a +1 1 +select sql_no_cache * from t1; +rowkey a +1 1 +drop table t1,t2; +set global QUERY_CACHE_SIZE=0; diff --git a/mysql-test/suite/plugins/t/cassandra_qcache.opt b/mysql-test/suite/plugins/t/cassandra_qcache.opt new file mode 100644 index 00000000000..98a4a081de5 --- /dev/null +++ b/mysql-test/suite/plugins/t/cassandra_qcache.opt @@ -0,0 +1 @@ +--plugin-load=$HA_CASSANDRA_SO --loose-cassandra=on diff --git a/mysql-test/suite/plugins/t/cassandra_qcache.test b/mysql-test/suite/plugins/t/cassandra_qcache.test new file mode 100644 index 00000000000..5ccce461a2f --- /dev/null +++ b/mysql-test/suite/plugins/t/cassandra_qcache.test @@ -0,0 +1,59 @@ +# +# Tests for cassandra storage engine +# +-- source include/have_query_cache.inc + +if (`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.ENGINES WHERE engine = 'cassandra' AND support IN ('YES', 'DEFAULT', 'ENABLED')`) +{ + --skip Test requires Cassandra. +} + +--disable_warnings +drop table if exists t1, t2; +--enable_warnings + +############################################################################ +## Cassandra initialization +############################################################################ + +# Step 1: remove the keyspace that could be left over from the previous test +--remove_files_wildcard $MYSQLTEST_VARDIR cassandra_test_cleanup.cql +--write_file $MYSQLTEST_VARDIR/cassandra_test_cleanup.cql +drop keyspace mariadbtest2; +EOF +--error 0,1,2 +--system cqlsh -3 -f $MYSQLTEST_VARDIR/cassandra_test_cleanup.cql + +# Step 2: create new keyspace and test column families +--remove_files_wildcard $MYSQLTEST_VARDIR cassandra_test_init.cql +--write_file $MYSQLTEST_VARDIR/cassandra_test_init.cql + +CREATE KEYSPACE mariadbtest2 + WITH strategy_class = 'org.apache.cassandra.locator.SimpleStrategy' + AND strategy_options:replication_factor='1'; + +USE mariadbtest2; +create columnfamily cf1 ( rowkey int primary key, a int ); +EOF + +--error 0,1,2 +--system cqlsh -3 -f $MYSQLTEST_VARDIR/cassandra_test_init.cql + +############################################################################ +## The test itsef: +############################################################################ + +create table t1 (rowkey int primary key, a int) engine=cassandra + thrift_host='localhost' keyspace='mariadbtest2' column_family='cf1'; +create table t2 like t1; + +set global query_cache_size=1024*1024; + +select * from t1; +insert into t2 values (1,1); + +select * from t1; +select sql_no_cache * from t1; + +drop table t1,t2; +set global QUERY_CACHE_SIZE=0; diff --git a/storage/cassandra/ha_cassandra.h b/storage/cassandra/ha_cassandra.h index cc42234e385..cb2f9fb237b 100644 --- a/storage/cassandra/ha_cassandra.h +++ b/storage/cassandra/ha_cassandra.h @@ -272,4 +272,18 @@ public: THR_LOCK_DATA **store_lock(THD *thd, THR_LOCK_DATA **to, enum thr_lock_type lock_type); ///< required + + my_bool register_query_cache_table(THD *thd, char *table_key, + uint key_length, + qc_engine_callback + *engine_callback, + ulonglong *engine_data) + { + /* + Do not put data from Cassandra tables into query cache (because there + is no way to tell whether the data in cassandra cluster has changed or + not) + */ + return FALSE; + } };