Author: eevans
Date: Thu Mar 24 20:21:44 2011
New Revision: 1085112

URL: http://svn.apache.org/viewvc?rev=1085112&view=rev
Log:
do not require keyspace when dropping keyspace

Patch by eevans

Modified:
    cassandra/trunk/src/java/org/apache/cassandra/cql/QueryProcessor.java
    cassandra/trunk/src/java/org/apache/cassandra/cql/StatementType.java

Modified: cassandra/trunk/src/java/org/apache/cassandra/cql/QueryProcessor.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cql/QueryProcessor.java?rev=1085112&r1=1085111&r2=1085112&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cql/QueryProcessor.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cql/QueryProcessor.java Thu 
Mar 24 20:21:44 2011
@@ -63,6 +63,7 @@ import org.apache.cassandra.service.Stor
 import org.apache.cassandra.thrift.Column;
 import org.apache.cassandra.thrift.*;
 import org.apache.cassandra.utils.ByteBufferUtil;
+import org.eclipse.jdt.internal.compiler.ast.Statement;
 
 import com.google.common.base.Predicates;
 import com.google.common.collect.Maps;
@@ -444,8 +445,8 @@ public class QueryProcessor
         CQLStatement statement = getStatement(queryString);
         String keyspace = null;
         
-        // Chicken-and-egg; No keyspace to get when we're setting (or 
creating) one. 
-        if ((statement.type != StatementType.USE) && (statement.type != 
StatementType.CREATE_KEYSPACE))
+        // Some statements won't have (or don't need) a keyspace (think USE, 
or CREATE).
+        if (StatementType.requiresKeyspace.contains(statement.type))
             keyspace = clientState.getKeyspace();
         
         CqlResult avroResult = new CqlResult();

Modified: cassandra/trunk/src/java/org/apache/cassandra/cql/StatementType.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cql/StatementType.java?rev=1085112&r1=1085111&r2=1085112&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cql/StatementType.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cql/StatementType.java Thu 
Mar 24 20:21:44 2011
@@ -20,8 +20,14 @@
  */
 package org.apache.cassandra.cql;
 
+import java.util.EnumSet;
+
 public enum StatementType
 {
     SELECT, UPDATE, BATCH_UPDATE, USE, TRUNCATE, DELETE, CREATE_KEYSPACE, 
CREATE_COLUMNFAMILY, CREATE_INDEX,
         DROP_KEYSPACE, DROP_COLUMNFAMILY;
+    
+    // Statement types that don't require a keyspace to be set.
+    private static final EnumSet<StatementType> topLevel = EnumSet.of(USE, 
CREATE_KEYSPACE, DROP_KEYSPACE);
+    public static final EnumSet<StatementType> requiresKeyspace = 
EnumSet.complementOf(topLevel);
 }


Reply via email to