You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by xe...@apache.org on 2012/01/29 02:16:11 UTC

[2/2] git commit: fix setting compaction_strategy_class using CQL

fix setting compaction_strategy_class using CQL


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

Branch: refs/heads/cassandra-1.0
Commit: 2c62adab36a589e9ff9e9169fd2125272e067918
Parents: b10d5bd
Author: Pavel Yaskevich <po...@gmail.com>
Authored: Sat Jan 28 00:03:12 2012 +0200
Committer: Pavel Yaskevich <po...@gmail.com>
Committed: Sun Jan 29 01:54:53 2012 +0200

----------------------------------------------------------------------
 .../cassandra/cql/CreateColumnFamilyStatement.java |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/2c62adab/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java b/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java
index 1095a72..c0568b9 100644
--- a/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java
+++ b/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java
@@ -37,6 +37,7 @@ import org.apache.cassandra.config.CFMetaData;
 import org.apache.cassandra.config.ColumnDefinition;
 import org.apache.cassandra.config.ConfigurationException;
 import org.apache.cassandra.db.ColumnFamilyType;
+import org.apache.cassandra.db.compaction.AbstractCompactionStrategy;
 import org.apache.cassandra.db.marshal.AbstractType;
 import org.apache.cassandra.db.marshal.TypeParser;
 import org.apache.cassandra.thrift.InvalidRequestException;
@@ -114,6 +115,7 @@ public class CreateColumnFamilyStatement
     private final Map<String, String> properties = new HashMap<String, String>();
     private List<String> keyValidator = new ArrayList<String>();
     private ByteBuffer keyAlias = null;
+    private Class<? extends AbstractCompactionStrategy> compactionStrategyClass;
     private final Map<String, String> compactionStrategyOptions = new HashMap<String, String>();
     private final Map<String, String> compressionParameters = new HashMap<String, String>();
 
@@ -125,6 +127,17 @@ public class CreateColumnFamilyStatement
     /** Perform validation of parsed params */
     private void validate() throws InvalidRequestException
     {
+        String compStrategy = getPropertyString(KW_COMPACTION_STRATEGY_CLASS, CFMetaData.DEFAULT_COMPACTION_STRATEGY_CLASS);
+
+        try
+        {
+            compactionStrategyClass = CFMetaData.createCompactionStrategy(compStrategy);
+        }
+        catch (ConfigurationException e)
+        {
+            throw new InvalidRequestException(e.getMessage());
+        }
+
         // we need to remove parent:key = value pairs from the main properties
         Set<String> propsToRemove = new HashSet<String>();
 
@@ -338,6 +351,7 @@ public class CreateColumnFamilyStatement
                    .keyValidator(TypeParser.parse(comparators.get(getKeyType())))
                    .rowCacheProvider(FBUtilities.newCacheProvider(getPropertyString(KW_ROW_CACHE_PROVIDER, CFMetaData.DEFAULT_ROW_CACHE_PROVIDER.getClass().getName())))
                    .keyAlias(keyAlias)
+                   .compactionStrategyClass(compactionStrategyClass)
                    .compactionStrategyOptions(compactionStrategyOptions)
                    .compressionParameters(CompressionParameters.create(compressionParameters))
                    .validate();