Commit 6ae14e6c authored by Sergey Petrunya's avatar Sergey Petrunya

MDEV-3997: Querying a Cassandra table on a server with query cache enabled is...

MDEV-3997: Querying a Cassandra table on a server with query cache enabled is likely to cause problems
- Disable query cache for Cassandra tables.
parent 0abbcf7b
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;
--plugin-load=$HA_CASSANDRA_SO --loose-cassandra=on
#
# 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;
...@@ -272,4 +272,18 @@ public: ...@@ -272,4 +272,18 @@ public:
THR_LOCK_DATA **store_lock(THD *thd, THR_LOCK_DATA **to, THR_LOCK_DATA **store_lock(THD *thd, THR_LOCK_DATA **to,
enum thr_lock_type lock_type); ///< required 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;
}
}; };
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment