cassandra git commit: Some DROP ... IF EXISTS incorrectly result in exceptions on non-existing KS

2015-11-27 Thread snazy
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.1 b8a8004d8 -> 4ecbbc082


Some DROP ... IF EXISTS incorrectly result in exceptions on non-existing KS

patch by Robert Stupp; reviewed by Marcus Eriksson for CASSANDRA-10658


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

Branch: refs/heads/cassandra-2.1
Commit: 4ecbbc08206fc5cd2e91520a5b99ef890f1da75d
Parents: b8a8004
Author: Robert Stupp 
Authored: Fri Nov 27 10:42:38 2015 +0100
Committer: Robert Stupp 
Committed: Fri Nov 27 10:42:38 2015 +0100

--
 CHANGES.txt |  1 +
 .../cql3/statements/DropTypeStatement.java  | 10 --
 .../cql3/validation/entities/TypeTest.java  | 10 ++
 .../cql3/validation/operations/DropTest.java| 37 
 4 files changed, 56 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 48f4e89..4adcf4f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.12
+ * Some DROP ... IF EXISTS incorrectly result in exceptions on non-existing KS 
(CASSANDRA-10658)
  * DeletionTime.compareTo wrong in rare cases (CASSANDRA-10749)
  * Force encoding when computing statement ids (CASSANDRA-10755)
  * Properly reject counters as map keys (CASSANDRA-10760)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
