Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id F1809119FD for ; Wed, 3 Sep 2014 17:02:05 +0000 (UTC) Received: (qmail 88539 invoked by uid 500); 3 Sep 2014 17:02:05 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 88503 invoked by uid 500); 3 Sep 2014 17:02:05 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 88492 invoked by uid 99); 3 Sep 2014 17:02:05 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 03 Sep 2014 17:02:05 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 3E9FDA0682E; Wed, 3 Sep 2014 17:02:05 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: slebresne@apache.org To: commits@cassandra.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: git commit: Fix NPE when using collections in frozen tuple Date: Wed, 3 Sep 2014 17:02:05 +0000 (UTC) Repository: cassandra Updated Branches: refs/heads/cassandra-2.1.0 82136e3b7 -> cf76ac66a Fix NPE when using collections in frozen tuple patch by omichallat; reviewed by slebresne for CASSANDRA-7869 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/cf76ac66 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/cf76ac66 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/cf76ac66 Branch: refs/heads/cassandra-2.1.0 Commit: cf76ac66af4344acaaf44f8dec3ef584cff79bf2 Parents: 82136e3 Author: Sylvain Lebresne Authored: Wed Sep 3 19:01:20 2014 +0200 Committer: Sylvain Lebresne Committed: Wed Sep 3 19:01:20 2014 +0200 ---------------------------------------------------------------------- CHANGES.txt | 4 ++ .../org/apache/cassandra/cql3/CQL3Type.java | 3 +- .../apache/cassandra/cql3/TupleTypeTest.java | 39 ++++++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/cf76ac66/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index b33bec4..93d77c1 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,7 @@ +2.1.0 + * Add null check for keys when freezing collection (CASSANDRA-7869) + + 2.1.0-rc7 * Add frozen keyword and require UDT to be frozen (CASSANDRA-7857) * Track added sstable size correctly (CASSANDRA-7239) http://git-wip-us.apache.org/repos/asf/cassandra/blob/cf76ac66/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 1589d6a..bb3bc62 100644 --- a/src/java/org/apache/cassandra/cql3/CQL3Type.java +++ b/src/java/org/apache/cassandra/cql3/CQL3Type.java @@ -404,7 +404,8 @@ public interface CQL3Type public Raw freeze() { - keys.freeze(); + if (keys != null) + keys.freeze(); values.freeze(); return super.freeze(); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/cf76ac66/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 4ce24f8..f8771c1 100644 --- a/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java +++ b/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java @@ -100,4 +100,43 @@ public class TupleTypeTest extends CQLTester { assertInvalid("CREATE TABLE wrong (k int PRIMARY KEY, v tuple)"); } + + @Test + public void testFrozenTupleWithList() throws Throwable + { + createTable("CREATE TABLE %s (k int PRIMARY KEY, t frozen>>)"); + + execute("INSERT INTO %s (k, t) VALUES (?, ?)", 0, tuple("foo", list(2, 1))); + execute("INSERT INTO %s (k, t) VALUES (?, ?)", 1, tuple("bar", list(3, 4))); + assertAllRows( + row(0, tuple("foo", list(2, 1))), + row(1, tuple("bar", list(3, 4))) + ); + } + + @Test + public void testFrozenTupleWithSet() throws Throwable + { + createTable("CREATE TABLE %s (k int PRIMARY KEY, t frozen>>)"); + + execute("INSERT INTO %s (k, t) VALUES (?, ?)", 0, tuple("foo", set(2, 1))); + execute("INSERT INTO %s (k, t) VALUES (?, ?)", 1, tuple("bar", set(3, 4))); + assertAllRows( + row(0, tuple("foo", set(2, 1))), + row(1, tuple("bar", set(3, 4))) + ); + } + + @Test + public void testFrozenTupleWithMap() throws Throwable + { + createTable("CREATE TABLE %s (k int PRIMARY KEY, t frozen>>)"); + + execute("INSERT INTO %s (k, t) VALUES (?, ?)", 0, tuple("foo", map(2, 1))); + execute("INSERT INTO %s (k, t) VALUES (?, ?)", 1, tuple("bar", map(3, 4))); + assertAllRows( + row(0, tuple("foo", map(2, 1))), + row(1, tuple("bar", map(3, 4))) + ); + } }