1#
2# Tests for cassandra storage engine
3#
4if (`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.ENGINES WHERE engine = 'cassandra' AND support IN ('YES', 'DEFAULT', 'ENABLED')`)
5{
6  --skip Test requires Cassandra.
7}
8
9--disable_warnings
10drop table if exists t0, t1;
11--enable_warnings
12
13--echo #
14--echo # Check variables and status counters
15--echo #
16show status like 'cassandra%';
17show variables like 'cassandra%';
18
19--echo #
20--echo # Test various errors on table creation.
21--echo #
22--error ER_REQUIRES_PRIMARY_KEY
23create table t1 (a int) engine=cassandra
24 thrift_host='localhost' keyspace='foo' column_family='colfam';
25
26--error ER_CONNECT_TO_FOREIGN_DATA_SOURCE
27create table t1 (a int primary key, b int) engine=cassandra
28  thrift_host='localhost' keyspace='foo' column_family='colfam';
29
30--error ER_CONNECT_TO_FOREIGN_DATA_SOURCE
31create table t1 (rowkey char(10) primary key, column1 char(10)) engine=cassandra
32  thrift_host='127.0.0.2' keyspace='foo' column_family='colfam';
33
34--error ER_CONNECT_TO_FOREIGN_DATA_SOURCE
35create table t1 (rowkey char(10) primary key, column1 char(10)) engine=cassandra
36  thrift_host='localhost' keyspace='no_such_keyspace' column_family='colfam';
37
38# No column family specified
39--error ER_CONNECT_TO_FOREIGN_DATA_SOURCE
40create table t1 (rowkey char(10) primary key, column1 char(10)) engine=cassandra
41  thrift_host='localhost' keyspace='no_such_keyspace';
42
43############################################################################
44## Cassandra initialization
45############################################################################
46
47# Step 1: remove the keyspace that could be left over from the previous test
48--remove_files_wildcard $MYSQLTEST_VARDIR cassandra_test_cleanup.cql
49--write_file $MYSQLTEST_VARDIR/cassandra_test_cleanup.cql
50drop keyspace mariadbtest2;
51EOF
52--error 0,1,2
53--system cqlsh -3 -f $MYSQLTEST_VARDIR/cassandra_test_cleanup.cql
54
55# Step 2: create new keyspace and test column families
56--remove_files_wildcard $MYSQLTEST_VARDIR cassandra_test_init.cql
57--write_file $MYSQLTEST_VARDIR/cassandra_test_init.cql
58
59CREATE KEYSPACE mariadbtest2
60  WITH strategy_class = 'org.apache.cassandra.locator.SimpleStrategy'
61  AND strategy_options:replication_factor='1';
62
63USE mariadbtest2;
64create columnfamily cf1 ( pk varchar primary key, data1 varchar, data2 bigint);
65
66create columnfamily cf2 (rowkey bigint primary key, a bigint);
67
68create columnfamily cf3 (rowkey bigint primary key, intcol int);
69
70create columnfamily cf4 (rowkey bigint primary key, datecol timestamp);
71
72create columnfamily cf5 (rowkey bigint primary key, uuidcol uuid);
73
74create columnfamily cf6 (rowkey uuid primary key, col1 int);
75
76create columnfamily cf7 (rowkey int primary key, boolcol boolean);
77
78create columnfamily cf8 (rowkey varchar primary key, countercol counter);
79update cf8 set countercol=countercol+1 where rowkey='cnt1';
80update cf8 set countercol=countercol+100 where rowkey='cnt2';
81
82create columnfamily cf9 (rowkey varchar primary key, varint_col varint);
83insert into cf9 (rowkey, varint_col) values ('val-01', 1);
84insert into cf9 (rowkey, varint_col) values ('val-0x123456', 1193046);
85insert into cf9 (rowkey, varint_col) values ('val-0x12345678', 305419896);
86
87create columnfamily cf11 (rowkey varchar primary key, decimal_col decimal);
88insert into cf11 (rowkey, decimal_col) values ('val_0.5', 0.5);
89insert into cf11 (rowkey, decimal_col) values ('val_1.5', 1.5);
90insert into cf11 (rowkey, decimal_col) values ('val_1234', 1234);
91
92create columnfamily cf12 (rowkey varchar primary key, decimal_col decimal);
93
94create columnfamily cf13 (rowkey int primary key, b blob);
95
96create columnfamily cf14 ( rowkey int primary key, a int );
97
98EOF
99--error 0,1,2
100--system cqlsh -3 -f $MYSQLTEST_VARDIR/cassandra_test_init.cql
101
102
103# Step 3: Cassandra's CQL doesn't allow certain kinds of queries. Run them in
104# CLI
105--remove_files_wildcard $MYSQLTEST_VARDIR cassandra_test_init.cli
106--write_file $MYSQLTEST_VARDIR/cassandra_test_init.cli
107use mariadbtest2;
108CREATE COLUMN FAMILY cf10
109  WITH comparator = UTF8Type
110  AND key_validation_class=UTF8Type
111  AND default_validation_class = UTF8Type;
112
113CREATE COLUMN FAMILY cfd1
114  WITH comparator = UTF8Type
115  AND key_validation_class=UTF8Type
116  AND default_validation_class = UTF8Type;
117SET cfd1['1']['very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_long_name']='1';
118
119CREATE COLUMN FAMILY cfd2
120  WITH comparator = UTF8Type
121    AND key_validation_class=Int32Type
122    AND default_validation_class = UTF8Type;
123
124EOF
125
126--error 0,1,2
127--system cassandra-cli -f $MYSQLTEST_VARDIR/cassandra_test_init.cli
128
129############################################################################
130## Cassandra initialization ends
131############################################################################
132
133--echo # Now, create a table for real and insert data
134create table t1 (pk varchar(36) primary key, data1 varchar(60), data2 bigint) engine=cassandra
135  thrift_host='localhost' keyspace='mariadbtest2' column_family='cf1';
136
137--echo # Just in case there were left-overs from previous:
138delete from t1;
139select * from t1;
140
141insert into t1 values ('rowkey10', 'data1-value', 123456);
142insert into t1 values ('rowkey11', 'data1-value2', 34543);
143insert into t1 values ('rowkey12', 'data1-value3', 454);
144select * from t1;
145
146explain
147select * from t1 where pk='rowkey11';
148select * from t1 where pk='rowkey11';
149
150# Deletion functions weirdly: it sets all columns to NULL
151#   but when If I do this in cassandra-cli:
152#
153#     del cf1[ascii('rowkey10')]
154#
155# Subsequent 'list cf1' command also gives
156#
157#    RowKey: rowkey10
158#
159# without any columns.
160#
161# CQL seems to simply ignore all "incomplete" records.
162
163delete from t1 where pk='rowkey11';
164select * from t1;
165
166delete from t1;
167select * from t1;
168
169--echo #
170--echo # A query with filesort (check that table_flags() & HA_REC_NOT_IN_SEQ,
171--echo #  also check ::rnd_pos()
172--echo #
173insert into t1 values ('rowkey10', 'data1-value', 123456);
174insert into t1 values ('rowkey11', 'data1-value2', 34543);
175insert into t1 values ('rowkey12', 'data1-value3', 454);
176select * from t1 order by data2;
177
178delete from t1;
179drop table t1;
180
181--echo #
182--echo # MDEV-476: Cassandra: Server crashes in calculate_key_len on DELETE with ORDER BY
183--echo #
184CREATE TABLE t1 (rowkey BIGINT PRIMARY KEY, a BIGINT) ENGINE=CASSANDRA
185  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf2';
186
187INSERT INTO t1 VALUES (1,1),(2,2);
188DELETE FROM t1 ORDER BY a LIMIT 1;
189
190DROP TABLE t1;
191
192--echo #
193--echo # Batched INSERT
194--echo #
195show variables like 'cassandra_insert_batch_size';
196show status like 'cassandra_row_insert%';
197CREATE TABLE t1 (rowkey BIGINT PRIMARY KEY, a BIGINT) ENGINE=CASSANDRA
198  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf2';
199
200delete from t1;
201INSERT INTO t1 VALUES (1,1),(2,2);
202DELETE FROM t1 ORDER BY a LIMIT 1;
203
204DROP TABLE t1;
205show status like 'cassandra_row_insert%';
206
207--echo # FLUSH STATUS doesn't work for our variables, just like with InnoDB.
208flush status;
209show status like 'cassandra_row_insert%';
210
211--echo #
212--echo # Batched Key Access
213--echo #
214
215--echo # Control variable (we are not yet able to make use of MRR's buffer)
216show variables like 'cassandra_multi%';
217
218--echo # MRR-related status variables:
219show status like 'cassandra_multi%';
220
221CREATE TABLE t1 (rowkey BIGINT PRIMARY KEY, a BIGINT) ENGINE=CASSANDRA
222  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf2';
223delete from t1;
224INSERT INTO t1 VALUES (0,0),(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);
225
226set @tmp_jcl=@@join_cache_level;
227set join_cache_level=8;
228explain select * from t1 A, t1 B where B.rowkey=A.a;
229
230select * from t1 A, t1 B where B.rowkey=A.a;
231show status like 'cassandra_multi%';
232
233# The following INSERTs are really UPDATEs
234insert into t1 values(1, 8);
235insert into t1 values(3, 8);
236insert into t1 values(5, 8);
237insert into t1 values(7, 8);
238
239select * from t1 A, t1 B where B.rowkey=A.a;
240show status like 'cassandra_multi%';
241
242delete from t1;
243drop table t1;
244
245--echo #
246--echo # MDEV-480: TRUNCATE TABLE on a Cassandra table does not remove rows
247--echo #
248CREATE TABLE t1 (rowkey BIGINT PRIMARY KEY, a BIGINT) ENGINE=CASSANDRA
249  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf2';
250INSERT INTO t1 VALUES (0,0),(1,1),(2,2);
251truncate table t1;
252select * from t1;
253drop table t1;
254
255--echo #
256--echo # MDEV-494, part #1: phantom row for big full-scan selects
257--echo #
258create table t0 (a int);
259insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
260
261CREATE TABLE t1 (rowkey BIGINT PRIMARY KEY, a BIGINT) ENGINE=CASSANDRA
262  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf2';
263
264insert into t1 select A.a + 10 * B.a + 100*C.a, 12345 from t0 A, t0 B, t0 C;
265
266select count(*) from t1;
267select count(*) from t1 where a=12345;
268
269delete from t1;
270drop table t1;
271drop table t0;
272
273--echo # 32-bit INT type support
274CREATE TABLE t1 (rowkey BIGINT PRIMARY KEY, intcol INT) ENGINE=CASSANDRA
275  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf3';
276insert into t1 values (10,10);
277insert into t1 values (12,12);
278delete from t1;
279drop table t1;
280
281--echo #
282--echo # Try accessing column family w/o explicitly defined columns
283--echo #
284--error ER_INTERNAL_ERROR
285CREATE TABLE t1 (my_primary_key varchar(10) PRIMARY KEY) ENGINE=CASSANDRA
286  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf10';
287
288CREATE TABLE t1 (rowkey varchar(10) PRIMARY KEY) ENGINE=CASSANDRA
289  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf10';
290
291DROP TABLE t1;
292
293--echo #
294--echo # Timestamp datatype support
295--echo #
296CREATE TABLE t2 (rowkey bigint PRIMARY KEY, datecol timestamp) ENGINE=CASSANDRA
297  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf4';
298
299delete from t2;
300insert into t2 values (1, '2012-08-29 01:23:45');
301select * from t2;
302delete from t2;
303
304--echo # MDEV-498: Cassandra: Inserting a timestamp does not work on a 32-bit system
305INSERT INTO t2 VALUES (10,'2012-12-12 12:12:12');
306SELECT * FROM t2;
307delete from t2;
308
309--echo #
310--echo # (no MDEV#) Check that insert counters work correctly
311--echo #
312create table t0 (a int);
313insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
314let $start_inserts=`select variable_value from information_schema.SESSION_STATUS
315                   where variable_name ='Cassandra_row_inserts'`;
316let $start_insert_batches=`select variable_value from information_schema.SESSION_STATUS
317                          where variable_name ='Cassandra_row_insert_batches'`;
318
319set cassandra_insert_batch_size=10;
320insert into t2 select A.a+10*B.a, now() from t0 A, t0 B;
321
322--disable_query_log
323eval select
324   (select variable_value - $start_inserts from information_schema.SESSION_STATUS
325     where variable_name ='Cassandra_row_inserts')
326   AS 'inserts',
327   (select variable_value - $start_insert_batches from information_schema.SESSION_STATUS
328     where variable_name ='Cassandra_row_insert_batches')
329   AS 'insert_batches';
330--enable_query_log
331
332let $start_inserts=`select variable_value from information_schema.SESSION_STATUS
333                   where variable_name ='Cassandra_row_inserts'`;
334let $start_insert_batches=`select variable_value from information_schema.SESSION_STATUS
335                          where variable_name ='Cassandra_row_insert_batches'`;
336
337set cassandra_insert_batch_size=1;
338insert into t2 select A.a+10*B.a+100, now() from t0 A, t0 B;
339
340--disable_query_log
341eval select
342   (select variable_value - $start_inserts from information_schema.SESSION_STATUS
343     where variable_name ='Cassandra_row_inserts')
344   AS 'inserts',
345   (select variable_value - $start_insert_batches from information_schema.SESSION_STATUS
346     where variable_name ='Cassandra_row_insert_batches')
347   AS 'insert_batches';
348--enable_query_log
349
350delete from t2;
351drop table t2;
352drop table t0;
353
354--echo #
355--echo # UUID datatype support
356--echo #
357#create columnfamily cf5 (rowkey bigint primary key, uuidcol uuid);
358CREATE TABLE t2 (rowkey bigint PRIMARY KEY, uuidcol char(36)) ENGINE=CASSANDRA
359  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf5';
360delete from t2;
361
362insert into t2 values(1,'9b5658dc-f32f-11e1-94cd-f46d046e9f09');
363
364--error ER_WARN_DATA_OUT_OF_RANGE
365insert into t2 values(2,'not-an-uuid');
366
367--error ER_WARN_DATA_OUT_OF_RANGE
368insert into t2 values(3,'9b5658dc-f32f-11e1=94cd-f46d046e9f09');
369
370--error ER_WARN_DATA_OUT_OF_RANGE
371insert into t2 values(4,'9b5658dc-fzzf-11e1-94cd-f46d046e9f09');
372
373--error ER_WARN_DATA_OUT_OF_RANGE
374insert into t2 values
375 (5,'9b5658dc-f11f-11e1-94cd-f46d046e9f09'),
376 (6,'9b5658dc-f11f011e1-94cd-f46d046e9f09');
377
378select * from t2;
379
380delete from t2;
381drop table t2;
382
383# create columnfamily cf6 (rowkey uuid primary key, col1 int);
384CREATE TABLE t2 (rowkey char(36) PRIMARY KEY, col1 int) ENGINE=CASSANDRA
385  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf6';
386delete from t2;
387
388insert into t2 values('9b5658dc-f32f-11e1-94cd-f46d046e9f09', 1234);
389
390--error ER_WARN_DATA_OUT_OF_RANGE
391insert into t2 values('not-an-uuid', 563);
392
393select * from t2;
394delete from t2;
395drop table t2;
396
397
398--echo #
399--echo # boolean datatype support
400--echo #
401# create columnfamily cf7 (rowkey int primary key, boolcol boolean);
402CREATE TABLE t2 (rowkey int PRIMARY KEY, boolcol bool) ENGINE=CASSANDRA
403  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf7';
404insert into t2 values (0, 0);
405insert into t2 values (1, 1);
406select * from t2;
407delete from t2;
408drop table t2;
409
410
411--echo #
412--echo # Counter datatype support (read-only)
413--echo #
414# create columnfamily cf8 (rowkey int primary key, countercol counter);
415CREATE TABLE t2 (rowkey varchar(32) PRIMARY KEY, countercol bigint) ENGINE=CASSANDRA
416  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf8';
417select * from t2;
418drop table t2;
419
420--echo #
421--echo # Check that @@cassandra_default_thrift_host works
422--echo #
423show variables like 'cassandra_default_thrift_host';
424set @tmp=@@cassandra_default_thrift_host;
425--error ER_GLOBAL_VARIABLE
426set cassandra_default_thrift_host='localhost';
427set global cassandra_default_thrift_host='localhost';
428
429--echo # Try creating a table without specifying thrift_host:
430CREATE TABLE t2 (rowkey varchar(32) PRIMARY KEY, countercol bigint) ENGINE=CASSANDRA
431  keyspace='mariadbtest2' column_family = 'cf8';
432select * from t2;
433drop table t2;
434
435set global cassandra_default_thrift_host=@tmp;
436
437--echo #
438--echo # Consistency settings
439--echo #
440show variables like 'cassandra_%consistency';
441set @tmp=@@cassandra_write_consistency;
442
443--echo # Unfortunately, there is no easy way to check if setting have the effect..
444set cassandra_write_consistency='ONE';
445set cassandra_write_consistency='QUORUM';
446set cassandra_write_consistency='LOCAL_QUORUM';
447set cassandra_write_consistency='EACH_QUORUM';
448set cassandra_write_consistency='ALL';
449set cassandra_write_consistency='ANY';
450set cassandra_write_consistency='TWO';
451set cassandra_write_consistency='THREE';
452
453set cassandra_write_consistency=@tmp;
454
455--echo #
456--echo # varint datatype support
457--echo #
458# create columnfamily cf9 (rowkey varchar primary key, varint_col varint);
459CREATE TABLE t2 (rowkey varchar(32) PRIMARY KEY, varint_col varbinary(32)) ENGINE=CASSANDRA
460  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf9';
461--sorted_result
462select rowkey, hex(varint_col) from t2;
463drop table t2;
464
465--echo # now, let's check what happens when MariaDB's column is not wide enough:
466CREATE TABLE t2 (rowkey varchar(32) PRIMARY KEY, varint_col varbinary(2)) ENGINE=CASSANDRA
467  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf9';
468--sorted_result
469--error ER_INTERNAL_ERROR
470select rowkey, hex(varint_col) from t2;
471drop table t2;
472
473--echo #
474--echo # Decimal datatype support
475--echo #
476CREATE TABLE t2 (rowkey varchar(32) PRIMARY KEY, decimal_col varbinary(32)) ENGINE=CASSANDRA
477  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf11';
478select rowkey, hex(decimal_col) from t2;
479drop table t2;
480
481--echo #
482--echo # Mapping TIMESTAMP -> int64
483--echo #
484set @save_tz= @@time_zone;
485set time_zone='UTC';
486CREATE TABLE t2 (rowkey bigint PRIMARY KEY, datecol timestamp) ENGINE=CASSANDRA
487  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf4';
488insert into t2 values (1, '2012-08-29 01:23:45');
489INSERT INTO t2 VALUES (10,'2012-08-29 01:23:46');
490drop table t2;
491
492CREATE TABLE t2 (rowkey bigint PRIMARY KEY, datecol bigint) ENGINE=CASSANDRA
493  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf4';
494select * from t2;
495delete from t2;
496drop table t2;
497set time_zone=@save_tz;
498
499--echo #
500--echo # Check whether changing parameters with ALTER TABLE works.
501--echo #
502CREATE TABLE t2 (rowkey varchar(32) PRIMARY KEY, decimal_col varbinary(32)) ENGINE=CASSANDRA
503  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf11';
504
505#--error ER_INTERNAL_ERROR
506#alter table t2 column_family='cf9';
507
508drop table t2;
509
510CREATE TABLE t2 (rowkey varchar(32) PRIMARY KEY, decimal_col varbinary(32)) ENGINE=CASSANDRA
511  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf11';
512
513let $c1= `select variable_value from information_schema.global_status
514          where variable_name like 'cassandra_row_inserts'`;
515alter table t2 column_family='cf12';
516let $c2= `select variable_value from information_schema.global_status
517          where variable_name like 'cassandra_row_inserts'`;
518
519--disable_query_log
520eval select ($c2 - $c1) as 'Writes made during ALTER TABLE';
521--enable_query_log
522
523drop table t2;
524
525--echo #
526--echo # UPDATE command support
527--echo #
528create table t1 (pk varchar(36) primary key, data1 varchar(60), data2 bigint) engine=cassandra
529  thrift_host='localhost' keyspace='mariadbtest2' column_family='cf1';
530
531insert into t1 values ('rowkey10', 'data1-value', 123456);
532insert into t1 values ('rowkey11', 'data1-value2', 34543);
533insert into t1 values ('rowkey12', 'data1-value3', 454);
534select * from t1;
535
536update t1 set data1='updated-1' where pk='rowkey11';
537select * from t1;
538update t1 set pk='new-rowkey12' where pk='rowkey12';
539select * from t1;
540
541delete from t1;
542drop table t1;
543
544--echo #
545--echo # Dynamic columns support
546--echo #
547CREATE TABLE t2 (rowkey bigint PRIMARY KEY, uuidcol blob DYNAMIC_COLUMN_STORAGE=1) ENGINE=CASSANDRA thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf5';
548drop table t2;
549
550--echo #error: dynamic column is not a blob
551--error ER_WRONG_FIELD_SPEC
552CREATE TABLE t2 (rowkey bigint PRIMARY KEY, uuidcol char(36) DYNAMIC_COLUMN_STORAGE=1) ENGINE=CASSANDRA thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf5';
553
554--echo #error: double dynamic column
555--error ER_WRONG_FIELD_SPEC
556CREATE TABLE t2 (rowkey bigint PRIMARY KEY, uuidcol blob DYNAMIC_COLUMN_STORAGE=1, textcol blob DYNAMIC_COLUMN_STORAGE=1) ENGINE=CASSANDRA thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf5';
557
558--echo #
559--echo # Dynamic column read
560--echo #
561#prepare data
562CREATE TABLE t2 (rowkey bigint PRIMARY KEY, uuidcol char(36)) ENGINE=CASSANDRA
563  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf5';
564delete from t2;
565insert into t2 values(1,'9b5658dc-f32f-11e1-94cd-f46d046e9f09');
566insert into t2 values(2,'9b5658dc-f32f-11e1-94cd-f46d046e9f0a');
567drop table t2;
568
569#test dynamic column read
570CREATE TABLE t2 (rowkey bigint PRIMARY KEY, dyn blob DYNAMIC_COLUMN_STORAGE=yes) ENGINE=CASSANDRA thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf5';
571select rowkey, column_list(dyn), column_get(dyn, 'uuidcol' as char) from t2;
572drop table t2;
573
574#cleanup data
575CREATE TABLE t2 (rowkey bigint PRIMARY KEY, uuidcol char(36)) ENGINE=CASSANDRA
576  thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf5';
577delete from t2;
578drop table t2;
579
580--echo #
581--echo # Dynamic column insert
582--echo #
583CREATE TABLE t2 (rowkey bigint PRIMARY KEY, dyn blob DYNAMIC_COLUMN_STORAGE=yes) ENGINE=CASSANDRA thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf5';
584insert into t2 values (1, column_create("dyn1", 1, "dyn2", "two"));
585select rowkey, column_json(dyn) from t2;
586delete from t2;
587drop table t2;
588--echo # bigint
589CREATE TABLE t1 (rowkey bigint PRIMARY KEY, dyn blob DYNAMIC_COLUMN_STORAGE=yes) ENGINE=CASSANDRA thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf2';
590insert into t1 values (1, column_create("dyn1", 1, "dyn2", "two", 'a', 254324));
591insert into t1 values (2, column_create("dyn1", 1, "dyn2", "two", 'a', 2543));
592select rowkey, column_json(dyn) from t1;
593delete from t1;
594drop table t1;
595--echo # int
596CREATE TABLE t1 (rowkey bigint PRIMARY KEY, dyn blob DYNAMIC_COLUMN_STORAGE=yes) ENGINE=CASSANDRA thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf3';
597insert into t1 values (1, column_create("dyn1", 1, "dyn2", "two", 'intcol', 254324));
598insert into t1 values (2, column_create("dyn1", 1, "dyn2", "two", 'intcol', 2543));
599select rowkey, column_json(dyn) from t1;
600delete from t1;
601drop table t1;
602--echo # timestamp
603CREATE TABLE t1 (rowkey bigint PRIMARY KEY, dyn blob DYNAMIC_COLUMN_STORAGE=yes) ENGINE=CASSANDRA thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf4';
604insert into t1 values (1, column_create("dyn1", 1, "dyn2", "two", 'datecol', 254324));
605insert into t1 values (2, column_create("dyn1", 1, "dyn2", "two", 'datecol', 2543));
606select rowkey, column_json(dyn) from t1;
607delete from t1;
608drop table t1;
609--echo # boolean
610CREATE TABLE t1 (rowkey int PRIMARY KEY, dyn blob DYNAMIC_COLUMN_STORAGE=yes) ENGINE=CASSANDRA thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cf7';
611insert into t1 values (1, column_create("dyn1", 1, "dyn2", "two", 'boolcol', 254324));
612insert into t1 values (2, column_create("dyn1", 1, "dyn2", "two", 'boolcol', 0));
613select rowkey, column_json(dyn) from t1;
614select rowkey, column_json(dyn) from t1;
615update t1 set dyn=column_add(dyn, "dyn2", null, "dyn3", "3");
616select rowkey, column_json(dyn) from t1;
617update t1 set dyn=column_add(dyn, "dyn1", null) where rowkey= 1;
618select rowkey, column_json(dyn) from t1;
619update t1 set dyn=column_add(dyn, "dyn3", null, "a", "ddd");
620select rowkey, column_json(dyn) from t1;
621update t1 set dyn=column_add(dyn, "12345678901234", "ddd");
622select rowkey, column_json(dyn) from t1;
623update t1 set dyn=column_add(dyn, "12345678901234", null);
624select rowkey, column_json(dyn) from t1;
625update t1 set dyn=column_add(dyn, 'boolcol', null) where rowkey= 2;
626select rowkey, column_json(dyn) from t1;
627update t1 set rowkey= 3, dyn=column_add(dyn, "dyn1", null, 'boolcol', 0) where rowkey= 2;
628select rowkey, column_json(dyn) from t1;
629delete from t1;
630drop table t1;
631
632CREATE TABLE t1 (rowkey varchar(10) PRIMARY KEY, dyn blob DYNAMIC_COLUMN_STORAGE=yes) ENGINE=CASSANDRA thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cfd1';
633--error ER_INTERNAL_ERROR
634select * from t1;
635drop table t1;
636
637# MDEV-560
638CREATE TABLE t1 (rowkey int PRIMARY KEY, dyn blob DYNAMIC_COLUMN_STORAGE=yes)
639ENGINE=CASSANDRA thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cfd2';
640DELETE FROM t1;
641insert into t1 values (1, column_create("dyn", 1));
642select rowkey, column_list(dyn) from t1;
643# Cleanup
644delete from t1;
645DROP TABLE t1;
646
647# MDEV-561 (incorrect format data to dynamic column)
648CREATE TABLE t1 (rowkey int PRIMARY KEY, dyn blob DYNAMIC_COLUMN_STORAGE=yes)
649ENGINE=CASSANDRA thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cfd2';
650--error ER_DYN_COL_WRONG_FORMAT
651insert into t1 values (1,'9b5658dc-f32f-11e1-94cd-f46d046e9f0a');
652delete from t1;
653DROP TABLE t1;
654
655--echo #
656--echo # MDEV-565: Server crashes in ha_cassandra::write_row on
657--echo # inserting NULL into a dynamic column
658--echo #
659CREATE TABLE t1 (rowkey int PRIMARY KEY, dyn blob DYNAMIC_COLUMN_STORAGE=yes)
660ENGINE=CASSANDRA thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cfd2';
661insert into t1 values (1, NULL);
662delete from t1;
663DROP TABLE t1;
664
665--echo #
666--echo # strange side effect of Cassandra - remiving all columns of primary
667--echo # key removes all row.
668--echo #
669CREATE TABLE t1 (rowkey int PRIMARY KEY, dyn blob DYNAMIC_COLUMN_STORAGE=yes)
670ENGINE=CASSANDRA thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cfd2';
671INSERT INTO t1 VALUES(2,column_create("ab","ab"));
672select rowkey, column_json(dyn) from t1;
673UPDATE t1 set dyn=NULL;
674select rowkey, column_json(dyn) from t1;
675INSERT INTO t1 VALUES(2,column_create("ab","ab"));
676select rowkey, column_json(dyn) from t1;
677UPDATE t1 set dyn="";
678select rowkey, column_json(dyn) from t1;
679delete from t1;
680DROP TABLE t1;
681
682--echo #
683--echo # MDEV-4005 #Server crashes on creating a Cassandra table
684--echo # with a mix of static and dynamic columns
685--echo #
686--disable_warnings
687DROP TABLE IF EXISTS t1, t2;
688--enable_warnings
689
690--remove_files_wildcard $MYSQLTEST_VARDIR cassandra_test_cleanup.cql
691--write_file $MYSQLTEST_VARDIR/cassandra_test_cleanup.cql
692drop keyspace bug;
693EOF
694--error 0,1,2
695--system cqlsh -3 -f $MYSQLTEST_VARDIR/cassandra_test_cleanup.cql
696
697--remove_files_wildcard $MYSQLTEST_VARDIR cassandra_test_init.cql
698--write_file $MYSQLTEST_VARDIR/cassandra_test_init.cql
699
700CREATE KEYSPACE bug
701  WITH strategy_class = 'org.apache.cassandra.locator.SimpleStrategy'
702  AND strategy_options:replication_factor='1';
703
704USE bug;
705create columnfamily cf1 ( pk int primary key, col_int int, a bigint );
706EOF
707
708--system cqlsh -3 -f $MYSQLTEST_VARDIR/cassandra_test_init.cql
709
710
711CREATE TABLE t1 (
712 pk int primary key,
713 col_int int,
714 dyncol blob DYNAMIC_COLUMN_STORAGE=yes
715) ENGINE=cassandra keyspace='bug' thrift_host = '127.0.0.1' column_family='cf1';
716
717drop table t1;
718
719
720--echo #
721--echo # MDEV-4000: Mapping between Cassandra blob (BytesType) and MySQL BLOB does not work
722--echo #
723
724create table t1 (rowkey int primary key, b blob ) ENGINE=CASSANDRA thrift_host = '127.0.0.1' `keyspace`='mariadbtest2' `column_family`='cf13';
725
726insert into t1 values (1, 'fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo-bar');
727insert into t1 values (2, 'qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq-baz');
728
729select * from t1;
730drop table t1;
731
732--echo #
733--echo # MDEV-4001: Cassandra: server crashes in ha_cassandra::end_bulk_insert on INSERT .. SELECT with a non-existing column
734--echo #
735create table t1 (rowkey int primary key, a int)  ENGINE=cassandra thrift_host='127.0.0.1' keyspace='mariadbtest2' column_family='cf14';
736--error ER_BAD_FIELD_ERROR
737insert into t1 (a) select b from t1;
738drop table t1;
739
740############################################################################
741## Cassandra cleanup
742############################################################################
743--disable_parsing
744drop columnfamily cf1;
745drop columnfamily cf2;
746drop columnfamily cf3;
747drop columnfamily cf4;
748drop columnfamily cf5;
749drop columnfamily cf6;
750drop columnfamily cf7;
751
752drop columnfamily cf13;
753drop columnfamily cf14;
754--enable_parsing
755############################################################################
756## Cassandra cleanup ends
757############################################################################
758
759