You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ee...@apache.org on 2009/12/05 06:27:38 UTC

svn commit: r887501 - /incubator/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java

Author: eevans
Date: Sat Dec  5 05:27:38 2009
New Revision: 887501

URL: http://svn.apache.org/viewvc?rev=887501&view=rev
Log:
improve lazy lookup of keyspace/column family metadata

Patch by eevans

Modified:
    incubator/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java?rev=887501&r1=887500&r2=887501&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java Sat Dec  5 05:27:38 2009
@@ -32,7 +32,7 @@
 {
     private Cassandra.Client thriftClient_ = null;
     private CliSessionState css_ = null;
-    Map<String, Map<String, String>> columnFamiliesMap;
+    private Map<String, Map<String, Map<String, String>>> keyspacesMap = new HashMap<String, Map<String,Map<String,String>>>();
 
     public CliClient(CliSessionState css, Cassandra.Client thriftClient)
     {
@@ -126,6 +126,15 @@
         CliMain.disconnect();
         System.exit(0);
     }
+    
+    Map<String, Map<String, String>> getCFMetaData(String keyspace) throws NotFoundException, TException
+    {
+        // Lazily lookup column family meta-data.
+        if (!(keyspacesMap.containsKey(keyspace)))
+            keyspacesMap.put(keyspace, thriftClient_.describe_keyspace(keyspace));
+        return keyspacesMap.get(keyspace);
+    }
+    
     private void executeCount(CommonTree ast) throws TException, InvalidRequestException, UnavailableException, TimedOutException
     {
        if (!CliMain.isConnected())
@@ -238,13 +247,15 @@
         String tableName = CliCompiler.getTableName(columnFamilySpec);
         String key = CliCompiler.getKey(columnFamilySpec);
         String columnFamily = CliCompiler.getColumnFamily(columnFamilySpec);
-        int columnSpecCnt = CliCompiler.numColumnSpecifiers(columnFamilySpec);
+        int columnSpecCnt = CliCompiler.numColumnSpecifiers(columnFamilySpec); 
         
-        // Lazily lookup column family meta-data.
-        if (columnFamiliesMap == null)
-            columnFamiliesMap = thriftClient_.describe_keyspace(tableName);
+        if (!(getCFMetaData(tableName).containsKey(columnFamily)))
+        {
+            css_.out.println("No such column family: " + columnFamily);
+            return;
+        }
         
-        boolean isSuper = columnFamiliesMap.get(columnFamily).get("Type").equals("Super") ? true : false;
+        boolean isSuper = getCFMetaData(tableName).get(columnFamily).get("Type").equals("Super") ? true : false;
         
         byte[] superColumnName = null;
         byte[] columnName = null;