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 2010/10/26 12:54:58 UTC
svn commit: r1027456 - in /cassandra/branches/cassandra-0.7: ./
src/java/org/apache/cassandra/cli/ test/unit/org/apache/cassandra/cli/
Author: jbellis
Date: Tue Oct 26 10:54:58 2010
New Revision: 1027456
URL: http://svn.apache.org/viewvc?rev=1027456&view=rev
Log:
cli truncate support. patch by Pavel Yaskevich; reviewed by jbellis for CASSANDRA-1653
Modified:
cassandra/branches/cassandra-0.7/CHANGES.txt
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/Cli.g
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliCompleter.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliUserHelp.java
cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/cli/CliTest.java
Modified: cassandra/branches/cassandra-0.7/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/CHANGES.txt?rev=1027456&r1=1027455&r2=1027456&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.7/CHANGES.txt Tue Oct 26 10:54:58 2010
@@ -59,6 +59,7 @@
the old ones (CASSANDRA-1644)
* upgrade to Thrift 0.5 (CASSANDRA-1367)
* renamed CL.DCQUORUM to LOCAL_QUORUM and DCQUORUMSYNC to EACH_QUORUM
+ * cli truncate support (CASSANDRA-1653)
0.7-beta2
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/Cli.g
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/Cli.g?rev=1027456&r1=1027455&r2=1027456&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/Cli.g (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/Cli.g Tue Oct 26 10:54:58 2010
@@ -55,6 +55,7 @@ tokens {
NODE_UPDATE_KEYSPACE;
NODE_UPDATE_COLUMN_FAMILY;
NODE_LIST;
+ NODE_TRUNCATE;
// Internal Nodes.
NODE_COLUMN_ACCESS;
@@ -123,6 +124,7 @@ statement
| setStatement
| showStatement
| listStatement
+ | truncateStatement
| -> ^(NODE_NO_OP)
;
@@ -174,6 +176,8 @@ helpStatement
-> ^(NODE_HELP NODE_THRIFT_COUNT)
| K_HELP K_LIST
-> ^(NODE_HELP NODE_LIST)
+ | K_HELP K_TRUNCATE
+ -> ^(NODE_HELP NODE_TRUNCATE)
| K_HELP
-> ^(NODE_HELP)
| '?'
@@ -231,6 +235,11 @@ listStatement
-> ^(NODE_LIST columnFamily keyRangeExpr? ^(NODE_LIMIT $limit)?)
;
+truncateStatement
+ : K_TRUNCATE columnFamily
+ -> ^(NODE_TRUNCATE columnFamily)
+ ;
+
showClusterName
: K_SHOW K_CLUSTER K_NAME
-> ^(NODE_SHOW_CLUSTER_NAME)
@@ -430,6 +439,7 @@ K_AND: 'AND';
K_UPDATE: 'UPDATE';
K_LIST: 'LIST';
K_LIMIT: 'LIMIT';
+K_TRUNCATE: 'TRUNCATE';
// private syntactic rules
fragment
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java?rev=1027456&r1=1027455&r2=1027456&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java Tue Oct 26 10:54:58 2010
@@ -171,6 +171,9 @@ public class CliClient extends CliUserHe
case CliParser.NODE_LIST:
executeList(tree);
break;
+ case CliParser.NODE_TRUNCATE:
+ executeTruncate(tree.getChild(0).getText());
+ break;
case CliParser.NODE_NO_OP:
// comment lines come here; they are treated as no ops.
break;
@@ -943,6 +946,30 @@ public class CliClient extends CliUserHe
printSliceList(columnFamilyDef, keySlices);
}
+ // TRUNCATE <columnFamily>
+ private void executeTruncate(String columnFamily)
+ {
+ if (!CliMain.isConnected() || !hasKeySpace())
+ return;
+
+ // getting CfDef, it will fail if there is no such column family in current keySpace.
+ CfDef cfDef = getCfDef(columnFamily);
+
+ try
+ {
+ thriftClient.truncate(cfDef.getName());
+ sessionState.out.println(columnFamily + " truncated.");
+ }
+ catch (InvalidRequestException e)
+ {
+ throw new RuntimeException(e.getWhy());
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException(e.getMessage());
+ }
+ }
+
// SHOW API VERSION
private void executeShowVersion() throws TException
{
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliCompleter.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliCompleter.java?rev=1027456&r1=1027455&r2=1027456&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliCompleter.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliCompleter.java Tue Oct 26 10:54:58 2010
@@ -55,12 +55,16 @@ public class CliCompleter extends Simple
"help set",
"help del",
"help count",
+ "help list",
+ "help truncate"
};
private static String[] keyspaceCommands = {
"get",
"set",
"count",
- "del"
+ "del",
+ "list",
+ "truncate"
};
public CliCompleter()
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliUserHelp.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliUserHelp.java?rev=1027456&r1=1027455&r2=1027456&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliUserHelp.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliUserHelp.java Tue Oct 26 10:54:58 2010
@@ -281,6 +281,13 @@ public class CliUserHelp {
state.out.println("list Users[j:] limit 40");
break;
+ case CliParser.NODE_TRUNCATE:
+ state.out.println("truncate <column_family>");
+ state.out.println("Truncate specified column family.\n");
+ state.out.println("example:");
+ state.out.println("truncate Category");
+ break;
+
default:
state.out.println("?");
break;
@@ -324,7 +331,8 @@ public class CliUserHelp {
state.out.println("del <cf>['<key>']['<super>']['<col>'] Delete sub column.");
state.out.println("count <cf>['<key>'] Count columns in record.");
state.out.println("count <cf>['<key>']['<super>'] Count columns in a super column.");
- state.out.println("list <cf> List all rows in the column family.");
+ state.out.println("truncate <column_family> Truncate specified column family.");
+ state.out.println("list <cf> List all rows in the column family.");
state.out.println("list <cf>[<startKey>:]");
state.out.println(" List rows in the column family beginning with <startKey>.");
state.out.println("list <cf>[<startKey>:<endKey>]");
Modified: cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/cli/CliTest.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/cli/CliTest.java?rev=1027456&r1=1027455&r2=1027456&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/cli/CliTest.java (original)
+++ cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/cli/CliTest.java Tue Oct 26 10:54:58 2010
@@ -52,6 +52,7 @@ public class CliTest extends TestCase
"list CF3[h:]",
"list CF3 limit 10",
"list CF3[h:g] limit 10",
+ "truncate CF1",
"update keyspace TestKeySpace with placement_strategy='org.apache.cassandra.locator.LocalStrategy'",
"update keyspace TestKeySpace with replication_factor=1 and strategy_options=[{DC1:3, DC2:4, DC5:1}]"
};
@@ -101,6 +102,10 @@ public class CliTest extends TestCase
assertTrue(result.startsWith("=> (column="));
}
}
+ else if (statement.startsWith("truncate "))
+ {
+ assertTrue(result.contains(" truncated."));
+ }
outStream.reset(); // reset stream so we have only output from next statement all the time
errStream.reset(); // no errors to the end user.