You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2014/09/02 19:48:56 UTC

[1/8] git commit: Ability to freeze UDT

Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.1 e0d7c77f3 -> e75fe5c4f
  refs/heads/cassandra-2.1.0 02be0dedd -> 82136e3b7
  refs/heads/trunk 873d06490 -> ed0532c64


Ability to freeze UDT

patch by slebresne; reviewed by iamaleksey for CASSANDRA-7857


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

Branch: refs/heads/cassandra-2.1
Commit: 02be0dedd9773f1f2f7ce19dfeca82eed5456ca1
Parents: 92a254a
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Tue Sep 2 10:41:48 2014 +0200
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Tue Sep 2 10:41:48 2014 +0200

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../org/apache/cassandra/cql3/CQL3Type.java     | 44 ++++++++++++++++++++
 src/java/org/apache/cassandra/cql3/Cql.g        |  9 ++++
 .../org/apache/cassandra/cql3/CQLTester.java    |  5 +--
 .../apache/cassandra/cql3/TupleTypeTest.java    | 16 ++++---
 .../apache/cassandra/cql3/UserTypesTest.java    | 15 ++++---
 6 files changed, 76 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/02be0ded/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 477a332..b33bec4 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.0-rc7
+ * Add frozen keyword and require UDT to be frozen (CASSANDRA-7857)
  * Track added sstable size correctly (CASSANDRA-7239)
  * (cqlsh) Fix case insensitivity (CASSANDRA-7834)
  * Fix failure to stream ranges when moving (CASSANDRA-7836)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/02be0ded/src/java/org/apache/cassandra/cql3/CQL3Type.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/CQL3Type.java b/src/java/org/apache/cassandra/cql3/CQL3Type.java
index a26a903..1589d6a 100644
--- a/src/java/org/apache/cassandra/cql3/CQL3Type.java
+++ b/src/java/org/apache/cassandra/cql3/CQL3Type.java
@@ -284,6 +284,8 @@ public interface CQL3Type
     // actual type used, so Raw is a "not yet prepared" CQL3Type.
     public abstract class Raw
     {
+        protected boolean frozen;
+
         public boolean isCollection()
         {
             return false;
@@ -294,6 +296,12 @@ public interface CQL3Type
             return false;
         }
 
+        public Raw freeze()
+        {
+            frozen = true;
+            return this;
+        }
+
         public abstract CQL3Type prepare(String keyspace) throws InvalidRequestException;
 
         public static Raw from(CQL3Type type)
@@ -345,6 +353,16 @@ public interface CQL3Type
             return new RawTuple(ts);
         }
 
+        public static Raw frozen(CQL3Type.Raw t) throws InvalidRequestException
+        {
+            if (t instanceof RawUT)
+                return ((RawUT)t).freeze();
+            if (t instanceof RawTuple)
+                return ((RawTuple)t).freeze();
+
+            throw new InvalidRequestException("frozen<> is only currently only allowed on User-Defined and tuple types");
+        }
+
         private static class RawType extends Raw
         {
             private CQL3Type type;
@@ -384,6 +402,13 @@ public interface CQL3Type
                 this.values = values;
             }
 
+            public Raw freeze()
+            {
+                keys.freeze();
+                values.freeze();
+                return super.freeze();
+            }
+
             public boolean isCollection()
             {
                 return true;
@@ -445,9 +470,17 @@ public interface CQL3Type
                 if (type == null)
                     throw new InvalidRequestException("Unknown type " + name);
 
+                if (!frozen)
+                    throw new InvalidRequestException("Non-frozen User-Defined types are not supported, please use frozen<>");
+
                 return new UserDefined(name.toString(), type);
             }
 
+            public boolean isUDT()
+            {
+                return true;
+            }
+
             @Override
             public String toString()
             {
@@ -464,6 +497,13 @@ public interface CQL3Type
                 this.types = types;
             }
 
+            public Raw freeze()
+            {
+                for (CQL3Type.Raw t : types)
+                    t.freeze();
+                return super.freeze();
+            }
+
             public boolean isCollection()
             {
                 return false;
@@ -474,6 +514,10 @@ public interface CQL3Type
                 List<AbstractType<?>> ts = new ArrayList<>(types.size());
                 for (CQL3Type.Raw t : types)
                     ts.add(t.prepare(keyspace).getType());
+
+                if (!frozen)
+                    throw new InvalidRequestException("Non-frozen tuples are not supported, please use frozen<>");
+
                 return new Tuple(new TupleType(ts));
             }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/02be0ded/src/java/org/apache/cassandra/cql3/Cql.g
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/Cql.g b/src/java/org/apache/cassandra/cql3/Cql.g
index 1ff6ab2..6247a03 100644
--- a/src/java/org/apache/cassandra/cql3/Cql.g
+++ b/src/java/org/apache/cassandra/cql3/Cql.g
@@ -1071,6 +1071,14 @@ comparatorType returns [CQL3Type.Raw t]
     | c=collection_type { $t = c; }
     | tt=tuple_type     { $t = tt; }
     | id=userTypeName   { $t = CQL3Type.Raw.userType(id); }
