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 2010/11/27 03:22:22 UTC
svn commit: r1039595 - in /cassandra/trunk:
src/java/org/apache/cassandra/cql/Cql.g
src/java/org/apache/cassandra/cql/QueryProcessor.java
src/java/org/apache/cassandra/cql/StatementType.java test/system/test_cql.py
Author: eevans
Date: Sat Nov 27 02:22:22 2010
New Revision: 1039595
URL: http://svn.apache.org/viewvc?rev=1039595&view=rev
Log:
CQL TRUNCATE implementation + test
Patch by eevans for CASSANDRA-1716
Modified:
cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g
cassandra/trunk/src/java/org/apache/cassandra/cql/QueryProcessor.java
cassandra/trunk/src/java/org/apache/cassandra/cql/StatementType.java
cassandra/trunk/test/system/test_cql.py
Modified: cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g?rev=1039595&r1=1039594&r2=1039595&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g Sat Nov 27 02:22:22 2010
@@ -43,10 +43,11 @@ options {
}
query returns [CQLStatement stmnt]
- : selectStatement { $stmnt = new CQLStatement(StatementType.SELECT, $selectStatement.expr); }
- | updateStatement { $stmnt = new CQLStatement(StatementType.UPDATE, $updateStatement.expr); }
+ : selectStatement { $stmnt = new CQLStatement(StatementType.SELECT, $selectStatement.expr); }
+ | updateStatement { $stmnt = new CQLStatement(StatementType.UPDATE, $updateStatement.expr); }
| batchUpdateStatement { $stmnt = new CQLStatement(StatementType.BATCH_UPDATE, $batchUpdateStatement.expr); }
- | useStatement { $stmnt = new CQLStatement(StatementType.USE, $useStatement.keyspace); }
+ | useStatement { $stmnt = new CQLStatement(StatementType.USE, $useStatement.keyspace); }
+ | truncateStatement { $stmnt = new CQLStatement(StatementType.TRUNCATE, $truncateStatement.cfam); }
;
// USE <KEYSPACE>;
@@ -168,6 +169,11 @@ selectExpression returns [SelectExpressi
| start=term '..' finish=term { $expr = new SelectExpression(start, finish, count, reversed); }
)
;
+
+// TRUNCATE <CF>;
+truncateStatement returns [String cfam]
+ : K_TRUNCATE columnFamily=IDENT { $cfam = $columnFamily.text; } endStmnt
+ ;
endStmnt
: (EOF | ';')
@@ -201,6 +207,7 @@ K_SET: S E T;
K_BEGIN: B E G I N;
K_APPLY: A P P L Y;
K_BATCH: B A T C H;
+K_TRUNCATE: T R U N C A T E;
// Case-insensitive alpha characters
fragment A: ('a'|'A');
Modified: cassandra/trunk/src/java/org/apache/cassandra/cql/QueryProcessor.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cql/QueryProcessor.java?rev=1039595&r1=1039594&r2=1039595&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cql/QueryProcessor.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cql/QueryProcessor.java Sat Nov 27 02:22:22 2010
@@ -69,6 +69,7 @@ import org.slf4j.LoggerFactory;
import static org.apache.cassandra.avro.AvroValidation.validateKey;
import static org.apache.cassandra.avro.AvroValidation.validateColumnFamily;
import static org.apache.cassandra.avro.AvroErrorFactory.newInvalidRequestException;
+import static org.apache.cassandra.avro.AvroErrorFactory.newUnavailableException;
public class QueryProcessor
{
@@ -419,6 +420,29 @@ public class QueryProcessor
avroResult.type = CqlResultType.VOID;
return avroResult;
+
+ case TRUNCATE:
+ String columnFamily = (String)statement.statement;
+
+ try
+ {
+ StorageProxy.truncateBlocking(keyspace, columnFamily);
+ }
+ catch (org.apache.cassandra.thrift.UnavailableException e)
+ {
+ throw newUnavailableException(e);
+ }
+ catch (TimeoutException e)
+ {
+ throw newUnavailableException(e);
+ }
+ catch (IOException e)
+ {
+ throw newUnavailableException(e);
+ }
+
+ avroResult.type = CqlResultType.VOID;
+ return avroResult;
}
return null; // We should never get here.
Modified: cassandra/trunk/src/java/org/apache/cassandra/cql/StatementType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cql/StatementType.java?rev=1039595&r1=1039594&r2=1039595&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cql/StatementType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cql/StatementType.java Sat Nov 27 02:22:22 2010
@@ -22,5 +22,5 @@ package org.apache.cassandra.cql;
public enum StatementType
{
- SELECT, UPDATE, BATCH_UPDATE, USE;
+ SELECT, UPDATE, BATCH_UPDATE, USE, TRUNCATE;
}
Modified: cassandra/trunk/test/system/test_cql.py
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/system/test_cql.py?rev=1039595&r1=1039594&r2=1039595&view=diff
==============================================================================
--- cassandra/trunk/test/system/test_cql.py (original)
+++ cassandra/trunk/test/system/test_cql.py Sat Nov 27 02:22:22 2010
@@ -160,3 +160,9 @@ class TestCql(AvroTester):
r = conn.execute('SELECT COUNT(1L..4L) FROM StandardLong1 WHERE KEY = "aa";')
assert r == 4
+ def test_truncate_columnfamily(self):
+ "truncating a column family"
+ conn = init()
+ conn.execute('TRUNCATE Standard1;')
+ r = conn.execute('SELECT "cd1" FROM Standard1 WHERE KEY = "kd"')
+ assert len(r) == 0