summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Petrunya <psergey@askmonty.org>2012-08-28 12:53:33 +0400
committerSergey Petrunya <psergey@askmonty.org>2012-08-28 12:53:33 +0400
commit869826d770e844608e5871a40610f676b8e0754b (patch)
tree0c81de2c99d9377fcb6ad9f2ae1a0ffdabb71ac6
parent8eb16159e19b38e67728fca7c7f316f921a2c7e0 (diff)
downloadmariadb-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.result10
-rw-r--r--mysql-test/t/cassandra.test12
-rw-r--r--storage/cassandra/ha_cassandra.cc7
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;