Author: xedin
Date: Wed Nov 16 18:50:44 2011
New Revision: 1202834
URL: http://svn.apache.org/viewvc?rev=1202834&view=rev
Log:
Fix to properly support update of the counter with expression like '<field> =
<field> - -<num>'
patch by Pavel Yaskevich; reviewed by Paul Canon for CASSANDRA-3418
Modified:
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cql/Cql.g
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cql/Term.java
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cql/UpdateStatement.java
Modified:
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cql/Cql.g
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cql/Cql.g?rev=1202834&r1=1202833&r2=1202834&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cql/Cql.g
(original)
+++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cql/Cql.g
Wed Nov 16 18:50:44 2011
@@ -470,6 +470,7 @@ termPairWithOperation[Map<Term, Operatio
| c=term ( '+' v=term { columns.put(key, new
Operation(c, org.apache.cassandra.cql.Operation.OperationType.PLUS, v)); }
| op='-'? v=intTerm
{ validateMinusSupplied(op, v, input);
+ if (op != null) v = new
Term(-(Long.valueOf(v.getText())), v.getType());
columns.put(key, new Operation(c,
org.apache.cassandra.cql.Operation.OperationType.MINUS, v)); } ))
;
Modified:
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cql/Term.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cql/Term.java?rev=1202834&r1=1202833&r2=1202834&view=diff
==============================================================================
---
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cql/Term.java
(original)
+++
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cql/Term.java
Wed Nov 16 18:50:44 2011
@@ -54,6 +54,12 @@ public class Term
this.text = text == null ? "" : text;
this.type = type;
}
+
+ public Term(long value, TermType type)
+ {
+ this.text = String.valueOf(value);
+ this.type = type;
+ }
protected Term()
{
Modified:
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cql/UpdateStatement.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cql/UpdateStatement.java?rev=1202834&r1=1202833&r2=1202834&view=diff
==============================================================================
---
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cql/UpdateStatement.java
(original)
+++
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cql/UpdateStatement.java
Wed Nov 16 18:50:44 2011
@@ -217,11 +217,6 @@ public class UpdateStatement extends Abs
try
{
value = Long.parseLong(op.b.getText());
-
- if (op.type == OperationType.MINUS)
- {
- if (value > 0) value *= -1;
- }
}
catch (NumberFormatException e)
{