This is an automated email from the ASF dual-hosted git repository.

adelapena pushed a commit to branch cassandra-3.0
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit be1e3de1c3cefeacbe8c8d8551a00cd9642e32b8
Merge: 7a554a7 9f8d5b8
Author: Andrés de la Peña <a.penya.gar...@gmail.com>
AuthorDate: Thu Jul 23 12:40:24 2020 +0100

    Merge branch 'cassandra-2.2' into cassandra-3.0
    
    # Conflicts:
    #   CHANGES.txt
    #   src/java/org/apache/cassandra/cql3/Lists.java
    #   src/java/org/apache/cassandra/cql3/Maps.java
    #   src/java/org/apache/cassandra/cql3/Sets.java

 CHANGES.txt                                        |   2 +
 src/java/org/apache/cassandra/cql3/Lists.java      |  18 +-
 src/java/org/apache/cassandra/cql3/Maps.java       |  27 +-
 src/java/org/apache/cassandra/cql3/Sets.java       |  20 +-
 .../validation/entities/FrozenCollectionsTest.java | 468 +++++++++++++++++----
 5 files changed, 450 insertions(+), 85 deletions(-)

diff --cc CHANGES.txt
index 0bd6421,9034ae1..06a25b8
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,31 -1,5 +1,33 @@@
 -2.2.17
 +3.0.22:
 + * Fix empty/null json string representation (CASSANDRA-15896)
++Merged from 2.2:
+  * Fix CQL parsing of collections when the column type is reversed 
(CASSANDRA-15814)
 +
 +
 +3.0.21
 + * Backport CASSANDRA-12189: escape string literals (CASSANDRA-15948)
 + * Avoid hinted handoff per-host throttle being arounded to 0 in large 
cluster (CASSANDRA-15859)
 + * Avoid emitting empty range tombstones from RangeTombstoneList 
(CASSANDRA-15924)
 + * Avoid thread starvation, and improve compare-and-swap performance, in the 
slab allocators (CASSANDRA-15922)
 + * Fix broken KEYS 2i queries after DROP COMPACT STORAGE (CASSANDRA-15906)
 + * Add token to tombstone warning and error messages (CASSANDRA-15890)
 + * Fixed range read concurrency factor computation and capped as 10 times tpc 
cores (CASSANDRA-15752)
 + * Catch exception on bootstrap resume and init native transport 
(CASSANDRA-15863)
 + * Fix replica-side filtering returning stale data with CL > ONE 
(CASSANDRA-8272, CASSANDRA-8273)
 + * Fix duplicated row on 2.x upgrades when multi-rows range tombstones 
interact with collection ones (CASSANDRA-15805)
 + * Rely on snapshotted session infos on StreamResultFuture.maybeComplete to 
avoid race conditions (CASSANDRA-15667)
 + * EmptyType doesn't override writeValue so could attempt to write bytes when 
expected not to (CASSANDRA-15790)
 + * Fix index queries on partition key columns when some partitions contains 
only static data (CASSANDRA-13666)
 + * Avoid creating duplicate rows during major upgrades (CASSANDRA-15789)
 + * liveDiskSpaceUsed and totalDiskSpaceUsed get corrupted if 
IndexSummaryRedistribution gets interrupted (CASSANDRA-15674)
 + * Fix Debian init start/stop (CASSANDRA-15770)
 + * Fix infinite loop on index query paging in tables with clustering 
(CASSANDRA-14242)
 + * Fix chunk index overflow due to large sstable with small chunk length 
(CASSANDRA-15595)
 + * cqlsh return non-zero status when STDIN CQL fails (CASSANDRA-15623)
 + * Don't skip sstables in slice queries based only on local min/max/deletion 
timestamp (CASSANDRA-15690)
 + * Memtable memory allocations may deadlock (CASSANDRA-15367)
 + * Run evictFromMembership in GossipStage (CASSANDRA-15592)
 +Merged from 2.2:
   * Fix nomenclature of allow and deny lists (CASSANDRA-15862)
   * Remove generated files from source artifact (CASSANDRA-15849)
   * Remove duplicated tools binaries from tarballs (CASSANDRA-15768)
diff --cc src/java/org/apache/cassandra/cql3/Lists.java
index 065f74a,c6b78d7..f4b2294
--- a/src/java/org/apache/cassandra/cql3/Lists.java
+++ b/src/java/org/apache/cassandra/cql3/Lists.java
@@@ -29,10 -26,14 +29,12 @@@ import com.google.common.annotations.Vi
  
  import org.apache.cassandra.config.ColumnDefinition;
  import org.apache.cassandra.cql3.functions.Function;
 -import org.apache.cassandra.db.Cell;
 -import org.apache.cassandra.db.ColumnFamily;
 -import org.apache.cassandra.db.composites.CellName;
 -import org.apache.cassandra.db.composites.Composite;
 +import org.apache.cassandra.db.*;
 +import org.apache.cassandra.db.rows.*;
