Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 7872318d6 -> bc9a07939 refs/heads/cassandra-3.X 720acc611 -> f5bc3784f refs/heads/trunk e66305de0 -> b51f7e259
Update reserved keyword list Patch by Carl Yeksigian; reviewed by Alex Petrov for CASSANDRA-11803 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/bc9a0793 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/bc9a0793 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/bc9a0793 Branch: refs/heads/cassandra-3.0 Commit: bc9a0793944f7dd481646c4014d13b844439906c Parents: 7872318 Author: Carl Yeksigian <c...@apache.org> Authored: Mon Oct 17 16:15:49 2016 -0400 Committer: Carl Yeksigian <c...@apache.org> Committed: Mon Oct 17 16:15:49 2016 -0400 ---------------------------------------------------------------------- .../apache/cassandra/cql3/ReservedKeywords.java | 28 ++----------- .../cassandra/cql3/ReservedKeywordsTest.java | 43 ++++++++++++++++++++ 2 files changed, 46 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/bc9a0793/src/java/org/apache/cassandra/cql3/ReservedKeywords.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/ReservedKeywords.java b/src/java/org/apache/cassandra/cql3/ReservedKeywords.java index 91b7e61..ee052a7 100644 --- a/src/java/org/apache/cassandra/cql3/ReservedKeywords.java +++ b/src/java/org/apache/cassandra/cql3/ReservedKeywords.java @@ -20,17 +20,18 @@ package org.apache.cassandra.cql3; import java.util.Set; +import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableSet; class ReservedKeywords { - private static final String[] reservedKeywords = new String[] + @VisibleForTesting + static final String[] reservedKeywords = new String[] { "SELECT", "FROM", "WHERE", "AND", - "KEY", "ENTRIES", "FULL", "INSERT", @@ -39,7 +40,6 @@ class ReservedKeywords "LIMIT", "USING", "USE", - "COUNT", "SET", "BEGIN", "UNLOGGED", @@ -61,8 +61,6 @@ class ReservedKeywords "DROP", "PRIMARY", "INTO", - "TIMESTAMP", - "TTL", "ALTER", "RENAME", "ADD", @@ -81,27 +79,7 @@ class ReservedKeywords "DESCRIBE", "EXECUTE", "NORECURSIVE", - "ASCII", - "BIGINT", - "BLOB", - "BOOLEAN", - "COUNTER", - "DECIMAL", - "DOUBLE", - "FLOAT", - "INET", - "INT", - "SMALLINT", - "TINYINT", - "TEXT", - "UUID", - "VARCHAR", - "VARINT", - "TIMEUUID", "TOKEN", - "WRITETIME", - "DATE", - "TIME", "NULL", "NOT", "NAN", http://git-wip-us.apache.org/repos/asf/cassandra/blob/bc9a0793/test/unit/org/apache/cassandra/cql3/ReservedKeywordsTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/cql3/ReservedKeywordsTest.java b/test/unit/org/apache/cassandra/cql3/ReservedKeywordsTest.java new file mode 100644 index 0000000..aaf9824 --- /dev/null +++ b/test/unit/org/apache/cassandra/cql3/ReservedKeywordsTest.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.cassandra.cql3; + +import org.junit.Test; + +import junit.framework.Assert; +import org.apache.cassandra.exceptions.SyntaxException; + +public class ReservedKeywordsTest +{ + @Test + public void testReservedWordsForColumns() throws Exception + { + for (String reservedWord : ReservedKeywords.reservedKeywords) + { + try + { + QueryProcessor.parseStatement(String.format("ALTER TABLE ks.t ADD %s TEXT", reservedWord)); + Assert.fail(String.format("Reserved keyword %s should not have parsed", reservedWord)); + } + catch (SyntaxException ignore) + { + } + } + } +}