Merge branch 'cassandra-2.0' into cassandra-2.1.0

Conflicts:
        CHANGES.txt
        src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
        src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/e8507851
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/e8507851
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/e8507851

Branch: refs/heads/trunk
Commit: e85078519c6dd175856b5cf5783ca177bb136d99
Parents: cb772e5 700e816
Author: Sylvain Lebresne <[email protected]>
Authored: Mon Aug 18 10:15:32 2014 +0200
Committer: Sylvain Lebresne <[email protected]>
Committed: Mon Aug 18 10:15:32 2014 +0200

----------------------------------------------------------------------
 CHANGES.txt                                       |  7 +++++++
 .../cassandra/cql3/statements/BatchStatement.java |  3 +++
 .../cql3/statements/ModificationStatement.java    | 18 ++++++++++++++++--
 3 files changed, 26 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e8507851/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index eeb115f,f489702..78ef5df
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,24 -1,13 +1,31 @@@
 -2.0.10
++2.1.0
++Merged from 2.0:
+  * Properly reject operations on list index with conditions (CASSANDRA-7499)
+  * (Hadoop) allow ACFRW to limit nodes to local DC (CASSANDRA-7252)
++
++
 +2.1.0-rc6
 + * Fix OOM issue from netty caching over time (CASSANDRA-7743)
 + * json2sstable couldn't import JSON for CQL table (CASSANDRA-7477)
 + * Invalidate all caches on table drop (CASSANDRA-7561)
 + * Skip strict endpoint selection for ranges if RF == nodes (CASSANRA-7765)
 + * Fix Thrift range filtering without 2ary index lookups (CASSANDRA-7741)
 + * Add tracing entries about concurrent range requests (CASSANDRA-7599)
 + * (cqlsh) Fix DESCRIBE for NTS keyspaces (CASSANDRA-7729)
 + * Remove netty buffer ref-counting (CASSANDRA-7735)
 + * Pass mutated cf to index updater for use by PRSI (CASSANDRA-7742)
 + * Include stress yaml example in release and deb (CASSANDRA-7717)
 + * workaround for netty issue causing corrupted data off the wire 
(CASSANDRA-7695)
 + * cqlsh DESC CLUSTER fails retrieving ring information (CASSANDRA-7687)
 + * Fix binding null values inside UDT (CASSANDRA-7685)
 + * Fix UDT field selection with empty fields (CASSANDRA-7670)
 + * Bogus deserialization of static cells from sstable (CASSANDRA-7684)
 + * Fix NPE on compaction leftover cleanup for dropped table (CASSANDRA-7770)
 +Merged from 2.0:
+  * (cqlsh) Wait up to 10 sec for a tracing session (CASSANDRA-7222)
   * Fix NPE in FileCacheService.sizeInBytes (CASSANDRA-7756)
 - * (cqlsh) cqlsh should automatically disable tracing when selecting
 -   from system_traces (CASSANDRA-7641)
 - * (Hadoop) Add CqlOutputFormat (CASSANDRA-6927)
 - * Don't depend on cassandra config for nodetool ring (CASSANDRA-7508)
 - * (cqlsh) Fix failing cqlsh formatting tests (CASSANDRA-7703)
 + * Remove duplicates from StorageService.getJoiningNodes (CASSANDRA-7478)
 + * Clone token map outside of hot gossip loops (CASSANDRA-7758)
   * Fix MS expiring map timeout for Paxos messages (CASSANDRA-7752)
   * Do not flush on truncate if durable_writes is false (CASSANDRA-7750)
   * Give CRR a default input_cql Statement (CASSANDRA-7226)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e8507851/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