+    | K_FROZEN '<' f=comparatorType '>'
+      {
+        try {
+            $t = CQL3Type.Raw.frozen(f);
+        } catch (InvalidRequestException e) {
+            addRecognitionError(e.getMessage());
+        }
+      }
     | s=STRING_LITERAL
       {
         try {
@@ -1277,6 +1285,7 @@ K_TUPLE:       T U P L E;
 
 K_TRIGGER:     T R I G G E R;
 K_STATIC:      S T A T I C;
+K_FROZEN:      F R O Z E N;
 
 // Case-insensitive alpha characters
 fragment A: ('a'|'A');

http://git-wip-us.apache.org/repos/asf/cassandra/blob/02be0ded/test/unit/org/apache/cassandra/cql3/CQLTester.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/cql3/CQLTester.java b/test/unit/org/apache/cassandra/cql3/CQLTester.java
index c412fe3..d56b5df 100644
--- a/test/unit/org/apache/cassandra/cql3/CQLTester.java
+++ b/test/unit/org/apache/cassandra/cql3/CQLTester.java
@@ -204,12 +204,9 @@ public abstract class CQLTester
 
     protected UntypedResultSet execute(String query, Object... values) throws Throwable
     {
-        if (currentTable == null)
-            throw new RuntimeException("You must create a table first with createTable");
-
         try
         {
-            query = String.format(query, KEYSPACE + "." + currentTable);
+            query = currentTable == null ? query : String.format(query, KEYSPACE + "." + currentTable);
 
             UntypedResultSet rs;
             if (USE_PREPARED_VALUES)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/02be0ded/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java b/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java
index 84512a5..4ce24f8 100644
--- a/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java
+++ b/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java
@@ -24,7 +24,7 @@ public class TupleTypeTest extends CQLTester
     @Test
     public void testTuplePutAndGet() throws Throwable
     {
-        createTable("CREATE TABLE %s (k int PRIMARY KEY, t tuple<int, text, double>)");
+        createTable("CREATE TABLE %s (k int PRIMARY KEY, t frozen<tuple<int, text, double>>)");
 
         execute("INSERT INTO %s (k, t) VALUES (?, ?)", 0, tuple(3, "foo", 3.4));
         execute("INSERT INTO %s (k, t) VALUES (?, ?)", 1, tuple(8, "bar", 0.2));
@@ -49,7 +49,7 @@ public class TupleTypeTest extends CQLTester
     @Test
     public void testNestedTuple() throws Throwable
     {
-        createTable("CREATE TABLE %s (k int PRIMARY KEY, t tuple<int, tuple<text, double>>)");
+        createTable("CREATE TABLE %s (k int PRIMARY KEY, t frozen<tuple<int, tuple<text, double>>>)");
 
         execute("INSERT INTO %s (k, t) VALUES (?, ?)", 0, tuple(3, tuple("foo", 3.4)));
         execute("INSERT INTO %s (k, t) VALUES (?, ?)", 1, tuple(8, tuple("bar", 0.2)));
@@ -62,7 +62,7 @@ public class TupleTypeTest extends CQLTester
     @Test
     public void testTupleInPartitionKey() throws Throwable
     {
-        createTable("CREATE TABLE %s (t tuple<int, text> PRIMARY KEY)");
+        createTable("CREATE TABLE %s (t frozen<tuple<int, text>> PRIMARY KEY)");
 
         execute("INSERT INTO %s (t) VALUES (?)", tuple(3, "foo"));
         assertAllRows(row(tuple(3, "foo")));
@@ -71,7 +71,7 @@ public class TupleTypeTest extends CQLTester
     @Test
     public void testTupleInClusteringKey() throws Throwable
     {
-        createTable("CREATE TABLE %s (k int, t tuple<int, text>, PRIMARY KEY (k, t))");
+        createTable("CREATE TABLE %s (k int, t frozen<tuple<int, text>>, PRIMARY KEY (k, t))");
 
         execute("INSERT INTO %s (k, t) VALUES (?, ?)", 0, tuple(5, "bar"));
         execute("INSERT INTO %s (k, t) VALUES (?, ?)", 0, tuple(3, "foo"));
@@ -89,9 +89,15 @@ public class TupleTypeTest extends CQLTester
     @Test
     public void testInvalidQueries() throws Throwable
     {
-        createTable("CREATE TABLE %s (k int PRIMARY KEY, t tuple<int, text, double>)");
+        createTable("CREATE TABLE %s (k int PRIMARY KEY, t frozen<tuple<int, text, double>>)");
 
         assertInvalid("INSERT INTO %s (k, t) VALUES (0, ())");
         assertInvalid("INSERT INTO %s (k, t) VALUES (0, (2, 'foo', 3.1, 'bar'))");
     }
+
+    @Test
+    public void testNonFrozenTuple() throws Throwable
+    {
+        assertInvalid("CREATE TABLE wrong (k int PRIMARY KEY, v tuple<int, text>)");
+    }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/02be0ded/test/unit/org/apache/cassandra/cql3/UserTypesTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/cql3/UserTypesTest.java b/test/unit/org/apache/cassandra/cql3/UserTypesTest.java
index c7f1851..ca84102 100644
--- a/test/unit/org/apache/cassandra/cql3/UserTypesTest.java
+++ b/test/unit/org/apache/cassandra/cql3/UserTypesTest.java
@@ -25,32 +25,37 @@ public class UserTypesTest extends CQLTester
     public void testInvalidField() throws Throwable
     {
         String myType = createType("CREATE TYPE %s (f int)");
-        createTable("CREATE TABLE %s (k int PRIMARY KEY, v " + myType + ")");
+        createTable("CREATE TABLE %s (k int PRIMARY KEY, v frozen<" + myType + ">)");
 
         // 's' is not a field of myType
         assertInvalid("INSERT INTO %s (k, v) VALUES (?, {s : ?})", 0, 1);
     }
 
-
     @Test
     public void testFor7684() throws Throwable
     {
         String myType = createType("CREATE TYPE %s (x double)");
-        createTable("CREATE TABLE %s (k int, v " + myType + ", b boolean static, PRIMARY KEY (k, v))");
+        createTable("CREATE TABLE %s (k int, v frozen<" + myType + ">, b boolean static, PRIMARY KEY (k, v))");
 
         execute("INSERT INTO %s(k, v) VALUES (?, {x:?})", 1, -104.99251);
         execute("UPDATE %s SET b = ? WHERE k = ?", true, 1);
 
-        System.out.println("-- First query");
         assertRows(execute("SELECT v.x FROM %s WHERE k = ? AND v = {x:?}", 1, -104.99251),
             row(-104.99251)
         );
 
         flush();
 
-        System.out.println("-- 2nd query");
         assertRows(execute("SELECT v.x FROM %s WHERE k = ? AND v = {x:?}", 1, -104.99251),
             row(-104.99251)
         );
     }
+
+    @Test
+    public void testNonFrozenUDT() throws Throwable
+    {
+        // Using a UDT without frozen shouldn't work
+        String myType = createType("CREATE TYPE %s (f int)");
+        assertInvalid("CREATE TABLE wrong (k int PRIMARY KEY, v " + myType + ")");
+    }
 }


[8/8] git commit: Merge branch 'cassandra-2.1' into trunk

Posted by br...@apache.org.
Merge branch 'cassandra-2.1' into trunk


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

Branch: refs/heads/trunk
Commit: ed0532c64c9db61ac38915c904a0db3df46e2bf8
Parents: 873d064 e75fe5c
Author: Brandon Williams <br...@apache.org>
Authored: Tue Sep 2 12:48:45 2014 -0500
Committer: Brandon Williams <br...@apache.org>
Committed: Tue Sep 2 12:48:45 2014 -0500

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 bin/cassandra-shuffle                           | 58 --------------------
 .../org/apache/cassandra/cql3/CQL3Type.java     | 44 +++++++++++++++
 src/java/org/apache/cassandra/cql3/Cql.g        |  9 +++
 .../org/apache/cassandra/cql3/CQLTester.java    |  5 +-
 .../apache/cassandra/cql3/TupleTypeTest.java    | 16 ++++--
 .../apache/cassandra/cql3/UserTypesTest.java    | 13 ++++-
 7 files changed, 76 insertions(+), 70 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/ed0532c6/CHANGES.txt
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/ed0532c6/src/java/org/apache/cassandra/cql3/Cql.g
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/cql3/Cql.g
index 55fa76b,9d54866..af2c239
--- a/src/java/org/apache/cassandra/cql3/Cql.g
+++ b/src/java/org/apache/cassandra/cql3/Cql.g
@@@ -1362,15 -1300,8 +1370,16 @@@ K_TUPLE:       T U P L E
  
  K_TRIGGER:     T R I G G E R;
  K_STATIC:      S T A T I C;
+ K_FROZEN:      F R O Z E N;
  
 +K_FUNCTION:    F U N C T I O N;
 +K_RETURNS:     R E T U R N S;
 +K_LANGUAGE:    L A N G U A G E;
 +K_NON:         N O N;
 +K_OR:          O R;
 +K_REPLACE:     R E P L A C E;
 +K_DETERMINISTIC: D E T E R M I N I S T I C;
 +
  // Case-insensitive alpha characters
  fragment A: ('a'|'A');
  fragment B: ('b'|'B');

http://git-wip-us.apache.org/repos/asf/cassandra/blob/ed0532c6/test/unit/org/apache/cassandra/cql3/CQLTester.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/cql3/CQLTester.java
index 8817083,e776fc7..89487f4
--- a/test/unit/org/apache/cassandra/cql3/CQLTester.java
+++ b/test/unit/org/apache/cassandra/cql3/CQLTester.java
@@@ -237,15 -220,12 +237,12 @@@ public abstract class CQLTeste
  
      protected UntypedResultSet execute(String query, Object... values) throws Throwable
      {
-         if (currentTable == null)
-             throw new RuntimeException("You must create a table first with createTable");
- 
          try
          {
-             query = String.format(query, KEYSPACE + "." + currentTable);
+             query = currentTable == null ? query : String.format(query, KEYSPACE + "." + currentTable);
  
              UntypedResultSet rs;
 -            if (USE_PREPARED_VALUES)
 +            if (usePrepared)
              {
                  logger.info("Executing: {} with values {}", query, formatAllValues(values));
                  rs = QueryProcessor.executeOnceInternal(query, transformValues(values));


[2/8] git commit: Ability to freeze UDT

Posted by br...@apache.org.
Ability to freeze UDT

patch by slebresne; reviewed by iamaleksey for CASSANDRA-7857


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

Branch: refs/heads/trunk
Commit: 02be0dedd9773f1f2f7ce19dfeca82eed5456ca1
Parents: 92a254a
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Tue Sep 2 10:41:48 2014 +0200
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Tue Sep 2 10:41:48 2014 +0200

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../org/apache/cassandra/cql3/CQL3Type.java     | 44 ++++++++++++++++++++
 src/java/org/apache/cassandra/cql3/Cql.g        |  9 ++++
 .../org/apache/cassandra/cql3/CQLTester.java    |  5 +--
 .../apache/cassandra/cql3/TupleTypeTest.java    | 16 ++++---
 .../apache/cassandra/cql3/UserTypesTest.java    | 15 ++++---
 6 files changed, 76 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/02be0ded/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 477a332..b33bec4 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.0-rc7
+ * Add frozen keyword and require UDT to be frozen (CASSANDRA-7857)
  * Track added sstable size correctly (CASSANDRA-7239)
  * (cqlsh) Fix case insensitivity (CASSANDRA-7834)
  * Fix failure to stream ranges when moving (CASSANDRA-7836)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/02be0ded/src/java/org/apache/cassandra/cql3/CQL3Type.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/CQL3Type.java b/src/java/org/apache/cassandra/cql3/CQL3Type.java
index a26a903..1589d6a 100644
--- a/src/java/org/apache/cassandra/cql3/CQL3Type.java
+++ b/src/java/org/apache/cassandra/cql3/CQL3Type.java
@@ -284,6 +284,8 @@ public interface CQL3Type
     // actual type used, so Raw is a "not yet prepared" CQL3Type.
     public abstract class Raw
     {
+        protected boolean frozen;
+
         public boolean isCollection()
         {
             return false;
@@ -294,6 +296,12 @@ public interface CQL3Type
             return false;
         }
 
+        public Raw freeze()
+        {
+            frozen = true;
+            return this;
+        }
+
         public abstract CQL3Type prepare(String keyspace) throws InvalidRequestException;
 
         public static Raw from(CQL3Type type)
@@ -345,6 +353,16 @@ public interface CQL3Type
             return new RawTuple(ts);
         }
 
+        public static Raw frozen(CQL3Type.Raw t) throws InvalidRequestException
+        {
+            if (t instanceof RawUT)
+                return ((RawUT)t).freeze();
+            if (t instanceof RawTuple)
+                return ((RawTuple)t).freeze();
+
+            throw new InvalidRequestException("frozen<> is only currently only allowed on User-Defined and tuple types");
+        }
+
         private static class RawType extends Raw
         {
             private CQL3Type type;
@@ -384,6 +402,13 @@ public interface CQL3Type
                 this.values = values;
             }
 
+            public Raw freeze()
+            {
+                keys.freeze();
+                values.freeze();
+                return super.freeze();
+            }
+
             public boolean isCollection()
             {
                 return true;
@@ -445,9 +470,17 @@ public interface CQL3Type
                 if (type == null)
                     throw new InvalidRequestException("Unknown type " + name);
 
+                if (!frozen)
+                    throw new InvalidRequestException("Non-frozen User-Defined types are not supported, please use frozen<>");
+
                 return new UserDefined(name.toString(), type);
             }
 
+            public boolean isUDT()
+            {
+                return true;
+            }
+
             @Override
             public String toString()
             {
@@ -464,6 +497,13 @@ public interface CQL3Type
                 this.types = types;
             }
 
+            public Raw freeze()
+            {
+                for (CQL3Type.Raw t : types)
+                    t.freeze();
+                return super.freeze();
+            }
+
             public boolean isCollection()
             {
                 return false;
@@ -474,6 +514,10 @@ public interface CQL3Type
                 List<AbstractType<?>> ts = new ArrayList<>(types.size());
                 for (CQL3Type.Raw t : types)
                     ts.add(t.prepare(keyspace).getType());
+
+                if (!frozen)
+                    throw new InvalidRequestException("Non-frozen tuples are not supported, please use frozen<>");
+
                 return new Tuple(new TupleType(ts));
             }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/02be0ded/src/java/org/apache/cassandra/cql3/Cql.g
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/Cql.g b/src/java/org/apache/cassandra/cql3/Cql.g
index 1ff6ab2..6247a03 100644
--- a/src/java/org/apache/cassandra/cql3/Cql.g
+++ b/src/java/org/apache/cassandra/cql3/Cql.g
@@ -1071,6 +1071,14 @@ comparatorType returns [CQL3Type.Raw t]
     | c=collection_type { $t = c; }
     | tt=tuple_type     { $t = tt; }
     | id=userTypeName   { $t = CQL3Type.Raw.userType(id); }
+    | K_FROZEN '<' f=comparatorType '>'
+      {
+        try {
+            $t = CQL3Type.Raw.frozen(f);
+        } catch (InvalidRequestException e) {
+            addRecognitionError(e.getMessage());
+        }
+      }
     | s=STRING_LITERAL
       {
         try {
@@ -1277,6 +1285,7 @@ K_TUPLE:       T U P L E;
 
 K_TRIGGER:     T R I G G E R;
 K_STATIC:      S T A T I C;
+K_FROZEN:      F R O Z E N;
 
 // Case-insensitive alpha characters
 fragment A: ('a'|'A');

http://git-wip-us.apache.org/repos/asf/cassandra/blob/02be0ded/test/unit/org/apache/cassandra/cql3/CQLTester.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/cql3/CQLTester.java b/test/unit/org/apache/cassandra/cql3/CQLTester.java
index c412fe3..d56b5df 100644
--- a/test/unit/org/apache/cassandra/cql3/CQLTester.java
+++ b/test/unit/org/apache/cassandra/cql3/CQLTester.java
@@ -204,12 +204,9 @@ public abstract class CQLTester
 
     protected UntypedResultSet execute(String query, Object... values) throws Throwable
     {
-        if (currentTable == null)
-            throw new RuntimeException("You must create a table first with createTable");
-
         try
         {
-            query = String.format(query, KEYSPACE + "." + currentTable);
+            query = currentTable == null ? query : String.format(query, KEYSPACE + "." + currentTable);
 
             UntypedResultSet rs;
             if (USE_PREPARED_VALUES)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/02be0ded/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java b/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java
index 84512a5..4ce24f8 100644
--- a/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java
+++ b/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java
@@ -24,7 +24,7 @@ public class TupleTypeTest extends CQLTester
     @Test
     public void testTuplePutAndGet() throws Throwable
     {
-        createTable("CREATE TABLE %s (k int PRIMARY KEY, t tuple<int, text, double>)");
+        createTable("CREATE TABLE %s (k int PRIMARY KEY, t frozen<tuple<int, text, double>>)");
 
         execute("INSERT INTO %s (k, t) VALUES (?, ?)", 0, tuple(3, "foo", 3.4));
         execute("INSERT INTO %s (k, t) VALUES (?, ?)", 1, tuple(8, "bar", 0.2));
@@ -49,7 +49,7 @@ public class TupleTypeTest extends CQLTester
     @Test
     public void testNestedTuple() throws Throwable
     {
-        createTable("CREATE TABLE %s (k int PRIMARY KEY, t tuple<int, tuple<text, double>>)");
+        createTable("CREATE TABLE %s (k int PRIMARY KEY, t frozen<tuple<int, tuple<text, double>>>)");
 
         execute("INSERT INTO %s (k, t) VALUES (?, ?)", 0, tuple(3, tuple("foo", 3.4)));
         execute("INSERT INTO %s (k, t) VALUES (?, ?)", 1, tuple(8, tuple("bar", 0.2)));
@@ -62,7 +62,7 @@ public class TupleTypeTest extends CQLTester
     @Test
     public void testTupleInPartitionKey() throws Throwable
     {
-        createTable("CREATE TABLE %s (t tuple<int, text> PRIMARY KEY)");
+        createTable("CREATE TABLE %s (t frozen<tuple<int, text>> PRIMARY KEY)");
 
         execute("INSERT INTO %s (t) VALUES (?)", tuple(3, "foo"));
         assertAllRows(row(tuple(3, "foo")));
@@ -71,7 +71,7 @@ public class TupleTypeTest extends CQLTester
     @Test
     public void testTupleInClusteringKey() throws Throwable
     {
-        createTable("CREATE TABLE %s (k int, t tuple<int, text>, PRIMARY KEY (k, t))");
+        createTable("CREATE TABLE %s (k int, t frozen<tuple<int, text>>, PRIMARY KEY (k, t))");
 
         execute("INSERT INTO %s (k, t) VALUES (?, ?)", 0, tuple(5, "bar"));
         execute("INSERT INTO %s (k, t) VALUES (?, ?)", 0, tuple(3, "foo"));
@@ -89,9 +89,15 @@ public class TupleTypeTest extends CQLTester
     @Test
     public void testInvalidQueries() throws Throwable
     {
-        createTable("CREATE TABLE %s (k int PRIMARY KEY, t tuple<int, text, double>)");
+        createTable("CREATE TABLE %s (k int PRIMARY KEY, t frozen<tuple<int, text, double>>)");
 
         assertInvalid("INSERT INTO %s (k, t) VALUES (0, ())");
         assertInvalid("INSERT INTO %s (k, t) VALUES (0, (2, 'foo', 3.1, 'bar'))");
     }
+
+    @Test
+    public void testNonFrozenTuple() throws Throwable
+    {
+        assertInvalid("CREATE TABLE wrong (k int PRIMARY KEY, v tuple<int, text>)");
+    }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/02be0ded/test/unit/org/apache/cassandra/cql3/UserTypesTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/cql3/UserTypesTest.java b/test/unit/org/apache/cassandra/cql3/UserTypesTest.java
index c7f1851..ca84102 100644
--- a/test/unit/org/apache/cassandra/cql3/UserTypesTest.java
+++ b/test/unit/org/apache/cassandra/cql3/UserTypesTest.java
@@ -25,32 +25,37 @@ public class UserTypesTest extends CQLTester
     public void testInvalidField() throws Throwable
     {
         String myType = createType("CREATE TYPE %s (f int)");
-        createTable("CREATE TABLE %s (k int PRIMARY KEY, v " + myType + ")");
+        createTable("CREATE TABLE %s (k int PRIMARY KEY, v frozen<" + myType + ">)");
 
         // 's' is not a field of myType
         assertInvalid("INSERT INTO %s (k, v) VALUES (?, {s : ?})", 0, 1);
     }
 
-
     @Test
     public void testFor7684() throws Throwable
     {
         String myType = createType("CREATE TYPE %s (x double)");
-        createTable("CREATE TABLE %s (k int, v " + myType + ", b boolean static, PRIMARY KEY (k, v))");
+        createTable("CREATE TABLE %s (k int, v frozen<" + myType + ">, b boolean static, PRIMARY KEY (k, v))");
 
         execute("INSERT INTO %s(k, v) VALUES (?, {x:?})", 1, -104.99251);
         execute("UPDATE %s SET b = ? WHERE k = ?", true, 1);
 
-        System.out.println("-- First query");
         assertRows(execute("SELECT v.x FROM %s WHERE k = ? AND v = {x:?}", 1, -104.99251),
             row(-104.99251)
         );
 
         flush();
 
-        System.out.println("-- 2nd query");
         assertRows(execute("SELECT v.x FROM %s WHERE k = ? AND v = {x:?}", 1, -104.99251),
             row(-104.99251)
         );
     }
+
+    @Test
+    public void testNonFrozenUDT() throws Throwable
+    {
+        // Using a UDT without frozen shouldn't work
+        String myType = createType("CREATE TYPE %s (f int)");
+        assertInvalid("CREATE TABLE wrong (k int PRIMARY KEY, v " + myType + ")");
+    }
 }


[5/8] git commit: remove shuffle again

Posted by br...@apache.org.
remove shuffle again


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

Branch: refs/heads/cassandra-2.1.0
Commit: 82136e3b7e4e3fbe08bd9bcb0220cf79a91760cd
Parents: 02be0de
Author: Brandon Williams <br...@apache.org>
Authored: Tue Sep 2 12:47:55 2014 -0500
Committer: Brandon Williams <br...@apache.org>
Committed: Tue Sep 2 12:47:55 2014 -0500

----------------------------------------------------------------------
 bin/cassandra-shuffle | 58 ----------------------------------------------
 1 file changed, 58 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/82136e3b/bin/cassandra-shuffle
----------------------------------------------------------------------
diff --git a/bin/cassandra-shuffle b/bin/cassandra-shuffle
deleted file mode 100755
index 10a409d..0000000
--- a/bin/cassandra-shuffle
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/bin/sh
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-if [ "x$CASSANDRA_INCLUDE" = "x" ]; then
-    for include in /usr/share/cassandra/cassandra.in.sh \
-                   /usr/local/share/cassandra/cassandra.in.sh \
-                   /opt/cassandra/cassandra.in.sh \
-                   "`dirname "$0"`/cassandra.in.sh"; do
-        if [ -r "$include" ]; then
-            . "$include"
-            break
-        fi
-    done
-elif [ -r "$CASSANDRA_INCLUDE" ]; then
-    . "$CASSANDRA_INCLUDE"
-fi
-
-# Use JAVA_HOME if set, otherwise look for java in PATH
-if [ -x "$JAVA_HOME/bin/java" ]; then
-    JAVA="$JAVA_HOME/bin/java"
-else
-    JAVA="`which java`"
-fi
-
-if [ -z "$CASSANDRA_CONF" -o -z "$CLASSPATH" ]; then
-    echo "You must set the CASSANDRA_CONF and CLASSPATH vars" >&2
-    exit 1
-fi
-
-# Special-case path variables.
-case "`uname`" in
-    CYGWIN*) 
-        CLASSPATH="`cygpath -p -w "$CLASSPATH"`"
-        CASSANDRA_CONF="`cygpath -p -w "$CASSANDRA_CONF"`"
-    ;;
-esac
-
-"$JAVA" -cp "$CLASSPATH" \
-      -Xmx32m \
-      -Dcassandra.storagedir="$cassandra_storagedir" \
-      -Dlogback.configurationFile=logback-tools.xml \
-      org.apache.cassandra.tools.Shuffle $@
-
-# vi:ai sw=4 ts=4 tw=0 et


[6/8] git commit: Merge branch 'cassandra-2.1.0' into cassandra-2.1

Posted by br...@apache.org.
Merge branch 'cassandra-2.1.0' into cassandra-2.1

Conflicts:
	CHANGES.txt


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

Branch: refs/heads/trunk
Commit: e75fe5c4f5546585180efcc4fca676afa69f8750
Parents: e0d7c77 82136e3
Author: Brandon Williams <br...@apache.org>
Authored: Tue Sep 2 12:48:30 2014 -0500
Committer: Brandon Williams <br...@apache.org>
Committed: Tue Sep 2 12:48:30 2014 -0500

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 bin/cassandra-shuffle                           | 58 --------------------
 .../org/apache/cassandra/cql3/CQL3Type.java     | 44 +++++++++++++++
 src/java/org/apache/cassandra/cql3/Cql.g        |  9 +++
 .../org/apache/cassandra/cql3/CQLTester.java    |  5 +-
 .../apache/cassandra/cql3/TupleTypeTest.java    | 16 ++++--
 .../apache/cassandra/cql3/UserTypesTest.java    | 13 ++++-
 7 files changed, 76 insertions(+), 70 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e75fe5c4/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index bd81431,b33bec4..a58af8f
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,54 -1,5 +1,55 @@@
 -2.1.0-rc7
 +2.1.1
 + * (cqlsh): Show progress of COPY operations (CASSANDRA-7789)
 + * Add syntax to remove multiple elements from a map (CASSANDRA-6599)
 + * Support non-equals conditions in lightweight transactions (CASSANDRA-6839)
 + * Add IF [NOT] EXISTS to create/drop triggers (CASSANDRA-7606)
 + * (cqlsh) Display the current logged-in user (CASSANDRA-7785)
 + * (cqlsh) Don't ignore CTRL-C during COPY FROM execution (CASSANDRA-7815)
 + * (cqlsh) Order UDTs according to cross-type dependencies in DESCRIBE
 +   output (CASSANDRA-7659)
 + * (cqlsh) Fix handling of CAS statement results (CASSANDRA-7671)
 + * (cqlsh) COPY TO/FROM improvements (CASSANDRA-7405)
 + * Support list index operations with conditions (CASSANDRA-7499)
 + * Add max live/tombstoned cells to nodetool cfstats output (CASSANDRA-7731)
 + * Validate IPv6 wildcard addresses properly (CASSANDRA-7680)
 + * (cqlsh) Error when tracing query (CASSANDRA-7613)
 + * Avoid IOOBE when building SyntaxError message snippet (CASSANDRA-7569)
 + * SSTableExport uses correct validator to create string representation of partition
 +   keys (CASSANDRA-7498)
 + * Avoid NPEs when receiving type changes for an unknown keyspace (CASSANDRA-7689)
 + * Add support for custom 2i validation (CASSANDRA-7575)
 + * Pig support for hadoop CqlInputFormat (CASSANDRA-6454)
 + * Add listen_interface and rpc_interface options (CASSANDRA-7417)
 + * Improve schema merge performance (CASSANDRA-7444)
 + * Adjust MT depth based on # of partition validating (CASSANDRA-5263)
 + * Optimise NativeCell comparisons (CASSANDRA-6755)
 + * Configurable client timeout for cqlsh (CASSANDRA-7516)
 + * Include snippet of CQL query near syntax error in messages (CASSANDRA-7111)
 +Merged from 2.0:
 + * Better error message when condition is set on PK column (CASSANDRA-7804)
 + * Don't send schema change responses and events for no-op DDL
 +   statements (CASSANDRA-7600)
 + * (Hadoop) fix cluster initialisation for a split fetching (CASSANDRA-7774)
 + * Throw InvalidRequestException when queries contain relations on entire
 +   collection columns (CASSANDRA-7506)
 + * (cqlsh) enable CTRL-R history search with libedit (CASSANDRA-7577)
 + * (Hadoop) allow ACFRW to limit nodes to local DC (CASSANDRA-7252)
 + * (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)
 + * Fix IncompatibleClassChangeError from hadoop2 (CASSANDRA-7229)
 + * Add 'nodetool sethintedhandoffthrottlekb' (CASSANDRA-7635)
 + * (cqlsh) Add tab-completion for CREATE/DROP USER IF [NOT] EXISTS (CASSANDRA-7611)
 + * Catch errors when the JVM pulls the rug out from GCInspector (CASSANDRA-5345)
 + * cqlsh fails when version number parts are not int (CASSANDRA-7524)
 +Merged from 1.2:
 + * Improve PasswordAuthenticator default super user setup (CASSANDRA-7788)
 +
 +
 +2.1.0
+  * Add frozen keyword and require UDT to be frozen (CASSANDRA-7857)
   * Track added sstable size correctly (CASSANDRA-7239)
   * (cqlsh) Fix case insensitivity (CASSANDRA-7834)
   * Fix failure to stream ranges when moving (CASSANDRA-7836)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e75fe5c4/src/java/org/apache/cassandra/cql3/Cql.g
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e75fe5c4/test/unit/org/apache/cassandra/cql3/CQLTester.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e75fe5c4/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/cql3/TupleTypeTest.java
index 354a8f9,4ce24f8..53e7e71
--- a/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java
+++ b/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java
@@@ -89,9 -89,15 +89,15 @@@ public class TupleTypeTest extends CQLT
      @Test
      public void testInvalidQueries() throws Throwable
      {
-         createTable("CREATE TABLE %s (k int PRIMARY KEY, t tuple<int, text, double>)");
+         createTable("CREATE TABLE %s (k int PRIMARY KEY, t frozen<tuple<int, text, double>>)");
  
 -        assertInvalid("INSERT INTO %s (k, t) VALUES (0, ())");
 +        assertInvalidSyntax("INSERT INTO %s (k, t) VALUES (0, ())");
          assertInvalid("INSERT INTO %s (k, t) VALUES (0, (2, 'foo', 3.1, 'bar'))");
      }
+ 
+     @Test
+     public void testNonFrozenTuple() throws Throwable
+     {
+         assertInvalid("CREATE TABLE wrong (k int PRIMARY KEY, v tuple<int, text>)");
+     }
  }


[4/8] git commit: remove shuffle again

Posted by br...@apache.org.
remove shuffle again


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

Branch: refs/heads/trunk
Commit: 82136e3b7e4e3fbe08bd9bcb0220cf79a91760cd
Parents: 02be0de
Author: Brandon Williams <br...@apache.org>
Authored: Tue Sep 2 12:47:55 2014 -0500
Committer: Brandon Williams <br...@apache.org>
Committed: Tue Sep 2 12:47:55 2014 -0500

----------------------------------------------------------------------
 bin/cassandra-shuffle | 58 ----------------------------------------------
 1 file changed, 58 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/82136e3b/bin/cassandra-shuffle
----------------------------------------------------------------------
diff --git a/bin/cassandra-shuffle b/bin/cassandra-shuffle
deleted file mode 100755
index 10a409d..0000000
--- a/bin/cassandra-shuffle
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/bin/sh
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-if [ "x$CASSANDRA_INCLUDE" = "x" ]; then
-    for include in /usr/share/cassandra/cassandra.in.sh \
-                   /usr/local/share/cassandra/cassandra.in.sh \
-                   /opt/cassandra/cassandra.in.sh \
-                   "`dirname "$0"`/cassandra.in.sh"; do
-        if [ -r "$include" ]; then
-            . "$include"
-            break
-        fi
-    done
-elif [ -r "$CASSANDRA_INCLUDE" ]; then
-    . "$CASSANDRA_INCLUDE"
-fi
-
-# Use JAVA_HOME if set, otherwise look for java in PATH
-if [ -x "$JAVA_HOME/bin/java" ]; then
-    JAVA="$JAVA_HOME/bin/java"
-else
-    JAVA="`which java`"
-fi
-
-if [ -z "$CASSANDRA_CONF" -o -z "$CLASSPATH" ]; then
-    echo "You must set the CASSANDRA_CONF and CLASSPATH vars" >&2
-    exit 1
-fi
-
-# Special-case path variables.
-case "`uname`" in
-    CYGWIN*) 
-        CLASSPATH="`cygpath -p -w "$CLASSPATH"`"
-        CASSANDRA_CONF="`cygpath -p -w "$CASSANDRA_CONF"`"
-    ;;
-esac
-
-"$JAVA" -cp "$CLASSPATH" \
-      -Xmx32m \
-      -Dcassandra.storagedir="$cassandra_storagedir" \
-      -Dlogback.configurationFile=logback-tools.xml \
-      org.apache.cassandra.tools.Shuffle $@
-
-# vi:ai sw=4 ts=4 tw=0 et


[3/8] git commit: remove shuffle again

Posted by br...@apache.org.
remove shuffle again


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

Branch: refs/heads/cassandra-2.1
Commit: 82136e3b7e4e3fbe08bd9bcb0220cf79a91760cd
Parents: 02be0de
Author: Brandon Williams <br...@apache.org>
Authored: Tue Sep 2 12:47:55 2014 -0500
Committer: Brandon Williams <br...@apache.org>
Committed: Tue Sep 2 12:47:55 2014 -0500

----------------------------------------------------------------------
 bin/cassandra-shuffle | 58 ----------------------------------------------
 1 file changed, 58 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/82136e3b/bin/cassandra-shuffle
----------------------------------------------------------------------
diff --git a/bin/cassandra-shuffle b/bin/cassandra-shuffle
deleted file mode 100755
index 10a409d..0000000
--- a/bin/cassandra-shuffle
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/bin/sh
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-if [ "x$CASSANDRA_INCLUDE" = "x" ]; then
-    for include in /usr/share/cassandra/cassandra.in.sh \
-                   /usr/local/share/cassandra/cassandra.in.sh \
-                   /opt/cassandra/cassandra.in.sh \
-                   "`dirname "$0"`/cassandra.in.sh"; do
-        if [ -r "$include" ]; then
-            . "$include"
-            break
-        fi
-    done
-elif [ -r "$CASSANDRA_INCLUDE" ]; then
-    . "$CASSANDRA_INCLUDE"
-fi
-
-# Use JAVA_HOME if set, otherwise look for java in PATH
-if [ -x "$JAVA_HOME/bin/java" ]; then
-    JAVA="$JAVA_HOME/bin/java"
-else
-    JAVA="`which java`"
-fi
-
-if [ -z "$CASSANDRA_CONF" -o -z "$CLASSPATH" ]; then
-    echo "You must set the CASSANDRA_CONF and CLASSPATH vars" >&2
-    exit 1
-fi
-
-# Special-case path variables.
-case "`uname`" in
-    CYGWIN*) 
-        CLASSPATH="`cygpath -p -w "$CLASSPATH"`"
-        CASSANDRA_CONF="`cygpath -p -w "$CASSANDRA_CONF"`"
-    ;;
-esac
-
-"$JAVA" -cp "$CLASSPATH" \
-      -Xmx32m \
-      -Dcassandra.storagedir="$cassandra_storagedir" \
-      -Dlogback.configurationFile=logback-tools.xml \
-      org.apache.cassandra.tools.Shuffle $@
-
-# vi:ai sw=4 ts=4 tw=0 et


[7/8] git commit: Merge branch 'cassandra-2.1.0' into cassandra-2.1

Posted by br...@apache.org.
Merge branch 'cassandra-2.1.0' into cassandra-2.1

Conflicts:
	CHANGES.txt


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

Branch: refs/heads/cassandra-2.1
Commit: e75fe5c4f5546585180efcc4fca676afa69f8750
Parents: e0d7c77 82136e3
Author: Brandon Williams <br...@apache.org>
Authored: Tue Sep 2 12:48:30 2014 -0500
Committer: Brandon Williams <br...@apache.org>
Committed: Tue Sep 2 12:48:30 2014 -0500

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 bin/cassandra-shuffle                           | 58 --------------------
 .../org/apache/cassandra/cql3/CQL3Type.java     | 44 +++++++++++++++
 src/java/org/apache/cassandra/cql3/Cql.g        |  9 +++
 .../org/apache/cassandra/cql3/CQLTester.java    |  5 +-
 .../apache/cassandra/cql3/TupleTypeTest.java    | 16 ++++--
 .../apache/cassandra/cql3/UserTypesTest.java    | 13 ++++-
 7 files changed, 76 insertions(+), 70 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e75fe5c4/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index bd81431,b33bec4..a58af8f
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,54 -1,5 +1,55 @@@
 -2.1.0-rc7
 +2.1.1
 + * (cqlsh): Show progress of COPY operations (CASSANDRA-7789)
 + * Add syntax to remove multiple elements from a map (CASSANDRA-6599)
 + * Support non-equals conditions in lightweight transactions (CASSANDRA-6839)
 + * Add IF [NOT] EXISTS to create/drop triggers (CASSANDRA-7606)
 + * (cqlsh) Display the current logged-in user (CASSANDRA-7785)
 + * (cqlsh) Don't ignore CTRL-C during COPY FROM execution (CASSANDRA-7815)
 + * (cqlsh) Order UDTs according to cross-type dependencies in DESCRIBE
 +   output (CASSANDRA-7659)
 + * (cqlsh) Fix handling of CAS statement results (CASSANDRA-7671)
 + * (cqlsh) COPY TO/FROM improvements (CASSANDRA-7405)
 + * Support list index operations with conditions (CASSANDRA-7499)
 + * Add max live/tombstoned cells to nodetool cfstats output (CASSANDRA-7731)
 + * Validate IPv6 wildcard addresses properly (CASSANDRA-7680)
 + * (cqlsh) Error when tracing query (CASSANDRA-7613)
 + * Avoid IOOBE when building SyntaxError message snippet (CASSANDRA-7569)
 + * SSTableExport uses correct validator to create string representation of partition
 +   keys (CASSANDRA-7498)
 + * Avoid NPEs when receiving type changes for an unknown keyspace (CASSANDRA-7689)
 + * Add support for custom 2i validation (CASSANDRA-7575)
 + * Pig support for hadoop CqlInputFormat (CASSANDRA-6454)
 + * Add listen_interface and rpc_interface options (CASSANDRA-7417)
 + * Improve schema merge performance (CASSANDRA-7444)
 + * Adjust MT depth based on # of partition validating (CASSANDRA-5263)
 + * Optimise NativeCell comparisons (CASSANDRA-6755)
 + * Configurable client timeout for cqlsh (CASSANDRA-7516)
 + * Include snippet of CQL query near syntax error in messages (CASSANDRA-7111)
 +Merged from 2.0:
 + * Better error message when condition is set on PK column (CASSANDRA-7804)
 + * Don't send schema change responses and events for no-op DDL
 +   statements (CASSANDRA-7600)
 + * (Hadoop) fix cluster initialisation for a split fetching (CASSANDRA-7774)
 + * Throw InvalidRequestException when queries contain relations on entire
 +   collection columns (CASSANDRA-7506)
 + * (cqlsh) enable CTRL-R history search with libedit (CASSANDRA-7577)
 + * (Hadoop) allow ACFRW to limit nodes to local DC (CASSANDRA-7252)
 + * (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)
 + * Fix IncompatibleClassChangeError from hadoop2 (CASSANDRA-7229)
 + * Add 'nodetool sethintedhandoffthrottlekb' (CASSANDRA-7635)
 + * (cqlsh) Add tab-completion for CREATE/DROP USER IF [NOT] EXISTS (CASSANDRA-7611)
 + * Catch errors when the JVM pulls the rug out from GCInspector (CASSANDRA-5345)
 + * cqlsh fails when version number parts are not int (CASSANDRA-7524)
 +Merged from 1.2:
 + * Improve PasswordAuthenticator default super user setup (CASSANDRA-7788)
 +
 +
 +2.1.0
+  * Add frozen keyword and require UDT to be frozen (CASSANDRA-7857)
   * Track added sstable size correctly (CASSANDRA-7239)
   * (cqlsh) Fix case insensitivity (CASSANDRA-7834)
   * Fix failure to stream ranges when moving (CASSANDRA-7836)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e75fe5c4/src/java/org/apache/cassandra/cql3/Cql.g
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e75fe5c4/test/unit/org/apache/cassandra/cql3/CQLTester.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e75fe5c4/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/cql3/TupleTypeTest.java
index 354a8f9,4ce24f8..53e7e71
--- a/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java
+++ b/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java
@@@ -89,9 -89,15 +89,15 @@@ public class TupleTypeTest extends CQLT
      @Test
      public void testInvalidQueries() throws Throwable
      {
-         createTable("CREATE TABLE %s (k int PRIMARY KEY, t tuple<int, text, double>)");
+         createTable("CREATE TABLE %s (k int PRIMARY KEY, t frozen<tuple<int, text, double>>)");
  
 -        assertInvalid("INSERT INTO %s (k, t) VALUES (0, ())");
 +        assertInvalidSyntax("INSERT INTO %s (k, t) VALUES (0, ())");
          assertInvalid("INSERT INTO %s (k, t) VALUES (0, (2, 'foo', 3.1, 'bar'))");
      }
+ 
+     @Test
+     public void testNonFrozenTuple() throws Throwable
+     {
+         assertInvalid("CREATE TABLE wrong (k int PRIMARY KEY, v tuple<int, text>)");
+     }
  }