Author: brandonwilliams
Date: Mon Nov 28 21:19:15 2011
New Revision: 1207616

URL: http://svn.apache.org/viewvc?rev=1207616&view=rev
Log:
Fix ASSUME when using SELECT keyspace.cfname syntax in cqlsh.
Patch by Paul Cannon, reviewed by brandonwilliams for CASSANDRA-3500

Modified:
    cassandra/branches/cassandra-1.0/bin/cqlsh

Modified: cassandra/branches/cassandra-1.0/bin/cqlsh
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/bin/cqlsh?rev=1207616&r1=1207615&r2=1207616&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0/bin/cqlsh (original)
+++ cassandra/branches/cassandra-1.0/bin/cqlsh Mon Nov 28 21:19:15 2011
@@ -183,7 +183,9 @@ def complete_assume_col(ctxt, cqlsh):
     ks = cql_dequote(ks) if ks is not None else None
     cf = cql_dequote(ctxt.get_binding('cf'))
     cfdef = cqlsh.get_columnfamily(cf, ksname=ks)
-    return map(maybe_cql_escape, [cm.name for cm in cfdef.column_metadata])
+    cols = [cm.name for cm in cfdef.column_metadata]
+    cols.append(cfdef.key_alias or 'KEY')
+    return map(maybe_cql_escape, cols)
 
 class NoKeyspaceError(Exception):
     pass
@@ -466,8 +468,11 @@ class Shell(cmd.Cmd):
           HELP SELECT_LIMIT
           HELP CONSISTENCYLEVEL
         """
+        ksname = parsed.get_binding('selectks')
+        if ksname is not None:
+            ksname = cql_dequote(ksname)
         cfname = cql_dequote(parsed.get_binding('selectsource'))
-        decoder = self.determine_decoder_for(cfname)
+        decoder = self.determine_decoder_for(cfname, ksname=ksname)
         self.perform_statement_as_tokens(parsed.matched, decoder=decoder)
 
     def perform_statement_as_tokens(self, tokens, decoder=None):
@@ -501,8 +506,10 @@ class Shell(cmd.Cmd):
             self.print_result()
         return True
 
-    def determine_decoder_for(self, cfname):
-        schema = self.schema_overrides.get((self.current_keyspace, cfname), 
None)
+    def determine_decoder_for(self, cfname, ksname=None):
+        if ksname is None:
+            ksname = self.current_keyspace
+        schema = self.schema_overrides.get((ksname, cfname), None)
         if schema:
             def use_my_schema_decoder(real_schema):
                 return cql.decoders.SchemaDecoder(schema.join(real_schema))


Reply via email to