--
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
index 94edd01..bc6005d 100644
--- a/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
@@ -54,7 +54,12 @@ public class DropTypeStatement extends 
SchemaAlteringStatement
 {
 KSMetaData ksm = Schema.instance.getKSMetaData(name.getKeyspace());
 if (ksm == null)
-throw new InvalidRequestException(String.format("Cannot drop type 
in unknown keyspace %s", name.getKeyspace()));
+{
+if (ifExists)
+return;
+else
+throw new InvalidRequestException(String.format("Cannot drop 
type in unknown keyspace %s", name.getKeyspace()));
+}
 
 UserType old = ksm.userTypes.getType(name.getUserTypeName());
 if (old == null)
@@ -140,7 +145,8 @@ public class DropTypeStatement extends 
SchemaAlteringStatement
 public boolean announceMigration(boolean isLocalOnly) throws 
InvalidRequestException, ConfigurationException
 {
 KSMetaData ksm = Schema.instance.getKSMetaData(name.getKeyspace());
-assert ksm != null;
+if (ksm == null)
+return false; // do not assert (otherwise IF EXISTS case fails)
 
 UserType toDrop = ksm.userTypes.getType(name.getUserTypeName());
 // Can be null with ifExists

http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
--
diff --git 
a/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java 
b/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
index f27cca8..f23ce35 100644
--- a/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
+++ b/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
@@ -28,6 +28,16 @@ import static org.junit.Assert.fail;
 public class TypeTest extends CQLTester
 {
 @Test
+public void testNonExistingOnes() throws Throwable
+{
+assertInvalidMessage("No user type named", "DROP TYPE " + KEYSPACE + 
".type_does_not_exist");
+assertInvalidMessage("Cannot drop type in unknown keyspace", "DROP 
TYPE keyspace_does_not_exist.type_does_not_exist");
+
+execute("DROP TYPE IF EXISTS " + KEYSPACE + ".type_does_not_exist");
+execute("DROP TYPE IF EXISTS 
keyspace_does_not_exist.type_does_not_exist");
+}
+
+@Test
 public void testNowToUUIDCompatibility() throws Throwable
 {
 createTable("CREATE TABLE %s (a int, b uuid, PRIMARY KEY (a, b))");

http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/test/unit/org/apache/cassandra/cql3/validation/operations/DropTest.java
--
diff --git 
a/test/unit/org/apache/cass

[1/8] cassandra git commit: Some DROP ... IF EXISTS incorrectly result in exceptions on non-existing KS

2015-11-27 Thread snazy
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 e8091d5f7 -> d300a1850


Some DROP ... IF EXISTS incorrectly result in exceptions on non-existing KS

patch by Robert Stupp; reviewed by Marcus Eriksson for CASSANDRA-10658


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

Branch: refs/heads/cassandra-3.0
Commit: 4ecbbc08206fc5cd2e91520a5b99ef890f1da75d
Parents: b8a8004
Author: Robert Stupp 
Authored: Fri Nov 27 10:42:38 2015 +0100
Committer: Robert Stupp 
Committed: Fri Nov 27 10:42:38 2015 +0100

--
 CHANGES.txt |  1 +
 .../cql3/statements/DropTypeStatement.java  | 10 --
 .../cql3/validation/entities/TypeTest.java  | 10 ++
 .../cql3/validation/operations/DropTest.java| 37 
 4 files changed, 56 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 48f4e89..4adcf4f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.12
+ * Some DROP ... IF EXISTS incorrectly result in exceptions on non-existing KS 
(CASSANDRA-10658)
  * DeletionTime.compareTo wrong in rare cases (CASSANDRA-10749)
  * Force encoding when computing statement ids (CASSANDRA-10755)
  * Properly reject counters as map keys (CASSANDRA-10760)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
--
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
index 94edd01..bc6005d 100644
--- a/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
@@ -54,7 +54,12 @@ public class DropTypeStatement extends 
SchemaAlteringStatement
 {
 KSMetaData ksm = Schema.instance.getKSMetaData(name.getKeyspace());
 if (ksm == null)
-throw new InvalidRequestException(String.format("Cannot drop type 
in unknown keyspace %s", name.getKeyspace()));
+{
+if (ifExists)
+return;
+else
+throw new InvalidRequestException(String.format("Cannot drop 
type in unknown keyspace %s", name.getKeyspace()));
+}
 
 UserType old = ksm.userTypes.getType(name.getUserTypeName());
 if (old == null)
@@ -140,7 +145,8 @@ public class DropTypeStatement extends 
SchemaAlteringStatement
 public boolean announceMigration(boolean isLocalOnly) throws 
InvalidRequestException, ConfigurationException
 {
 KSMetaData ksm = Schema.instance.getKSMetaData(name.getKeyspace());
-assert ksm != null;
+if (ksm == null)
+return false; // do not assert (otherwise IF EXISTS case fails)
 
 UserType toDrop = ksm.userTypes.getType(name.getUserTypeName());
 // Can be null with ifExists

http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
--
diff --git 
a/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java 
b/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
index f27cca8..f23ce35 100644
--- a/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
+++ b/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
@@ -28,6 +28,16 @@ import static org.junit.Assert.fail;
 public class TypeTest extends CQLTester
 {
 @Test
+public void testNonExistingOnes() throws Throwable
+{
+assertInvalidMessage("No user type named", "DROP TYPE " + KEYSPACE + 
".type_does_not_exist");
+assertInvalidMessage("Cannot drop type in unknown keyspace", "DROP 
TYPE keyspace_does_not_exist.type_does_not_exist");
+
+execute("DROP TYPE IF EXISTS " + KEYSPACE + ".type_does_not_exist");
+execute("DROP TYPE IF EXISTS 
keyspace_does_not_exist.type_does_not_exist");
+}
+
+@Test
 public void testNowToUUIDCompatibility() throws Throwable
 {
 createTable("CREATE TABLE %s (a int, b uuid, PRIMARY KEY (a, b))");

http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/test/unit/org/apache/cassandra/cql3/validation/operations/DropTest.java
--
diff --git 
a/test/unit/org/apache/cass

[1/9] cassandra git commit: Some DROP ... IF EXISTS incorrectly result in exceptions on non-existing KS

2015-11-27 Thread snazy
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.1 29178b2fe -> 442d4c9d4


Some DROP ... IF EXISTS incorrectly result in exceptions on non-existing KS

patch by Robert Stupp; reviewed by Marcus Eriksson for CASSANDRA-10658


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

Branch: refs/heads/cassandra-3.1
Commit: 4ecbbc08206fc5cd2e91520a5b99ef890f1da75d
Parents: b8a8004
Author: Robert Stupp 
Authored: Fri Nov 27 10:42:38 2015 +0100
Committer: Robert Stupp 
Committed: Fri Nov 27 10:42:38 2015 +0100

--
 CHANGES.txt |  1 +
 .../cql3/statements/DropTypeStatement.java  | 10 --
 .../cql3/validation/entities/TypeTest.java  | 10 ++
 .../cql3/validation/operations/DropTest.java| 37 
 4 files changed, 56 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 48f4e89..4adcf4f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.12
+ * Some DROP ... IF EXISTS incorrectly result in exceptions on non-existing KS 
(CASSANDRA-10658)
  * DeletionTime.compareTo wrong in rare cases (CASSANDRA-10749)
  * Force encoding when computing statement ids (CASSANDRA-10755)
  * Properly reject counters as map keys (CASSANDRA-10760)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
--
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
index 94edd01..bc6005d 100644
--- a/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
@@ -54,7 +54,12 @@ public class DropTypeStatement extends 
SchemaAlteringStatement
 {
 KSMetaData ksm = Schema.instance.getKSMetaData(name.getKeyspace());
 if (ksm == null)
-throw new InvalidRequestException(String.format("Cannot drop type 
in unknown keyspace %s", name.getKeyspace()));
+{
+if (ifExists)
+return;
+else
+throw new InvalidRequestException(String.format("Cannot drop 
type in unknown keyspace %s", name.getKeyspace()));
+}
 
 UserType old = ksm.userTypes.getType(name.getUserTypeName());
 if (old == null)
@@ -140,7 +145,8 @@ public class DropTypeStatement extends 
SchemaAlteringStatement
 public boolean announceMigration(boolean isLocalOnly) throws 
InvalidRequestException, ConfigurationException
 {
 KSMetaData ksm = Schema.instance.getKSMetaData(name.getKeyspace());
-assert ksm != null;
+if (ksm == null)
+return false; // do not assert (otherwise IF EXISTS case fails)
 
 UserType toDrop = ksm.userTypes.getType(name.getUserTypeName());
 // Can be null with ifExists

http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
--
diff --git 
a/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java 
b/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
index f27cca8..f23ce35 100644
--- a/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
+++ b/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
@@ -28,6 +28,16 @@ import static org.junit.Assert.fail;
 public class TypeTest extends CQLTester
 {
 @Test
+public void testNonExistingOnes() throws Throwable
+{
+assertInvalidMessage("No user type named", "DROP TYPE " + KEYSPACE + 
".type_does_not_exist");
+assertInvalidMessage("Cannot drop type in unknown keyspace", "DROP 
TYPE keyspace_does_not_exist.type_does_not_exist");
+
+execute("DROP TYPE IF EXISTS " + KEYSPACE + ".type_does_not_exist");
+execute("DROP TYPE IF EXISTS 
keyspace_does_not_exist.type_does_not_exist");
+}
+
+@Test
 public void testNowToUUIDCompatibility() throws Throwable
 {
 createTable("CREATE TABLE %s (a int, b uuid, PRIMARY KEY (a, b))");

http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/test/unit/org/apache/cassandra/cql3/validation/operations/DropTest.java
--
diff --git 
a/test/unit/org/apache/cass

[1/5] cassandra git commit: Some DROP ... IF EXISTS incorrectly result in exceptions on non-existing KS

2015-11-27 Thread snazy
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.2 db9708376 -> b3e6a433e


Some DROP ... IF EXISTS incorrectly result in exceptions on non-existing KS

patch by Robert Stupp; reviewed by Marcus Eriksson for CASSANDRA-10658


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

Branch: refs/heads/cassandra-2.2
Commit: 4ecbbc08206fc5cd2e91520a5b99ef890f1da75d
Parents: b8a8004
Author: Robert Stupp 
Authored: Fri Nov 27 10:42:38 2015 +0100
Committer: Robert Stupp 
Committed: Fri Nov 27 10:42:38 2015 +0100

--
 CHANGES.txt |  1 +
 .../cql3/statements/DropTypeStatement.java  | 10 --
 .../cql3/validation/entities/TypeTest.java  | 10 ++
 .../cql3/validation/operations/DropTest.java| 37 
 4 files changed, 56 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 48f4e89..4adcf4f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.12
+ * Some DROP ... IF EXISTS incorrectly result in exceptions on non-existing KS 
(CASSANDRA-10658)
  * DeletionTime.compareTo wrong in rare cases (CASSANDRA-10749)
  * Force encoding when computing statement ids (CASSANDRA-10755)
  * Properly reject counters as map keys (CASSANDRA-10760)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
--
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
index 94edd01..bc6005d 100644
--- a/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
@@ -54,7 +54,12 @@ public class DropTypeStatement extends 
SchemaAlteringStatement
 {
 KSMetaData ksm = Schema.instance.getKSMetaData(name.getKeyspace());
 if (ksm == null)
-throw new InvalidRequestException(String.format("Cannot drop type 
in unknown keyspace %s", name.getKeyspace()));
+{
+if (ifExists)
+return;
+else
+throw new InvalidRequestException(String.format("Cannot drop 
type in unknown keyspace %s", name.getKeyspace()));
+}
 
 UserType old = ksm.userTypes.getType(name.getUserTypeName());
 if (old == null)
@@ -140,7 +145,8 @@ public class DropTypeStatement extends 
SchemaAlteringStatement
 public boolean announceMigration(boolean isLocalOnly) throws 
InvalidRequestException, ConfigurationException
 {
 KSMetaData ksm = Schema.instance.getKSMetaData(name.getKeyspace());
-assert ksm != null;
+if (ksm == null)
+return false; // do not assert (otherwise IF EXISTS case fails)
 
 UserType toDrop = ksm.userTypes.getType(name.getUserTypeName());
 // Can be null with ifExists

http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
--
diff --git 
a/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java 
b/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
index f27cca8..f23ce35 100644
--- a/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
+++ b/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
@@ -28,6 +28,16 @@ import static org.junit.Assert.fail;
 public class TypeTest extends CQLTester
 {
 @Test
+public void testNonExistingOnes() throws Throwable
+{
+assertInvalidMessage("No user type named", "DROP TYPE " + KEYSPACE + 
".type_does_not_exist");
+assertInvalidMessage("Cannot drop type in unknown keyspace", "DROP 
TYPE keyspace_does_not_exist.type_does_not_exist");
+
+execute("DROP TYPE IF EXISTS " + KEYSPACE + ".type_does_not_exist");
+execute("DROP TYPE IF EXISTS 
keyspace_does_not_exist.type_does_not_exist");
+}
+
+@Test
 public void testNowToUUIDCompatibility() throws Throwable
 {
 createTable("CREATE TABLE %s (a int, b uuid, PRIMARY KEY (a, b))");

http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/test/unit/org/apache/cassandra/cql3/validation/operations/DropTest.java
--
diff --git 
a/test/unit/org/apache/cass

[01/10] cassandra git commit: Some DROP ... IF EXISTS incorrectly result in exceptions on non-existing KS

2015-11-27 Thread snazy
Repository: cassandra
Updated Branches:
  refs/heads/trunk 1c5238c1f -> dbc8dd6a9


Some DROP ... IF EXISTS incorrectly result in exceptions on non-existing KS

patch by Robert Stupp; reviewed by Marcus Eriksson for CASSANDRA-10658


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

Branch: refs/heads/trunk
Commit: 4ecbbc08206fc5cd2e91520a5b99ef890f1da75d
Parents: b8a8004
Author: Robert Stupp 
Authored: Fri Nov 27 10:42:38 2015 +0100
Committer: Robert Stupp 
Committed: Fri Nov 27 10:42:38 2015 +0100

--
 CHANGES.txt |  1 +
 .../cql3/statements/DropTypeStatement.java  | 10 --
 .../cql3/validation/entities/TypeTest.java  | 10 ++
 .../cql3/validation/operations/DropTest.java| 37 
 4 files changed, 56 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 48f4e89..4adcf4f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.12
+ * Some DROP ... IF EXISTS incorrectly result in exceptions on non-existing KS 
(CASSANDRA-10658)
  * DeletionTime.compareTo wrong in rare cases (CASSANDRA-10749)
  * Force encoding when computing statement ids (CASSANDRA-10755)
  * Properly reject counters as map keys (CASSANDRA-10760)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
--
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
index 94edd01..bc6005d 100644
--- a/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java
@@ -54,7 +54,12 @@ public class DropTypeStatement extends 
SchemaAlteringStatement
 {
 KSMetaData ksm = Schema.instance.getKSMetaData(name.getKeyspace());
 if (ksm == null)
-throw new InvalidRequestException(String.format("Cannot drop type 
in unknown keyspace %s", name.getKeyspace()));
+{
+if (ifExists)
+return;
+else
+throw new InvalidRequestException(String.format("Cannot drop 
type in unknown keyspace %s", name.getKeyspace()));
+}
 
 UserType old = ksm.userTypes.getType(name.getUserTypeName());
 if (old == null)
@@ -140,7 +145,8 @@ public class DropTypeStatement extends 
SchemaAlteringStatement
 public boolean announceMigration(boolean isLocalOnly) throws 
InvalidRequestException, ConfigurationException
 {
 KSMetaData ksm = Schema.instance.getKSMetaData(name.getKeyspace());
-assert ksm != null;
+if (ksm == null)
+return false; // do not assert (otherwise IF EXISTS case fails)
 
 UserType toDrop = ksm.userTypes.getType(name.getUserTypeName());
 // Can be null with ifExists

http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
--
diff --git 
a/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java 
b/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
index f27cca8..f23ce35 100644
--- a/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
+++ b/test/unit/org/apache/cassandra/cql3/validation/entities/TypeTest.java
@@ -28,6 +28,16 @@ import static org.junit.Assert.fail;
 public class TypeTest extends CQLTester
 {
 @Test
+public void testNonExistingOnes() throws Throwable
+{
+assertInvalidMessage("No user type named", "DROP TYPE " + KEYSPACE + 
".type_does_not_exist");
+assertInvalidMessage("Cannot drop type in unknown keyspace", "DROP 
TYPE keyspace_does_not_exist.type_does_not_exist");
+
+execute("DROP TYPE IF EXISTS " + KEYSPACE + ".type_does_not_exist");
+execute("DROP TYPE IF EXISTS 
keyspace_does_not_exist.type_does_not_exist");
+}
+
+@Test
 public void testNowToUUIDCompatibility() throws Throwable
 {
 createTable("CREATE TABLE %s (a int, b uuid, PRIMARY KEY (a, b))");

http://git-wip-us.apache.org/repos/asf/cassandra/blob/4ecbbc08/test/unit/org/apache/cassandra/cql3/validation/operations/DropTest.java
--
diff --git 
a/test/unit/org/apache/cassandra/cql3/valid