[ https://issues.apache.org/jira/browse/CASSANDRA-17266?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Oleg Zhovtanyuk updated CASSANDRA-17266: ---------------------------------------- Description: Materialized views do not allow default_time_to_live option in CQL (see CASSANDRA-12868). But, if the MV was created without this option, DESCRIBE KEYSPACE / MATERIALIZED VIEW command generates CQL that includes it. E.g. {code:java} CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}; USE test; CREATE TABLE test_table( id text, date text, col1 text, col2 text, PRIMARY KEY(id,date) ) WITH default_time_to_live = 60 AND CLUSTERING ORDER BY (date DESC); CREATE MATERIALIZED VIEW test_view AS SELECT id, date, col1 FROM test_table WHERE id IS NOT NULL AND date IS NOT NULL PRIMARY KEY(id, date);{code} It is OK. {code:java} DESCRIBE MATERIALIZED VIEW test_view; {code} returns the same CQL + all default options: {code:java} CREATE MATERIALIZED VIEW test.test_view AS SELECT id, date, col1 FROM test.test_table WHERE id IS NOT NULL AND date IS NOT NULL PRIMARY KEY (id, date) WITH CLUSTERING ORDER BY (date ASC) AND additional_write_policy = '99p' AND bloom_filter_fp_chance = 0.01 AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'} AND cdc = false AND comment = '' AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'} AND compression = {'chunk_length_in_kb': '16', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'} AND crc_check_chance = 1.0 AND default_time_to_live = 0 AND extensions = {} AND gc_grace_seconds = 864000 AND max_index_interval = 2048 AND memtable_flush_period_in_ms = 0 AND min_index_interval = 128 AND read_repair = 'BLOCKING' AND speculative_retry = '99p'; {code} Note the 'default_time_to_live = 0' clause! If this veiw is dropped, re-creating it using DESCRIBE output would fail with {noformat} Cannot set default_time_to_live for a materialized view. Data in a materialized view always expire at the same time than the corresponding data in the parent table.{noformat} was: Materialized views do not allow default_time_to_live option in CQL (see CASSANDRA-12868). But, if the MV was created without this option, DESCRIBE KEYSPACE / MATERIALIZED VIEW command generates CQL that includes it. E.g. {code:java} CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}; USE test; CREATE TABLE test_table( id text, date text, col1 text, col2 text, PRIMARY KEY(id,date) ) WITH default_time_to_live = 60 AND CLUSTERING ORDER BY (date DESC); CREATE MATERIALIZED VIEW test_view AS SELECT id, date, col1 FROM test_table WHERE id IS NOT NULL AND date IS NOT NULL PRIMARY KEY(id, date);{code} It is OK. {code:java} DESCRIBE MATERIALIZED VIEW test_view; {code} returns the same CQL + all default options: {code:java} CREATE MATERIALIZED VIEW test.test_view AS SELECT id, date, col1 FROM test.test_table WHERE id IS NOT NULL AND date IS NOT NULL PRIMARY KEY (id, date) WITH CLUSTERING ORDER BY (date ASC) AND additional_write_policy = '99p' AND bloom_filter_fp_chance = 0.01 AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'} AND cdc = false AND comment = '' AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'} AND compression = {'chunk_length_in_kb': '16', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'} AND crc_check_chance = 1.0 AND default_time_to_live = 0 AND extensions = {} AND gc_grace_seconds = 864000 AND max_index_interval = 2048 AND memtable_flush_period_in_ms = 0 AND min_index_interval = 128 AND read_repair = 'BLOCKING' AND speculative_retry = '99p'; {code} Note the 'default_time_to_live = 0' clause! If this veiw is dropped, > DESCRIBE KEYSPACE / MATERIALIZED VIEW generates invalid CQL for views > --------------------------------------------------------------------- > > Key: CASSANDRA-17266 > URL: https://issues.apache.org/jira/browse/CASSANDRA-17266 > Project: Cassandra > Issue Type: Bug > Components: CQL/Syntax > Reporter: Oleg Zhovtanyuk > Priority: Normal > > Materialized views do not allow default_time_to_live option in CQL (see > CASSANDRA-12868). > But, if the MV was created without this option, DESCRIBE KEYSPACE / > MATERIALIZED VIEW command generates CQL that includes it. > E.g. > {code:java} > CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', > 'replication_factor': '1'}; > USE test; > CREATE TABLE test_table( > id text, > date text, > col1 text, > col2 text, > PRIMARY KEY(id,date) > ) WITH default_time_to_live = 60 AND CLUSTERING ORDER BY (date DESC); > CREATE MATERIALIZED VIEW test_view AS > SELECT id, date, col1 > FROM test_table > WHERE id IS NOT NULL AND date IS NOT NULL > PRIMARY KEY(id, date);{code} > It is OK. > {code:java} > DESCRIBE MATERIALIZED VIEW test_view; {code} > returns the same CQL + all default options: > {code:java} > CREATE MATERIALIZED VIEW test.test_view AS > SELECT id, date, col1 > FROM test.test_table > WHERE id IS NOT NULL AND date IS NOT NULL > PRIMARY KEY (id, date) > WITH CLUSTERING ORDER BY (date ASC) > AND additional_write_policy = '99p' > AND bloom_filter_fp_chance = 0.01 > AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'} > AND cdc = false > AND comment = '' > AND compaction = {'class': > 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', > 'max_threshold': '32', 'min_threshold': '4'} > AND compression = {'chunk_length_in_kb': '16', 'class': > 'org.apache.cassandra.io.compress.LZ4Compressor'} > AND crc_check_chance = 1.0 > AND default_time_to_live = 0 > AND extensions = {} > AND gc_grace_seconds = 864000 > AND max_index_interval = 2048 > AND memtable_flush_period_in_ms = 0 > AND min_index_interval = 128 > AND read_repair = 'BLOCKING' > AND speculative_retry = '99p'; > {code} > Note the 'default_time_to_live = 0' clause! If this veiw is dropped, > re-creating it using DESCRIBE output would fail with > {noformat} > Cannot set default_time_to_live for a materialized view. Data in a > materialized view always expire at the same time than the corresponding data > in the parent table.{noformat} -- This message was sent by Atlassian Jira (v8.20.1#820001) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org