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;