[jira] [Commented] (CASSANDRA-11803) Creating a materialized view on a table with "token" column breaks the cluster
[ https://issues.apache.org/jira/browse/CASSANDRA-11803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15590438#comment-15590438 ] Stefania commented on CASSANDRA-11803: -- Backported latest fix to 3.0 as [55568c1|https://git-wip-us.apache.org/repos/asf/cassandra/repo?p=cassandra.git;a=commit;h=55568c17d6100cedc77747dfe1ad05a40191216b]. > 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: 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: 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
[jira] [Commented] (CASSANDRA-11803) Creating a materialized view on a table with "token" column breaks the cluster
[ https://issues.apache.org/jira/browse/CASSANDRA-11803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15587846#comment-15587846 ] Alex Petrov commented on CASSANDRA-11803: - Sorry. Frankly speaking, I did not see the CI results for the fix. Below is the patch for both branches and triggered CI: |[trunk|https://github.com/ifesdjeen/cassandra/tree/11803-test-fix-trunk]|[dtest|http://cassci.datastax.com/job/ifesdjeen-11803-test-fix-trunk-testall/]|[utest|http://cassci.datastax.com/job/ifesdjeen-11803-test-fix-trunk-dtest/]| |[3.X|https://github.com/ifesdjeen/cassandra/tree/11803-test-fix-3.X]|[dtest|http://cassci.datastax.com/job/ifesdjeen-11803-test-fix-3.X-testall/]|[utest|http://cassci.datastax.com/job/ifesdjeen-11803-test-fix-3.X-dtest/]| > 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: 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: 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] >
[jira] [Commented] (CASSANDRA-11803) Creating a materialized view on a table with "token" column breaks the cluster
[ https://issues.apache.org/jira/browse/CASSANDRA-11803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15587845#comment-15587845 ] Alex Petrov commented on CASSANDRA-11803: - Sorry. Frankly speaking, I did not see the CI results for the fix. Below is the patch for both branches and triggered CI: |[trunk|https://github.com/ifesdjeen/cassandra/tree/11803-test-fix-trunk]|[dtest|http://cassci.datastax.com/job/ifesdjeen-11803-test-fix-trunk-testall/]|[utest|http://cassci.datastax.com/job/ifesdjeen-11803-test-fix-trunk-dtest/]| |[3.X|https://github.com/ifesdjeen/cassandra/tree/11803-test-fix-3.X]|[dtest|http://cassci.datastax.com/job/ifesdjeen-11803-test-fix-3.X-testall/]|[utest|http://cassci.datastax.com/job/ifesdjeen-11803-test-fix-3.X-dtest/]| > 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: 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: 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] >
[jira] [Commented] (CASSANDRA-11803) Creating a materialized view on a table with "token" column breaks the cluster
[ https://issues.apache.org/jira/browse/CASSANDRA-11803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15587804#comment-15587804 ] Stefania commented on CASSANDRA-11803: -- This broke [{{ColumnFamilyStoreCQLHelperTest.testDynamicComposite}}|https://cassci.datastax.com/view/cassandra-3.X/job/cassandra-3.X_testall/lastCompletedBuild/testReport/org.apache.cassandra.db/ColumnFamilyStoreCQLHelperTest/testDynamicComposite/], I think you just need to roll back the changes in [{{ColumnFamilyStoreCQLHelperTest}}|https://github.com/carlyeks/cassandra/commit/92be6501048ce6d682855ba54740f0d9cd22ab2c#diff-3ce9da4a5e19883b119f0037b27b2d81R652] since {{key}} is not a reserved keyword. > 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: 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: 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
[jira] [Commented] (CASSANDRA-11803) Creating a materialized view on a table with "token" column breaks the cluster
[ 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: 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: 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
[jira] [Commented] (CASSANDRA-11803) Creating a materialized view on a table with "token" column breaks the cluster
[ https://issues.apache.org/jira/browse/CASSANDRA-11803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15582495#comment-15582495 ] Alex Petrov commented on CASSANDRA-11803: - I've checked multiple cases, and was wondering why not use {{toString}}, as {{toCQLString}}'s purpose is to quote/double-quote identifiers if necessary. {{toString}} would work for cases such as {{select count(*) as "QuotedIdentifierCaseSenitive" from %s}} as well. > 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: 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: 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.loa
[jira] [Commented] (CASSANDRA-11803) Creating a materialized view on a table with "token" column breaks the cluster
[ https://issues.apache.org/jira/browse/CASSANDRA-11803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15581975#comment-15581975 ] Eduard Tudenhoefner commented on CASSANDRA-11803: - Code that would do something like {code} Row row = execute("SELECT count(*) FROM ks").one(); row.getLong(row.getColumns().get(0).name.toCQLString()); {code} is failing now with a NPE because *count* is now quoted > 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: 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: 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-cas
[jira] [Commented] (CASSANDRA-11803) Creating a materialized view on a table with "token" column breaks the cluster
[ https://issues.apache.org/jira/browse/CASSANDRA-11803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15574693#comment-15574693 ] Alex Petrov commented on CASSANDRA-11803: - Great, thank you! +1 > 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.x > > > 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: 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: 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.ac
[jira] [Commented] (CASSANDRA-11803) Creating a materialized view on a table with "token" column breaks the cluster
[ https://issues.apache.org/jira/browse/CASSANDRA-11803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15572655#comment-15572655 ] Carl Yeksigian commented on CASSANDRA-11803: I just pushed a couple of updates to address your nits, and rebased and pushed up two new branches for 3.x and trunk: ||3.x|[branch|https://github.com/carlyeks/cassandra/tree/ticket/11803/3.x]|[utest|http://cassci.datastax.com/view/Dev/view/carlyeks/job/carlyeks-ticket-11803-3.x-testall/]|[dtest|http://cassci.datastax.com/view/Dev/view/carlyeks/job/carlyeks-ticket-11803-3.x-dtest/]| ||trunk|[branch|https://github.com/carlyeks/cassandra/tree/ticket/11803/trunk]|[utest|http://cassci.datastax.com/view/Dev/view/carlyeks/job/carlyeks-ticket-11803-trunk-testall/]|[dtest|http://cassci.datastax.com/view/Dev/view/carlyeks/job/carlyeks-ticket-11803-trunk-dtest/]| > 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.x > > > 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: 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: 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.fetchKeyspaces
[jira] [Commented] (CASSANDRA-11803) Creating a materialized view on a table with "token" column breaks the cluster
[ https://issues.apache.org/jira/browse/CASSANDRA-11803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15564983#comment-15564983 ] Alex Petrov commented on CASSANDRA-11803: - The patch looks good with 2 small nits: It'd be to add some negative tests (e.g. that are failing when passed a keyword) as you've mentioned. Also, it looks like "synonym" reserved keywords are missing: {{SCHEMA}} and {{TABLE}}. > 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.x > > > 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: 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: 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
[jira] [Commented] (CASSANDRA-11803) Creating a materialized view on a table with "token" column breaks the cluster
[ https://issues.apache.org/jira/browse/CASSANDRA-11803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=1121#comment-1121 ] Hazel Bobrins commented on CASSANDRA-11803: --- Applied the patch to 3.0.9 and looks to work fine. No issues with the protected words in any fields and no stack on node restart > 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.x > > > 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: 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: 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(CassandraDaemo
[jira] [Commented] (CASSANDRA-11803) Creating a materialized view on a table with "token" column breaks the cluster
[ https://issues.apache.org/jira/browse/CASSANDRA-11803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15554374#comment-15554374 ] Sylvain Lebresne commented on CASSANDRA-11803: -- bq. I'm not sure if we want to preserve the quotes from users, or create a list of reserved word I'd go with a list of reserved keywords as you did since that's likely much easier and theoretically that list should never change anyway (so it shouldn't be a maintenance pain). > 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.x > > > 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: 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: 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.Sch
[jira] [Commented] (CASSANDRA-11803) Creating a materialized view on a table with "token" column breaks the cluster
[ https://issues.apache.org/jira/browse/CASSANDRA-11803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15286883#comment-15286883 ] Carl Yeksigian commented on CASSANDRA-11803: For most of where we require quotes, this works properly -- we parse the where clause and then regenerate it using {{ColumnIdentifier.maybeQuote}}. This works fine for most of the required quotes (mixed-case columns), but not for our reserved words. We don't have a list of reserved words, instead relying on the parser to reject our reserved words. I'm not sure if we want to preserve the quotes from users, or create a list of reserved words that need to be quoted and use that in {{maybeQuote}}. [~slebresne] I'll defer to your decision on this. > 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.x > > > 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: 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: 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.s
[jira] [Commented] (CASSANDRA-11803) Creating a materialized view on a table with "token" column breaks the cluster
[ https://issues.apache.org/jira/browse/CASSANDRA-11803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15286644#comment-15286644 ] Joshua McKenzie commented on CASSANDRA-11803: - bq. Would perhaps be inconsistent to reject on MV but not on base table however. I was less in the market of advocating for a specific solution and more jotting down my observations since I took a minute to poke around this ticket as it caught my eye. I'm +1 on us being consistent and preserving quoting correctly. > 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.x > > > 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: 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: 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] >
[jira] [Commented] (CASSANDRA-11803) Creating a materialized view on a table with "token" column breaks the cluster
[ https://issues.apache.org/jira/browse/CASSANDRA-11803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15286576#comment-15286576 ] Sylvain Lebresne commented on CASSANDRA-11803: -- bq. Alternatively, we could try to preserve the quoting so it doesn't blow up While I haven't looked at the details of this particular case, not preserving the quoting probably means things don't work well with any quoted identifier, which is just not ok. And if we handled quoting properly, there shouldn't be any particular problem for reserved keyword. I also don't think quoting identifiers is too complex since we don't allow escaping character (we even already have the 3 lines function to do so in {{ColumnIdentifier}}). And of course, as you said, rejecting this on MV when it's support on the base table wouldn't be very user friendly at all. So I very much think properly quoting is _the_ right way to fix this. > 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.x > > > 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: 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: 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] >
[jira] [Commented] (CASSANDRA-11803) Creating a materialized view on a table with "token" column breaks the cluster
[ https://issues.apache.org/jira/browse/CASSANDRA-11803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15284661#comment-15284661 ] Joshua McKenzie commented on CASSANDRA-11803: - Given that 'token' is a [reserved keyword|https://github.com/apache/cassandra/blob/trunk/src/antlr/Lexer.g#L164], we could validate on MV creation that we don't have any of those keywords in use as column names. Maybe in [CreateViewStatement.announceMigration|https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java#L114], maybe in [Parser.g createMaterializedViewStatement|https://github.com/apache/cassandra/blob/trunk/src/antlr/Parser.g#L714-L732]. Alternatively, we could try to preserve the quoting so it doesn't blow up, but I'm personally of the opinion that it's best to avoid the rat's nest of nested escaping of strings. Would perhaps be inconsistent to reject on MV but not on base table however. > 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 > Fix For: 3.x > > > 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: 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: 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.