You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by bl...@apache.org on 2017/01/27 14:51:40 UTC

[3/7] cassandra git commit: Merge branch cassandra-3.0 into cassandra-3.11

Merge branch cassandra-3.0 into cassandra-3.11


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

Branch: refs/heads/trunk
Commit: 078a8415441ce965d5844cb8f246e0e61da6c397
Parents: 84d8361 714edbc
Author: Benjamin Lerer <b....@gmail.com>
Authored: Fri Jan 27 15:36:15 2017 +0100
Committer: Benjamin Lerer <b....@gmail.com>
Committed: Fri Jan 27 15:36:15 2017 +0100

----------------------------------------------------------------------
 CHANGES.txt                                     |   1 +
 .../apache/cassandra/cql3/ColumnCondition.java  |  62 ++++++-
 .../operations/InsertUpdateIfConditionTest.java | 162 ++++++++++++++++++-
 3 files changed, 215 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/078a8415/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 66e17a2,547fc07..6f7b5c2
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -186,18 -80,6 +186,19 @@@ Merged from 3.0
   * Correct log message for statistics of offheap memtable flush (CASSANDRA-12776)
   * Explicitly set locale for string validation (CASSANDRA-12541,CASSANDRA-12542,CASSANDRA-12543,CASSANDRA-12545)
  Merged from 2.2:
++ * Fix handling of nulls and unsets in IN conditions (CASSANDRA-12981)
 + * Fix race causing infinite loop if Thrift server is stopped before it starts listening (CASSANDRA-12856)
 + * CompactionTasks now correctly drops sstables out of compaction when not enough disk space is available (CASSANDRA-12979)
 + * Remove support for non-JavaScript UDFs (CASSANDRA-12883)
 + * Fix DynamicEndpointSnitch noop in multi-datacenter situations (CASSANDRA-13074)
 + * cqlsh copy-from: encode column names to avoid primary key parsing errors (CASSANDRA-12909)
 + * Temporarily fix bug that creates commit log when running offline tools (CASSANDRA-8616)
 + * Reduce granuality of OpOrder.Group during index build (CASSANDRA-12796)
 + * Test bind parameters and unset parameters in InsertUpdateIfConditionTest (CASSANDRA-12980)
 + * Use saved tokens when setting local tokens on StorageService.joinRing (CASSANDRA-12935)
 + * cqlsh: fix DESC TYPES errors (CASSANDRA-12914)
 + * Fix leak on skipped SSTables in sstableupgrade (CASSANDRA-12899)
 + * Avoid blocking gossip during pending range calculation (CASSANDRA-12281)
   * Fix purgeability of tombstones with max timestamp (CASSANDRA-12792)
   * Fail repair if participant dies during sync or anticompaction (CASSANDRA-12901)
   * cqlsh COPY: unprotected pk values before converting them if not using prepared statements (CASSANDRA-12863)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/078a8415/src/java/org/apache/cassandra/cql3/ColumnCondition.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/cql3/ColumnCondition.java
index 07f9f60,60e67f3..75a988e
--- a/src/java/org/apache/cassandra/cql3/ColumnCondition.java
+++ b/src/java/org/apache/cassandra/cql3/ColumnCondition.java
@@@ -22,8 -22,8 +22,9 @@@ import java.util.*
  
  import com.google.common.collect.Iterators;
  
 +import org.apache.cassandra.config.CFMetaData;
  import org.apache.cassandra.config.ColumnDefinition;
+ import org.apache.cassandra.cql3.Term.Terminal;
  import org.apache.cassandra.cql3.functions.Function;
  import org.apache.cassandra.db.rows.*;
  import org.apache.cassandra.db.marshal.*;
@@@ -300,10 -245,20 +301,20 @@@ public class ColumnConditio
          private SimpleInBound(ColumnCondition condition, QueryOptions options) throws InvalidRequestException
          {
              super(condition.column, condition.operator);
 -            assert !(column.type instanceof CollectionType) && condition.collectionElement == null;
 +            assert !(column.type instanceof CollectionType) && condition.field == null;
              assert condition.operator == Operator.IN;
              if (condition.inValues == null)
-                 this.inValues = ((Lists.Value) condition.value.bind(options)).getElements();
+             {
+                 Terminal terminal = condition.value.bind(options);
+ 
+                 if (terminal == null)
+                     throw new InvalidRequestException("Invalid null list in IN condition");
+ 
+                 if (terminal == Constants.UNSET_VALUE)
+                     throw new InvalidRequestException("Invalid 'unset' value in condition");
+ 
+                 this.inValues = ((Lists.Value) terminal).getElements();
+             }
              else
              {
                  this.inValues = new ArrayList<>(condition.inValues.size());

http://git-wip-us.apache.org/repos/asf/cassandra/blob/078a8415/test/unit/org/apache/cassandra/cql3/validation/operations/InsertUpdateIfConditionTest.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/cql3/validation/operations/InsertUpdateIfConditionTest.java
index 1f01931,8adce7a..2729b83
--- a/test/unit/org/apache/cassandra/cql3/validation/operations/InsertUpdateIfConditionTest.java
+++ b/test/unit/org/apache/cassandra/cql3/validation/operations/InsertUpdateIfConditionTest.java
@@@ -18,9 -18,11 +18,12 @@@
  
  package org.apache.cassandra.cql3.validation.operations;
  
+ import java.nio.ByteBuffer;
+ import java.util.List;
+ 
  import org.junit.Test;
  
 +import org.apache.cassandra.config.SchemaConstants;
  import org.apache.cassandra.cql3.CQLTester;
  import org.apache.cassandra.exceptions.InvalidRequestException;
  import org.apache.cassandra.exceptions.SyntaxException;