Repository: cassandra Updated Branches: refs/heads/trunk bf51f24a6 -> 48f644686
http://git-wip-us.apache.org/repos/asf/cassandra/blob/48f64468/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 ce935e3..48f0caf 100644 --- a/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java +++ b/test/unit/org/apache/cassandra/cql3/TupleTypeTest.java @@ -98,4 +98,17 @@ public class TupleTypeTest extends CQLTester assertInvalidSyntax("INSERT INTO %s (k, t) VALUES (0, ())"); assertInvalid("INSERT INTO %s (k, t) VALUES (0, (2, 'foo', 3.1, 'bar'))"); } + + @Test + public void testTupleWithUnsetValues() throws Throwable + { + createTable("CREATE TABLE %s (k int PRIMARY KEY, t tuple<int, text, double>)"); + // invalid positional field substitution + assertInvalidMessage("Invalid unset value for tuple field number 1", + "INSERT INTO %s (k, t) VALUES(0, (3, ?, 2.1))", unset()); + + createIndex("CREATE INDEX tuple_index ON %s (t)"); + // select using unset + assertInvalidMessage("Invalid unset value for tuple field number 0", "SELECT * FROM %s WHERE k = ? and t = (?,?,?)", unset(), unset(), unset(), unset()); + } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/48f64468/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 76315cf..3b381fc 100644 --- a/test/unit/org/apache/cassandra/cql3/UserTypesTest.java +++ b/test/unit/org/apache/cassandra/cql3/UserTypesTest.java @@ -111,4 +111,19 @@ public class UserTypesTest extends CQLTester row(1, null), row(2, 2)); } + + @Test + public void testUDTWithUnsetValues() throws Throwable + { + // set up + String myType = createType("CREATE TYPE %s (x int, y int)"); + String myOtherType = createType("CREATE TYPE %s (a frozen<" + myType + ">)"); + createTable("CREATE TABLE %s (k int PRIMARY KEY, v frozen<" + myType + ">, z frozen<" + myOtherType + ">)"); + + assertInvalidMessage("Invalid unset value for field 'y' of user defined type " + myType, + "INSERT INTO %s (k, v) VALUES (10, {x:?, y:?})", 1, unset()); + + assertInvalidMessage("Invalid unset value for field 'y' of user defined type " + myType, + "INSERT INTO %s (k, v, z) VALUES (10, {x:?, y:?}, {a:{x: ?, y: ?}})", 1, 1, 1, unset()); + } }
