Details
-
Bug
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
Cassandra 3
-
Normal
Description
Materialized views that cluster by a column that is not part of table's PK and are created from tables that have default_time_to_live seems to malfunction.
Having this table
CREATE TABLE sbutnariu.test_bug ( field1 smallint, field2 smallint, date timestamp, PRIMARY KEY ((field1), field2) ) WITH default_time_to_live = 1000;
and the materialized view
CREATE MATERIALIZED VIEW sbutnariu.test_bug_by_date AS SELECT * FROM sbutnariu.test_bug WHERE field1 IS NOT NULL AND field2 IS NOT NULL AND date IS NOT NULL PRIMARY KEY ((field1), date, field2) WITH CLUSTERING ORDER BY (date desc, field2 asc);
After inserting 3 rows with same PK (should upsert), the materialized view will have 3 rows.
insert into sbutnariu.test_bug(field1, field2, date) values (1, 2, toTimestamp(now())); insert into sbutnariu.test_bug(field1, field2, date) values (1, 2, toTimestamp(now())); insert into sbutnariu.test_bug(field1, field2, date) values (1, 2, toTimestamp(now())); select * from sbutnariu.test_bug; /*1 row*/ select * from sbutnariu.test_bug_by_date;/*3 rows*/
If I remove the ttl and try again, it works as expected:
truncate sbutnariu.test_bug; alter table sbutnariu.test_bug with default_time_to_live = 0; select * from sbutnariu.test_bug; /*1 row*/ select * from sbutnariu.test_bug_by_date;/*1 row*/
I've tested on versions 3.0.14 and 3.0.15. The bug was introduced in 3.0.15, as in 3.0.14 it works as expected.
Attachments
Attachments
Issue Links
- causes
-
CASSANDRA-14193 Two TTLTest failures caused by CASSANDRA-14071
- Resolved
- is duplicated by
-
CASSANDRA-14441 Materialized view is not deleting/updating data when made changes in base table
- Resolved
- relates to
-
CASSANDRA-11500 Obsolete MV entry may not be properly deleted
- Resolved