Updated Branches:
  refs/heads/cassandra-1.1 a277fbedb -> 7108f3ed3

CQL support for altering key_validation_class in ALTER TABLE

patch by slebresne; reviewed by thepaul for CASSANDRA-3781


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

Branch: refs/heads/cassandra-1.1
Commit: 7108f3ed318f3be0afaf4bed109226d3373215c2
Parents: a277fbe
Author: Sylvain Lebresne <sylv...@datastax.com>
Authored: Wed Feb 8 10:21:30 2012 +0100
Committer: Sylvain Lebresne <sylv...@datastax.com>
Committed: Wed Feb 8 10:21:30 2012 +0100

----------------------------------------------------------------------
 CHANGES.txt                                        |    1 +
 .../apache/cassandra/cql/AlterTableStatement.java  |   31 +++++++++------
 .../cql3/statements/AlterTableStatement.java       |    2 +
 3 files changed, 22 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/7108f3ed/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 9768867..390526b 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -66,6 +66,7 @@
  * respect not only row cache capacity but caching mode when
    trying to read data (CASSANDRA-3812)
  * fix system tests (CASSANDRA-3827)
+ * CQL support for altering key_validation_class in ALTER TABLE 
(CASSANDRA-3781)
 
 
 1.0.8

http://git-wip-us.apache.org/repos/asf/cassandra/blob/7108f3ed/src/java/org/apache/cassandra/cql/AlterTableStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql/AlterTableStatement.java 
b/src/java/org/apache/cassandra/cql/AlterTableStatement.java
index 73112e7..5ca92bb 100644
--- a/src/java/org/apache/cassandra/cql/AlterTableStatement.java
+++ b/src/java/org/apache/cassandra/cql/AlterTableStatement.java
@@ -92,23 +92,30 @@ public class AlterTableStatement
                 break;
 
             case ALTER:
-                ColumnDef toUpdate = null;
-
-                for (ColumnDef columnDef : cfDef.column_metadata)
+                if (cfDef.key_alias != null && 
cfDef.key_alias.equals(columnName))
                 {
-                    if (columnDef.name.equals(columnName))
+                    
cfDef.setKey_validation_class(TypeParser.parse(validator).toString());
+                }
+                else
+                {
+                    ColumnDef toUpdate = null;
+
+                    for (ColumnDef columnDef : cfDef.column_metadata)
                     {
-                        toUpdate = columnDef;
-                        break;
+                        if (columnDef.name.equals(columnName))
+                        {
+                            toUpdate = columnDef;
+                            break;
+                        }
                     }
-                }
 
-                if (toUpdate == null)
-                    throw new InvalidRequestException(String.format("Column 
'%s' was not found in CF '%s'",
-                                                                    
this.columnName,
-                                                                    
columnFamily));
+                    if (toUpdate == null)
+                        throw new 
InvalidRequestException(String.format("Column '%s' was not found in CF '%s'",
+                                    this.columnName,
+                                    columnFamily));
 
-                
toUpdate.setValidation_class(TypeParser.parse(validator).toString());
+                    
toUpdate.setValidation_class(TypeParser.parse(validator).toString());
+                }
                 break;
 
             case DROP:

http://git-wip-us.apache.org/repos/asf/cassandra/blob/7108f3ed/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java
index 8a1ab42..4114773 100644
--- a/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java
@@ -90,6 +90,8 @@ public class AlterTableStatement extends 
SchemaAlteringStatement
                     switch (name.kind)
                     {
                         case KEY_ALIAS:
+                            thriftDef.key_validation_class = 
CFPropDefs.parseType(validator).toString();
+                            break;
                         case COLUMN_ALIAS:
                             throw new 
InvalidRequestException(String.format("Cannot alter PRIMARY KEY part %s", 
columnName));
                         case VALUE_ALIAS:

Reply via email to