diff options
author | Sergey Petrunya <psergey@askmonty.org> | 2012-08-28 12:53:33 +0400 |
---|---|---|
committer | Sergey Petrunya <psergey@askmonty.org> | 2012-08-28 12:53:33 +0400 |
commit | 869826d770e844608e5871a40610f676b8e0754b (patch) | |
tree | 0c81de2c99d9377fcb6ad9f2ae1a0ffdabb71ac6 | |
parent | 8eb16159e19b38e67728fca7c7f316f921a2c7e0 (diff) | |
download | mariadb-git-869826d770e844608e5871a40610f676b8e0754b.tar.gz |
MDEV-480: TRUNCATE TABLE on a Cassandra table does not remove rows
- Remove HTON_CAN_RECREATE flag, re-create won't delete rows in cassandra.
-rw-r--r-- | mysql-test/r/cassandra.result | 10 | ||||
-rw-r--r-- | mysql-test/t/cassandra.test | 12 | ||||
-rw-r--r-- | storage/cassandra/ha_cassandra.cc | 7 |
3 files changed, 27 insertions, 2 deletions
diff --git a/mysql-test/r/cassandra.result b/mysql-test/r/cassandra.result index 096e501ceae..bb41e9a010b 100644 --- a/mysql-test/r/cassandra.result +++ b/mysql-test/r/cassandra.result @@ -156,3 +156,13 @@ Cassandra_multiget_keys_scanned 16 Cassandra_multiget_rows_read 16 delete from t1; drop table t1; +# +# MDEV-480: TRUNCATE TABLE on a Cassandra table does not remove rows +# +CREATE TABLE t1 (rowkey BIGINT PRIMARY KEY, a BIGINT) ENGINE=CASSANDRA +thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf2'; +INSERT INTO t1 VALUES (0,0),(1,1),(2,2); +truncate table t1; +select * from t1; +rowkey a +drop table t1; diff --git a/mysql-test/t/cassandra.test b/mysql-test/t/cassandra.test index 2d76a4aeb71..26e1cf85839 100644 --- a/mysql-test/t/cassandra.test +++ b/mysql-test/t/cassandra.test @@ -159,9 +159,19 @@ insert into t1 values(7, 8); select * from t1 A, t1 B where B.rowkey=A.a; show status like 'cassandra_multi%'; - delete from t1; drop table t1; + +--echo # +--echo # MDEV-480: TRUNCATE TABLE on a Cassandra table does not remove rows +--echo # +CREATE TABLE t1 (rowkey BIGINT PRIMARY KEY, a BIGINT) ENGINE=CASSANDRA + thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf2'; +INSERT INTO t1 VALUES (0,0),(1,1),(2,2); +truncate table t1; +select * from t1; +drop table t1; + ############################################################################ ## Cassandra cleanup ############################################################################ diff --git a/storage/cassandra/ha_cassandra.cc b/storage/cassandra/ha_cassandra.cc index 9e94c848988..5b1a411be6a 100644 --- a/storage/cassandra/ha_cassandra.cc +++ b/storage/cassandra/ha_cassandra.cc @@ -142,7 +142,12 @@ static int cassandra_init_func(void *p) cassandra_hton->state= SHOW_OPTION_YES; cassandra_hton->create= cassandra_create_handler; - cassandra_hton->flags= HTON_CAN_RECREATE; + /* + Don't specify HTON_CAN_RECREATE in flags. re-create is used by TRUNCATE + TABLE to create an *empty* table from scratch. Cassandra table won't be + emptied if re-created. + */ + cassandra_hton->flags= 0; cassandra_hton->table_options= cassandra_table_option_list; //cassandra_hton->field_options= example_field_option_list; cassandra_hton->field_options= NULL; |