You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2012/01/20 00:04:53 UTC

[4/6] git commit: cqlsh: add DESC COLUMNFAMILIES to show cf names

cqlsh: add DESC COLUMNFAMILIES to show cf names

as opposed to DESCRIBE KEYSPACE, which shows all columnfamilies but
includes all their column definitions and options, which is usually a
lot of output.

patch by pcannon; reviewed by jbellis for CASSANDRA-3586


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

Branch: refs/heads/trunk
Commit: 95942f0221240e47e950a387a440b4dbe7dada65
Parents: 8311965
Author: paul cannon <pa...@datastax.com>
Authored: Thu Jan 19 14:23:56 2012 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu Jan 19 17:02:36 2012 -0600

----------------------------------------------------------------------
 CHANGES.txt |    4 ++++
 bin/cqlsh   |   29 ++++++++++++++++++++++++++++-
 2 files changed, 32 insertions(+), 1 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/95942f02/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index d3919d7..4688381 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,7 @@
+1.0.8
+ * (cqlsh) add DESCRIBE COLUMNFAMILIES (CASSANDRA-3586)
+
+
 1.0.7
  * fix regression in HH page size calculation (CASSANDRA-3624)
  * retry failed stream on IOException (CASSANDRA-3686)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95942f02/bin/cqlsh
----------------------------------------------------------------------
diff --git a/bin/cqlsh b/bin/cqlsh
index 0f02a0c..8fe044c 100755
--- a/bin/cqlsh
+++ b/bin/cqlsh
@@ -136,6 +136,7 @@ cqlhandling.CqlRuleSet.append_rules(r'''
 
 <describeCommand> ::= "DESCRIBE" ( "KEYSPACE" ksname=<name>?
                                   | "COLUMNFAMILY" cfname=<name>
+                                  | "COLUMNFAMILIES"
                                   | "SCHEMA"
                                   | "CLUSTER" )
                     ;
@@ -205,6 +206,9 @@ def complete_assume_col(ctxt, cqlsh):
 class NoKeyspaceError(Exception):
     pass
 
+class KeyspaceNotFound(Exception):
+    pass
+
 def trim_if_present(s, prefix):
     if s.startswith(prefix):
         return s[len(prefix):]
@@ -697,6 +701,22 @@ class Shell(cmd.Cmd):
         self.print_recreate_columnfamily(self.get_columnfamily(cfname))
         self.printout('')
 
+    def describe_columnfamilies(self, ksname):
+        if ksname is None:
+            for k in self.get_keyspaces():
+                self.printout('Keyspace %s' % (k.name,))
+                self.printout('---------%s\n' % ('-' * len(k.name)))
+                cmd.Cmd.columnize(self, [c.name for c in k.cf_defs])
+                self.printout('')
+        else:
+            try:
+                names = self.get_columnfamily_names(ksname)
+            except cql.cassandra.ttypes.NotFoundException:
+                raise KeyspaceNotFound('Keyspace %s not found.' % (ksname,))
+            self.printout('')
+            cmd.Cmd.columnize(self, names)
+            self.printout('')
+
     def describe_cluster(self):
         self.printout('Cluster: %s' % self.get_cluster_name())
         p = trim_if_present(self.get_partitioner(), 'org.apache.cassandra.dht.')
@@ -724,7 +744,7 @@ class Shell(cmd.Cmd):
           Outputs information about the connected Cassandra cluster, or about
           the data stored on it. Use in one of the following ways:
 
-        DESCRIBE KEYSPACE <keyspacename>
+        DESCRIBE KEYSPACE [<keyspacename>]
 
           Output CQL commands that could be used to recreate the given
           keyspace, and the columnfamilies in it. In some cases, as the CQL
@@ -734,6 +754,11 @@ class Shell(cmd.Cmd):
           The '<keyspacename>' argument may be omitted when using a non-system
           keyspace; in that case, the current keyspace will be described.
 
+        DESCRIBE COLUMNFAMILIES
+
+          Output the names of all column families in the current keyspace, or
+          in all keyspaces if there is no current keyspace.
+
         DESCRIBE COLUMNFAMILY <columnfamilyname>
 
           Output CQL commands that could be used to recreate the given
@@ -766,6 +791,8 @@ class Shell(cmd.Cmd):
         elif what == 'columnfamily':
             cfname = cql_dequote(parsed.get_binding('cfname'))
             self.describe_columnfamily(cfname)
+        elif what == 'columnfamilies':
+            self.describe_columnfamilies(self.current_keyspace)
         elif what == 'cluster':
             self.describe_cluster()
         elif what == 'schema':