[
https://issues.apache.org/jira/browse/CASSANDRA-11803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15583247#comment-15583247
]
Alex Petrov commented on CASSANDRA-11803:
-----------------------------------------
Thanks for the quick reaction!
+1 on changes. As discussed offline, it'd be great to have a test for
non-reserved word.
> Creating a materialized view on a table with "token" column breaks the cluster
> ------------------------------------------------------------------------------
>
> Key: CASSANDRA-11803
> URL: https://issues.apache.org/jira/browse/CASSANDRA-11803
> Project: Cassandra
> Issue Type: Bug
> Components: CQL
> Environment: Kernel:
> Linux 4.4.8-20.46.amzn1.x86_64
> Java:
> Java OpenJDK Runtime Environment (build 1.8.0_91-b14)
> OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
> Cassandra:
> datastax-ddc-3.3.0-1.noarch
> datastax-ddc-tools-3.3.0-1.noarch
> Reporter: Victor Trac
> Assignee: Carl Yeksigian
> Fix For: 3.0.10, 3.10, 4.0
>
>
> On a new Cassandra cluster, if we create a table with a field called "token"
> (with quotes) and then create a materialized view that uses "token", the
> cluster breaks. A ServerError is returned, and no further nodetool operations
> on the sstables work. Restarting the Cassandra server will also fail. It
> seems like the entire cluster is hosed.
> We tried this on Cassandra 3.3 and 3.5.
> Here's how to produce (on an new, empty cassandra 3.5 docker container):
> {code}
> [cqlsh 5.0.1 | Cassandra 3.5 | CQL spec 3.4.0 | Native protocol v4]
> Use HELP for help.
> cqlsh> CREATE KEYSPACE account WITH REPLICATION = { 'class' :
> 'SimpleStrategy', 'replication_factor' : 1 };
> cqlsh> CREATE TABLE account.session (
> ... "token" blob,
> ... account_id uuid,
> ... PRIMARY KEY("token")
> ... )WITH compaction={'class': 'LeveledCompactionStrategy'} AND
> ... compression={'sstable_compression': 'LZ4Compressor'};
> cqlsh> CREATE MATERIALIZED VIEW account.account_session AS
> ... SELECT account_id,"token" FROM account.session
> ... WHERE "token" IS NOT NULL and account_id IS NOT NULL
> ... PRIMARY KEY (account_id, "token");
> ServerError: <ErrorMessage code=0000 [Server error]
> message="java.lang.RuntimeException: java.util.concurrent.ExecutionException:
> org.apache.cassandra.exceptions.SyntaxException: line 1:25 no viable
> alternative at input 'FROM' (SELECT account_id, token [FROM]...)">
> cqlsh> drop table account.session;
> ServerError: <ErrorMessage code=0000 [Server error]
> message="java.lang.RuntimeException: java.util.concurrent.ExecutionException:
> org.apache.cassandra.exceptions.SyntaxException: line 1:25 no viable
> alternative at input 'FROM' (SELECT account_id, token [FROM]...)">
> {code}
> When any sstable*, nodetool, or when the Cassandra process is restarted, this
> is emitted on startup and Cassandra exits (copied from a server w/ data):
> {code}
> INFO [main] 2016-05-12 23:25:30,074 ColumnFamilyStore.java:395 -
> Initializing system_schema.indexes
> DEBUG [SSTableBatchOpen:1] 2016-05-12 23:25:30,075 SSTableReader.java:480 -
> Opening
> /mnt/cassandra/data/system_schema/indexes-0feb57ac311f382fba6d9024d305702f/ma-4-big
> (91 bytes)
> ERROR [main] 2016-05-12 23:25:30,143 CassandraDaemon.java:697 - Exception
> encountered during startup
> org.apache.cassandra.exceptions.SyntaxException: line 1:59 no viable
> alternative at input 'FROM' (..., expire_at, last_used, token [FROM]...)
> at
> org.apache.cassandra.cql3.ErrorCollector.throwFirstSyntaxError(ErrorCollector.java:101)
> ~[apache-cassandra-3.5.0.jar:3.5.0]
> at
> org.apache.cassandra.cql3.CQLFragmentParser.parseAnyUnhandled(CQLFragmentParser.java:80)
> ~[apache-cassandra-3.5.0.jar:3.5.0]
> at
> org.apache.cassandra.cql3.QueryProcessor.parseStatement(QueryProcessor.java:512)
> ~[apache-cassandra-3.5.0.jar:3.5.0]
> at
> org.apache.cassandra.schema.SchemaKeyspace.fetchView(SchemaKeyspace.java:1128)
> ~[apache-cassandra-3.5.0.jar:3.5.0]
> at
> org.apache.cassandra.schema.SchemaKeyspace.fetchViews(SchemaKeyspace.java:1092)
> ~[apache-cassandra-3.5.0.jar:3.5.0]
> at
> org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspace(SchemaKeyspace.java:903)
> ~[apache-cassandra-3.5.0.jar:3.5.0]
> at
> org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspacesWithout(SchemaKeyspace.java:879)
> ~[apache-cassandra-3.5.0.jar:3.5.0]
> at
> org.apache.cassandra.schema.SchemaKeyspace.fetchNonSystemKeyspaces(SchemaKeyspace.java:867)
> ~[apache-cassandra-3.5.0.jar:3.5.0]
> at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:134)
> ~[apache-cassandra-3.5.0.jar:3.5.0]
> at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:124)
> ~[apache-cassandra-3.5.0.jar:3.5.0]
> at
> org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:229)
> [apache-cassandra-3.5.0.jar:3.5.0]
> at
> org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:551)
> [apache-cassandra-3.5.0.jar:3.5.0]
> at
> org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:680)
> [apache-cassandra-3.5.0.jar:3.5.0]
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)