diff --git a/CHANGES.txt b/CHANGES.txt index cbf82deb11..2fbf3aeaa8 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -4,6 +4,7 @@ * Remove CQL2 (CASSANDRA-5918) * Add Thrift get_multi_slice call (CASSANDRA-6757) * Optimize fetching multiple cells by name (CASSANDRA-6933) + * Allow compilation in java 8 (CASSANDRA-7208) 2.1.0-beta2 diff --git a/build.xml b/build.xml index 8c4cb7b597..9326424b58 100644 --- a/build.xml +++ b/build.xml @@ -190,7 +190,7 @@ Building Grammar ${build.src.java}/org/apache/cassandra/cli/Cli.g .... @@ -211,7 +211,7 @@ Building Grammar ${build.src.java}/org/apache/cassandra/cql3/Cql.g ... @@ -330,7 +330,9 @@ - + + + @@ -403,6 +405,7 @@ + @@ -444,6 +447,8 @@ + + diff --git a/lib/antlr-3.2.jar b/lib/antlr-3.2.jar deleted file mode 100644 index fdd167d444..0000000000 Binary files a/lib/antlr-3.2.jar and /dev/null differ diff --git a/lib/antlr-runtime-3.5.2.jar b/lib/antlr-runtime-3.5.2.jar new file mode 100644 index 0000000000..d48e3e8679 Binary files /dev/null and b/lib/antlr-runtime-3.5.2.jar differ diff --git a/lib/licenses/antlr-3.2.txt b/lib/licenses/antlr-runtime-3.5.2.txt similarity index 100% rename from lib/licenses/antlr-3.2.txt rename to lib/licenses/antlr-runtime-3.5.2.txt diff --git a/lib/licenses/stringtemplate-4.0.2.txt b/lib/licenses/stringtemplate-4.0.2.txt new file mode 100644 index 0000000000..015a53d034 --- /dev/null +++ b/lib/licenses/stringtemplate-4.0.2.txt @@ -0,0 +1,27 @@ + +Copyright (c) 2003-2006 Terence Parr +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/lib/stringtemplate-4.0.2.jar b/lib/stringtemplate-4.0.2.jar new file mode 100644 index 0000000000..87d7faf6f6 Binary files /dev/null and b/lib/stringtemplate-4.0.2.jar differ diff --git a/src/java/org/apache/cassandra/cql3/Cql.g b/src/java/org/apache/cassandra/cql3/Cql.g index 4c1f2dc1b7..6b4ad292ab 100644 --- a/src/java/org/apache/cassandra/cql3/Cql.g +++ b/src/java/org/apache/cassandra/cql3/Cql.g @@ -171,7 +171,7 @@ options { { super.nextToken(); if (tokens.size() == 0) - return Token.EOF_TOKEN; + return new CommonToken(Token.EOF); return tokens.remove(0); } @@ -900,7 +900,16 @@ term returns [Term.Raw term] ; columnOperation[List> operations] - : key=cident '=' t=term ('+' c=cident )? + : key=cident columnOperationDifferentiator[operations, key] + ; + +columnOperationDifferentiator[List> operations, ColumnIdentifier key] + : '=' normalColumnOperation[operations, key] + | '[' k=term ']' specializedColumnOperation[operations, key, k] + ; + +normalColumnOperation[List> operations, ColumnIdentifier key] + : t=term ('+' c=cident )? { if (c == null) { @@ -913,13 +922,13 @@ columnOperation[List> operations] addRawUpdate(operations, key, new Operation.Prepend(t)); } } - | key=cident '=' c=cident sig=('+' | '-') t=term + | c=cident sig=('+' | '-') t=term { if (!key.equals(c)) addRecognitionError("Only expressions of the form X = X " + $sig.text + " are supported."); addRawUpdate(operations, key, $sig.text.equals("+") ? new Operation.Addition(t) : new Operation.Substraction(t)); } - | key=cident '=' c=cident i=INTEGER + | c=cident i=INTEGER { // Note that this production *is* necessary because X = X - 3 will in fact be lexed as [ X, '=', X, INTEGER]. if (!key.equals(c)) @@ -927,7 +936,10 @@ columnOperation[List> operations] addRecognitionError("Only expressions of the form X = X " + ($i.text.charAt(0) == '-' ? '-' : '+') + " are supported."); addRawUpdate(operations, key, new Operation.Addition(Constants.Literal.integer($i.text))); } - | key=cident '[' k=term ']' '=' t=term + ; + +specializedColumnOperation[List> operations, ColumnIdentifier key, Term.Raw k] + : '=' t=term { addRawUpdate(operations, key, new Operation.SetElement(k, t)); }