+ import org.apache.cassandra.db.marshal.AbstractType;
  import org.apache.cassandra.db.marshal.Int32Type;
  import org.apache.cassandra.db.marshal.ListType;
+ import org.apache.cassandra.db.marshal.ReversedType;
  import org.apache.cassandra.exceptions.InvalidRequestException;
  import org.apache.cassandra.serializers.CollectionSerializer;
  import org.apache.cassandra.serializers.MarshalException;
@@@ -54,10 -56,20 +56,20 @@@ public abstract class List
  
      public static ColumnSpecification valueSpecOf(ColumnSpecification column)
      {
-         return new ColumnSpecification(column.ksName, column.cfName, new 
ColumnIdentifier("value(" + column.name + ")", true), 
((ListType)column.type).getElementsType());
+         return new ColumnSpecification(column.ksName, column.cfName, new 
ColumnIdentifier("value(" + column.name + ")", true), 
elementsType(column.type));
+     }
+ 
+     private static AbstractType<?> unwrap(AbstractType<?> type)
+     {
+         return type.isReversed() ? unwrap(((ReversedType<?>) type).baseType) 
: type;
+     }
+ 
+     private static AbstractType<?> elementsType(AbstractType<?> type)
+     {
+         return ((ListType) unwrap(type)).getElementsType();
      }
  
 -    public static class Literal implements Term.Raw
 +    public static class Literal extends Term.Raw
      {
          private final List<Term.Raw> elements;
  
diff --cc src/java/org/apache/cassandra/cql3/Maps.java
index 4b6f0fe,8d21162..b21aca3
--- a/src/java/org/apache/cassandra/cql3/Maps.java
+++ b/src/java/org/apache/cassandra/cql3/Maps.java
@@@ -25,9 -26,12 +25,11 @@@ import java.util.stream.Collectors
  
  import org.apache.cassandra.config.ColumnDefinition;
  import org.apache.cassandra.cql3.functions.Function;
 -import org.apache.cassandra.db.ColumnFamily;
 -import org.apache.cassandra.db.composites.CellName;
 -import org.apache.cassandra.db.composites.Composite;
 +import org.apache.cassandra.db.DecoratedKey;
 +import org.apache.cassandra.db.rows.*;
+ import org.apache.cassandra.db.marshal.AbstractType;
  import org.apache.cassandra.db.marshal.MapType;
+ import org.apache.cassandra.db.marshal.ReversedType;
  import org.apache.cassandra.exceptions.InvalidRequestException;
  import org.apache.cassandra.serializers.CollectionSerializer;
  import org.apache.cassandra.serializers.MarshalException;
@@@ -49,10 -54,25 +51,25 @@@ public abstract class Map
  
      public static ColumnSpecification valueSpecOf(ColumnSpecification column)
      {
-         return new ColumnSpecification(column.ksName, column.cfName, new 
ColumnIdentifier("value(" + column.name + ")", true), 
((MapType)column.type).getValuesType());
+         return new ColumnSpecification(column.ksName, column.cfName, new 
ColumnIdentifier("value(" + column.name + ")", true), valuesType(column.type));
+     }
+ 
+     private static AbstractType<?> unwrap(AbstractType<?> type)
+     {
+         return type.isReversed() ? unwrap(((ReversedType<?>) type).baseType) 
: type;
+     }
+ 
+     private static AbstractType<?> keysType(AbstractType<?> type)
+     {
+         return ((MapType) unwrap(type)).getKeysType();
+     }
+ 
+     private static AbstractType<?> valuesType(AbstractType<?> type)
+     {
+         return ((MapType) unwrap(type)).getValuesType();
      }
  
 -    public static class Literal implements Term.Raw
 +    public static class Literal extends Term.Raw
      {
          public final List<Pair<Term.Raw, Term.Raw>> entries;
  
diff --cc src/java/org/apache/cassandra/cql3/Sets.java
index 622bb23,4b5cd5d..4d8f61b
--- a/src/java/org/apache/cassandra/cql3/Sets.java
+++ b/src/java/org/apache/cassandra/cql3/Sets.java
@@@ -43,10 -49,20 +43,20 @@@ public abstract class Set
  
      public static ColumnSpecification valueSpecOf(ColumnSpecification column)
      {
-         return new ColumnSpecification(column.ksName, column.cfName, new 
ColumnIdentifier("value(" + column.name + ")", true), 
((SetType)column.type).getElementsType());
+         return new ColumnSpecification(column.ksName, column.cfName, new 
ColumnIdentifier("value(" + column.name + ")", true), 
elementsType(column.type));
+     }
+ 
+     private static AbstractType<?> unwrap(AbstractType<?> type)
+     {
+         return type.isReversed() ? unwrap(((ReversedType<?>) type).baseType) 
: type;
+     }
+ 
+     private static AbstractType<?> elementsType(AbstractType<?> type)
+     {
+         return ((SetType) unwrap(type)).getElementsType();
      }
  
 -    public static class Literal implements Term.Raw
 +    public static class Literal extends Term.Raw
      {
          private final List<Term.Raw> elements;
  


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to