index 88d23ca,cbe3016..90be914
--- a/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
@@@ -124,32 -124,10 +124,35 @@@ public class BatchStatement implements 
              if (timestampSet && statement.isTimestampSet())
                  throw new InvalidRequestException("Timestamp must be set 
either on BATCH or individual statements");
  
 -            statement.validate(state);
 +            if (type == Type.COUNTER && !statement.isCounter())
 +                throw new InvalidRequestException("Cannot include non-counter 
statement in a counter batch");
 +
 +            if (type == Type.LOGGED && statement.isCounter())
 +                throw new InvalidRequestException("Cannot include a counter 
statement in a logged batch");
 +
 +            if (statement.isCounter())
 +                hasCounters = true;
 +            else
 +                hasNonCounters = true;
 +        }
 +
 +        if (hasCounters && hasNonCounters)
 +            throw new InvalidRequestException("Counter and non-counter 
mutations cannot exist in the same batch");
  
 -            if (hasConditions && statement.requiresRead())
 -                throw new InvalidRequestException("Operations using list 
indexes are not allowed with IF conditions");
 +        if (hasConditions)
 +        {
 +            String ksName = null;
 +            String cfName = null;
 +            for (ModificationStatement stmt : statements)
 +            {
 +                if (ksName != null && (!stmt.keyspace().equals(ksName) || 
!stmt.columnFamily().equals(cfName)))
 +                    throw new InvalidRequestException("Batch with conditions 
cannot span multiple tables");
 +                ksName = stmt.keyspace();
 +                cfName = stmt.columnFamily();
++
++                if (stmt.requiresRead())
++                    throw new InvalidRequestException("Operations using list 
indexes are not allowed with IF conditions");
 +            }
          }
      }
  

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e8507851/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
----------------------------------------------------------------------
diff --cc 
src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
index 478f596,99dd9d9..fef0e94
--- a/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
@@@ -147,14 -151,33 +147,20 @@@ public abstract class ModificationState
  
      public void validate(ClientState state) throws InvalidRequestException
      {
-         if (hasConditions() && attrs.isTimestampSet())
-             throw new InvalidRequestException("Cannot provide custom 
timestamp for conditional updates");
+         if (hasConditions())
+         {
+             if (attrs.isTimestampSet())
 -                throw new InvalidRequestException("Cannot provide custom 
timestamp for conditional update");
++                throw new InvalidRequestException("Cannot provide custom 
timestamp for conditional updates");
+ 
+             if (requiresRead())
+                 throw new InvalidRequestException("Operations using list 
indexes are not allowed with IF conditions");
+         }
  
 -        if (isCounter())
 -        {
 -            if (attrs.isTimestampSet() && !loggedCounterTimestamp)
 -            {
 -                logger.warn("Detected use of 'USING TIMESTAMP' in a counter 
UPDATE. This is invalid " +
 -                            "because counters do not use timestamps, and the 
timestamp has been ignored. " +
 -                            "Such queries will be rejected in Cassandra 2.1+ 
- please fix your queries before then.");
 -                loggedCounterTimestamp = true;
 -            }
 +        if (isCounter() && attrs.isTimestampSet())
 +            throw new InvalidRequestException("Cannot provide custom 
timestamp for counter updates");
  
 -            if (attrs.isTimeToLiveSet() && !loggedCounterTTL)
 -            {
 -                logger.warn("Detected use of 'USING TTL' in a counter UPDATE. 
This is invalid " +
 -                            "because counter tables do not support TTL, and 
the TTL value has been ignored. " +
 -                            "Such queries will be rejected in Cassandra 2.1+ 
- please fix your queries before then.");
 -                loggedCounterTTL = true;
 -            }
 -        }
 +        if (isCounter() && attrs.isTimeToLiveSet())
 +            throw new InvalidRequestException("Cannot provide custom TTL for 
counter updates");
      }
  
      public void addOperation(Operation op)
@@@ -406,7 -445,15 +412,15 @@@
          return null;
      }
  
+     public boolean requiresRead()
+     {
+         for (Operation op : columnOperations)
+             if (op.requiresRead())
+                 return true;
+         return false;
+     }
+ 
 -    protected Map<ByteBuffer, ColumnGroupMap> 
readRequiredRows(Collection<ByteBuffer> partitionKeys, ColumnNameBuilder 
clusteringPrefix, boolean local, ConsistencyLevel cl)
 +    protected Map<ByteBuffer, CQL3Row> 
readRequiredRows(Collection<ByteBuffer> partitionKeys, Composite 
clusteringPrefix, boolean local, ConsistencyLevel cl)
      throws RequestExecutionException, RequestValidationException
      {
          // Lists SET operation incurs a read.

Reply via email to