mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-3997: Querying a Cassandra table on a server with query cache enabled is likely to cause problems
- Disable query cache for Cassandra tables.
This commit is contained in:
16
mysql-test/suite/plugins/r/cassandra_qcache.result
Normal file
16
mysql-test/suite/plugins/r/cassandra_qcache.result
Normal file
@ -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;
|
1
mysql-test/suite/plugins/t/cassandra_qcache.opt
Normal file
1
mysql-test/suite/plugins/t/cassandra_qcache.opt
Normal file
@ -0,0 +1 @@
|
|||||||
|
--plugin-load=$HA_CASSANDRA_SO --loose-cassandra=on
|
59
mysql-test/suite/plugins/t/cassandra_qcache.test
Normal file
59
mysql-test/suite/plugins/t/cassandra_qcache.test
Normal file
@ -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;
|
@ -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;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user