Fix having committed the wrong (old) patch for #4185

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

Branch: refs/heads/cassandra-1.1
Commit: 8dd6a3449a090266951424bc6307515ed8c9c93c
Parents: 13f3ba8
Author: Sylvain Lebresne <sylv...@datastax.com>
Authored: Tue Apr 24 19:27:52 2012 +0200
Committer: Sylvain Lebresne <sylv...@datastax.com>
Committed: Thu May 3 17:26:29 2012 +0200

----------------------------------------------------------------------
 .../statements/CreateColumnFamilyStatement.java    |   29 ++++++++-------
 1 files changed, 15 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/8dd6a344/src/java/org/apache/cassandra/cql3/statements/CreateColumnFamilyStatement.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/CreateColumnFamilyStatement.java
 
b/src/java/org/apache/cassandra/cql3/statements/CreateColumnFamilyStatement.java
index 9ee0f94..c2dca2e 100644
--- 
a/src/java/org/apache/cassandra/cql3/statements/CreateColumnFamilyStatement.java
+++ 
b/src/java/org/apache/cassandra/cql3/statements/CreateColumnFamilyStatement.java
@@ -55,7 +55,7 @@ public class CreateColumnFamilyStatement extends 
SchemaAlteringStatement
     private List<ByteBuffer> columnAliases = new ArrayList<ByteBuffer>();
     private ByteBuffer valueAlias;
 
-    private final Map<ColumnIdentifier, String> columns = new 
HashMap<ColumnIdentifier, String>();
+    private final Map<ColumnIdentifier, AbstractType> columns = new 
HashMap<ColumnIdentifier, AbstractType>();
     private final CFPropDefs properties;
 
     public CreateColumnFamilyStatement(CFName name, CFPropDefs properties)
@@ -70,11 +70,9 @@ public class CreateColumnFamilyStatement extends 
SchemaAlteringStatement
         Map<ByteBuffer, ColumnDefinition> columnDefs = new HashMap<ByteBuffer, 
ColumnDefinition>();
         Integer componentIndex = comparator instanceof CompositeType ? 
((CompositeType)comparator).types.size() - 1 : null;
 
-        for (Map.Entry<ColumnIdentifier, String> col : columns.entrySet())
+        for (Map.Entry<ColumnIdentifier, AbstractType> col : 
columns.entrySet())
         {
-            AbstractType<?> validator = CFPropDefs.parseType(col.getValue());
-
-            columnDefs.put(col.getKey().key, new 
ColumnDefinition(col.getKey().key, validator, null, null, null, 
componentIndex));
+            columnDefs.put(col.getKey().key, new 
ColumnDefinition(col.getKey().key, col.getValue(), null, null, null, 
componentIndex));
         }
 
         return columnDefs;
@@ -166,7 +164,11 @@ public class CreateColumnFamilyStatement extends 
SchemaAlteringStatement
 
                 CreateColumnFamilyStatement stmt = new 
CreateColumnFamilyStatement(cfName, properties);
                 stmt.setBoundTerms(getBoundsTerms());
-                stmt.columns.putAll(definitions); // we'll remove what is not 
a column below
+                for (Map.Entry<ColumnIdentifier, String> entry : 
definitions.entrySet())
+                {
+                    AbstractType<?> type = 
CFPropDefs.parseType(entry.getValue());
+                    stmt.columns.put(entry.getKey(), type); // we'll remove 
what is not a column below
+                }
 
                 // Ensure that exactly one key has been specified.
                 if (keyAliases.size() == 0)
@@ -228,8 +230,8 @@ public class CreateColumnFamilyStatement extends 
SchemaAlteringStatement
                     if (stmt.columns.size() > 1)
                         throw new 
InvalidRequestException(String.format("COMPACT STORAGE allows only one column 
not part of the PRIMARY KEY (got: %s)", StringUtils.join(stmt.columns.keySet(), 
", ")));
 
-                    Map.Entry<ColumnIdentifier, String> lastEntry = 
stmt.columns.entrySet().iterator().next();
-                    stmt.defaultValidator = 
CFPropDefs.parseType(lastEntry.getValue());
+                    Map.Entry<ColumnIdentifier, AbstractType> lastEntry = 
stmt.columns.entrySet().iterator().next();
+                    stmt.defaultValidator = lastEntry.getValue();
                     stmt.valueAlias = lastEntry.getKey().key;
                     stmt.columns.remove(lastEntry.getKey());
                 }
@@ -239,8 +241,8 @@ public class CreateColumnFamilyStatement extends 
SchemaAlteringStatement
                         throw new InvalidRequestException("No definition found 
that is not part of the PRIMARY KEY");
 
                     // There is no way to insert/access a column that is not 
defined for non-compact
-                    // storage, so the actual validator don't matter much.
-                    stmt.defaultValidator = CFDefinition.definitionType;
+                    // storage, so the actual validator don't matter much 
(except that we want to recognize counter CF as limitation apply to them).
+                    stmt.defaultValidator = 
(stmt.columns.values().iterator().next() instanceof CounterColumnType) ? 
CounterColumnType.instance : CFDefinition.definitionType;
                 }
 
                 return new ParsedStatement.Prepared(stmt);
@@ -251,13 +253,12 @@ public class CreateColumnFamilyStatement extends 
SchemaAlteringStatement
             }
         }
 
-        private AbstractType<?> getTypeAndRemove(Map<ColumnIdentifier, String> 
columns, ColumnIdentifier t) throws InvalidRequestException, 
ConfigurationException
+        private AbstractType<?> getTypeAndRemove(Map<ColumnIdentifier, 
AbstractType> columns, ColumnIdentifier t) throws InvalidRequestException, 
ConfigurationException
         {
-            String typeStr = columns.get(t);
-            if (typeStr == null)
+            AbstractType type = columns.get(t);
+            if (type == null)
                 throw new InvalidRequestException(String.format("Unkown 
definition %s referenced in PRIMARY KEY", t));
             columns.remove(t);
-            AbstractType<?> type = CFPropDefs.parseType(typeStr);
             Boolean isReversed = definedOrdering.get(t);
             return isReversed != null && isReversed ? 
ReversedType.getInstance(type) : type;
         }

Reply via email to