You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by vi...@apache.org on 2013/06/17 00:58:35 UTC

[1/3] patch by Vijay; reviewed by Aleksey Yeschenko for CASSANDRA-5576

Updated Branches:
  refs/heads/trunk ed4d45565 -> 8bf6e1559


http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/src/java/org/apache/cassandra/cql3/statements/CreateTriggerStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/CreateTriggerStatement.java b/src/java/org/apache/cassandra/cql3/statements/CreateTriggerStatement.java
new file mode 100644
index 0000000..4c6e78a
--- /dev/null
+++ b/src/java/org/apache/cassandra/cql3/statements/CreateTriggerStatement.java
@@ -0,0 +1,66 @@
+package org.apache.cassandra.cql3.statements;
+
+import org.apache.cassandra.auth.Permission;
+import org.apache.cassandra.config.CFMetaData;
+import org.apache.cassandra.config.Schema;
+import org.apache.cassandra.config.TriggerOptions;
+import org.apache.cassandra.cql3.CFName;
+import org.apache.cassandra.exceptions.ConfigurationException;
+import org.apache.cassandra.exceptions.ExceptionCode;
+import org.apache.cassandra.exceptions.InvalidRequestException;
+import org.apache.cassandra.exceptions.RequestValidationException;
+import org.apache.cassandra.exceptions.UnauthorizedException;
+import org.apache.cassandra.service.ClientState;
+import org.apache.cassandra.service.MigrationManager;
+import org.apache.cassandra.thrift.ThriftValidation;
+import org.apache.cassandra.transport.messages.ResultMessage;
+import org.apache.cassandra.triggers.TriggerExecutor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class CreateTriggerStatement extends SchemaAlteringStatement
+{
+    private static final Logger logger = LoggerFactory.getLogger(CreateTriggerStatement.class);
+
+    private final String triggerName;
+    private final String clazz;
+
+    public CreateTriggerStatement(CFName name, String triggerName, String clazz)
+    {
+        super(name);
+        this.triggerName = triggerName;
+        this.clazz = clazz;
+    }
+
+    public void checkAccess(ClientState state) throws UnauthorizedException, InvalidRequestException
+    {
+        state.hasColumnFamilyAccess(keyspace(), columnFamily(), Permission.ALTER);
+    }
+
+    @Override
+    public void validate(ClientState state) throws RequestValidationException
+    {
+        ThriftValidation.validateColumnFamily(keyspace(), columnFamily());
+        try
+        {
+            TriggerExecutor.instance.loadTriggerInstance(clazz);
+        }
+        catch (Exception ex)
+        {
+            throw new RequestValidationException(ExceptionCode.INVALID, "Trigger class: " + clazz + ", doesnt exist.", ex) {};
+        }
+    }
+
+    public void announceMigration() throws InvalidRequestException, ConfigurationException
+    {
+        CFMetaData cfm = Schema.instance.getCFMetaData(keyspace(), columnFamily()).clone();
+        TriggerOptions.update(cfm, triggerName, clazz);
+        logger.info("Adding triggers with name {} and classes {}", triggerName, clazz);
+        MigrationManager.announceColumnFamilyUpdate(cfm, false);
+    }
+
+    public ResultMessage.SchemaChange.Change changeType()
+    {
+        return ResultMessage.SchemaChange.Change.UPDATED;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/src/java/org/apache/cassandra/cql3/statements/DropTriggerStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/DropTriggerStatement.java b/src/java/org/apache/cassandra/cql3/statements/DropTriggerStatement.java
new file mode 100644
index 0000000..36da2f0
--- /dev/null
+++ b/src/java/org/apache/cassandra/cql3/statements/DropTriggerStatement.java
@@ -0,0 +1,59 @@
+package org.apache.cassandra.cql3.statements;
+
+import org.apache.cassandra.auth.Permission;
+import org.apache.cassandra.config.CFMetaData;
+import org.apache.cassandra.config.Schema;
+import org.apache.cassandra.config.TriggerOptions;
+import org.apache.cassandra.cql3.CFName;
+import org.apache.cassandra.exceptions.ConfigurationException;
+import org.apache.cassandra.exceptions.ExceptionCode;
+import org.apache.cassandra.exceptions.InvalidRequestException;
+import org.apache.cassandra.exceptions.RequestValidationException;
+import org.apache.cassandra.exceptions.UnauthorizedException;
+import org.apache.cassandra.service.ClientState;
+import org.apache.cassandra.service.MigrationManager;
+import org.apache.cassandra.thrift.ThriftValidation;
+import org.apache.cassandra.transport.messages.ResultMessage;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DropTriggerStatement extends SchemaAlteringStatement
+{
+    private static final Logger logger = LoggerFactory.getLogger(DropTriggerStatement.class);
+    private final String triggerName;
+
+    public DropTriggerStatement(CFName name, String triggerName)
+    {
+        super(name);
+        this.triggerName = triggerName;
+    }
+
+    public void checkAccess(ClientState state) throws UnauthorizedException, InvalidRequestException
+    {
+        state.hasColumnFamilyAccess(keyspace(), columnFamily(), Permission.ALTER);
+    }
+
+    @Override
+    public void validate(ClientState state) throws RequestValidationException
+    {
+        ThriftValidation.validateColumnFamily(keyspace(), columnFamily());
+        CFMetaData cfm = Schema.instance.getCFMetaData(keyspace(), columnFamily());
+        if (cfm.getTriggerClasses() == null)
+            throw new RequestValidationException(ExceptionCode.CONFIG_ERROR, "No triggers found") {};
+        if (!TriggerOptions.hasTrigger(cfm, triggerName))
+            throw new RequestValidationException(ExceptionCode.CONFIG_ERROR, "trigger: " + triggerName + ", not found") {};
+    }
+
+    public void announceMigration() throws InvalidRequestException, ConfigurationException
+    {
+        CFMetaData cfm = Schema.instance.getCFMetaData(keyspace(), columnFamily()).clone();
+        TriggerOptions.remove(cfm, triggerName);
+        logger.info("Dropping trigger with name {}", triggerName);
+        MigrationManager.announceColumnFamilyUpdate(cfm, false);
+    }
+
+    public ResultMessage.SchemaChange.Change changeType()
+    {
+        return ResultMessage.SchemaChange.Change.UPDATED;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/src/java/org/apache/cassandra/db/SystemTable.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/SystemTable.java b/src/java/org/apache/cassandra/db/SystemTable.java
index 12c976d..e62b258 100644
--- a/src/java/org/apache/cassandra/db/SystemTable.java
+++ b/src/java/org/apache/cassandra/db/SystemTable.java
@@ -73,6 +73,7 @@ public class SystemTable
     public static final String SCHEMA_KEYSPACES_CF = "schema_keyspaces";
     public static final String SCHEMA_COLUMNFAMILIES_CF = "schema_columnfamilies";
     public static final String SCHEMA_COLUMNS_CF = "schema_columns";
+    public static final String SCHEMA_TRIGGERS_CF = "schema_triggers";
     public static final String COMPACTION_LOG = "compactions_in_progress";
     public static final String PAXOS_CF = "paxos";
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/src/java/org/apache/cassandra/triggers/TriggerExecutor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/triggers/TriggerExecutor.java b/src/java/org/apache/cassandra/triggers/TriggerExecutor.java
index a49792f..6a77295 100644
--- a/src/java/org/apache/cassandra/triggers/TriggerExecutor.java
+++ b/src/java/org/apache/cassandra/triggers/TriggerExecutor.java
@@ -27,7 +27,6 @@ import java.nio.ByteBuffer;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import org.apache.cassandra.cql.QueryProcessor;
 import org.apache.cassandra.db.ColumnFamily;
@@ -107,7 +106,7 @@ public class TriggerExecutor
      */
     private List<RowMutation> execute(ByteBuffer key, ColumnFamily columnFamily)
     {
-        Set<String> triggerNames = columnFamily.metadata().getTriggerClass();
+        Collection<String> triggerNames = columnFamily.metadata().getTriggerClasses();
         if (triggerNames == null)
             return null;
         List<RowMutation> tmutations = Lists.newLinkedList();
@@ -138,7 +137,7 @@ public class TriggerExecutor
         }
     }
 
-    private synchronized ITrigger loadTriggerInstance(String triggerName) throws Exception
+    public synchronized ITrigger loadTriggerInstance(String triggerName) throws Exception
     {
         // double check.
         if (cachedTriggers.get(triggerName) != null)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/src/resources/org/apache/cassandra/cli/CliHelp.yaml
----------------------------------------------------------------------
diff --git a/src/resources/org/apache/cassandra/cli/CliHelp.yaml b/src/resources/org/apache/cassandra/cli/CliHelp.yaml
index d5ee151..3d4bd99 100644
--- a/src/resources/org/apache/cassandra/cli/CliHelp.yaml
+++ b/src/resources/org/apache/cassandra/cli/CliHelp.yaml
@@ -650,9 +650,6 @@ commands:
         - bloom_filter_fp_chance: Desired false positive probability for
           sstable row bloom filters.  Default is 0.000744.
 
-        - trigger_class: Trigger class / set of Trigger classes implementing ITrigger
-          Tigger class is invoked for every insert/update statement.
-
         - column_type: Type of columns this column family holds, valid values are
           Standard and Super. Default is Standard.
 


[3/3] git commit: patch by Vijay; reviewed by Aleksey Yeschenko for CASSANDRA-5576

Posted by vi...@apache.org.
patch by Vijay; reviewed by Aleksey Yeschenko for CASSANDRA-5576

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

Branch: refs/heads/trunk
Commit: 8bf6e1559effc21bd9fb67b0d0eaf97bb8003316
Parents: ed4d455
Author: Vijay Parthasarathy <vi...@gmail.com>
Authored: Sun Jun 16 15:56:56 2013 -0700
Committer: Vijay Parthasarathy <vi...@gmail.com>
Committed: Sun Jun 16 15:56:56 2013 -0700

----------------------------------------------------------------------
 interface/cassandra.thrift                      |   2 +-
 .../org/apache/cassandra/thrift/Cassandra.java  | 952 +++++++++----------
 .../org/apache/cassandra/thrift/CfDef.java      | 316 +++---
 .../apache/cassandra/thrift/CqlMetadata.java    |  88 +-
 .../cassandra/thrift/CqlPreparedResult.java     |  64 +-
 .../org/apache/cassandra/thrift/CqlResult.java  |  36 +-
 .../org/apache/cassandra/thrift/CqlRow.java     |  36 +-
 .../org/apache/cassandra/thrift/KsDef.java      |  80 +-
 .../org/apache/cassandra/cli/CliClient.java     |  14 -
 .../org/apache/cassandra/config/CFMetaData.java |  64 +-
 .../org/apache/cassandra/config/KSMetaData.java |   2 +
 .../apache/cassandra/config/TriggerOptions.java |  93 ++
 .../cassandra/cql/AlterTableStatement.java      |   1 -
 .../cql/CreateColumnFamilyStatement.java        |   3 +-
 .../org/apache/cassandra/cql3/CFPropDefs.java   |   2 -
 src/java/org/apache/cassandra/cql3/Cql.g        |  21 +
 .../cassandra/cql3/PropertyDefinitions.java     |  10 -
 .../cql3/statements/CreateTriggerStatement.java |  66 ++
 .../cql3/statements/DropTriggerStatement.java   |  59 ++
 .../org/apache/cassandra/db/SystemTable.java    |   1 +
 .../cassandra/triggers/TriggerExecutor.java     |   5 +-
 .../org/apache/cassandra/cli/CliHelp.yaml       |   3 -
 22 files changed, 1105 insertions(+), 813 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/interface/cassandra.thrift
----------------------------------------------------------------------
diff --git a/interface/cassandra.thrift b/interface/cassandra.thrift
index cfdaf88..2f50349 100644
--- a/interface/cassandra.thrift
+++ b/interface/cassandra.thrift
@@ -455,7 +455,7 @@ struct CfDef {
     40: optional i32 default_time_to_live,
     41: optional i32 index_interval,
     42: optional string speculative_retry="NONE",
-    43: optional set<string> trigger_class,
+    43: optional map<string, map<string, string>> triggers,
 
     /* All of the following are now ignored and unsupplied. */
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
----------------------------------------------------------------------
diff --git a/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java b/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
index a2761ca..27e01be 100644
--- a/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
+++ b/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
@@ -8690,14 +8690,14 @@ public class Cassandra {
             case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list198 = iprot.readListBegin();
-                  struct.success = new ArrayList<ColumnOrSuperColumn>(_list198.size);
-                  for (int _i199 = 0; _i199 < _list198.size; ++_i199)
+                  org.apache.thrift.protocol.TList _list210 = iprot.readListBegin();
+                  struct.success = new ArrayList<ColumnOrSuperColumn>(_list210.size);
+                  for (int _i211 = 0; _i211 < _list210.size; ++_i211)
                   {
-                    ColumnOrSuperColumn _elem200; // optional
-                    _elem200 = new ColumnOrSuperColumn();
-                    _elem200.read(iprot);
-                    struct.success.add(_elem200);
+                    ColumnOrSuperColumn _elem212; // optional
+                    _elem212 = new ColumnOrSuperColumn();
+                    _elem212.read(iprot);
+                    struct.success.add(_elem212);
                   }
                   iprot.readListEnd();
                 }
@@ -8752,9 +8752,9 @@ public class Cassandra {
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-            for (ColumnOrSuperColumn _iter201 : struct.success)
+            for (ColumnOrSuperColumn _iter213 : struct.success)
             {
-              _iter201.write(oprot);
+              _iter213.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -8809,9 +8809,9 @@ public class Cassandra {
         if (struct.isSetSuccess()) {
           {
             oprot.writeI32(struct.success.size());
-            for (ColumnOrSuperColumn _iter202 : struct.success)
+            for (ColumnOrSuperColumn _iter214 : struct.success)
             {
-              _iter202.write(oprot);
+              _iter214.write(oprot);
             }
           }
         }
@@ -8832,14 +8832,14 @@ public class Cassandra {
         BitSet incoming = iprot.readBitSet(4);
         if (incoming.get(0)) {
           {
-            org.apache.thrift.protocol.TList _list203 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-            struct.success = new ArrayList<ColumnOrSuperColumn>(_list203.size);
-            for (int _i204 = 0; _i204 < _list203.size; ++_i204)
+            org.apache.thrift.protocol.TList _list215 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+            struct.success = new ArrayList<ColumnOrSuperColumn>(_list215.size);
+            for (int _i216 = 0; _i216 < _list215.size; ++_i216)
             {
-              ColumnOrSuperColumn _elem205; // optional
-              _elem205 = new ColumnOrSuperColumn();
-              _elem205.read(iprot);
-              struct.success.add(_elem205);
+              ColumnOrSuperColumn _elem217; // optional
+              _elem217 = new ColumnOrSuperColumn();
+              _elem217.read(iprot);
+              struct.success.add(_elem217);
             }
           }
           struct.setSuccessIsSet(true);
@@ -10844,13 +10844,13 @@ public class Cassandra {
             case 1: // KEYS
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list206 = iprot.readListBegin();
-                  struct.keys = new ArrayList<ByteBuffer>(_list206.size);
-                  for (int _i207 = 0; _i207 < _list206.size; ++_i207)
+                  org.apache.thrift.protocol.TList _list218 = iprot.readListBegin();
+                  struct.keys = new ArrayList<ByteBuffer>(_list218.size);
+                  for (int _i219 = 0; _i219 < _list218.size; ++_i219)
                   {
-                    ByteBuffer _elem208; // optional
-                    _elem208 = iprot.readBinary();
-                    struct.keys.add(_elem208);
+                    ByteBuffer _elem220; // optional
+                    _elem220 = iprot.readBinary();
+                    struct.keys.add(_elem220);
                   }
                   iprot.readListEnd();
                 }
@@ -10904,9 +10904,9 @@ public class Cassandra {
           oprot.writeFieldBegin(KEYS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.keys.size()));
-            for (ByteBuffer _iter209 : struct.keys)
+            for (ByteBuffer _iter221 : struct.keys)
             {
-              oprot.writeBinary(_iter209);
+              oprot.writeBinary(_iter221);
             }
             oprot.writeListEnd();
           }
@@ -10946,9 +10946,9 @@ public class Cassandra {
         TTupleProtocol oprot = (TTupleProtocol) prot;
         {
           oprot.writeI32(struct.keys.size());
-          for (ByteBuffer _iter210 : struct.keys)
+          for (ByteBuffer _iter222 : struct.keys)
           {
-            oprot.writeBinary(_iter210);
+            oprot.writeBinary(_iter222);
           }
         }
         struct.column_parent.write(oprot);
@@ -10960,13 +10960,13 @@ public class Cassandra {
       public void read(org.apache.thrift.protocol.TProtocol prot, multiget_slice_args struct) throws org.apache.thrift.TException {
         TTupleProtocol iprot = (TTupleProtocol) prot;
         {
-          org.apache.thrift.protocol.TList _list211 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.keys = new ArrayList<ByteBuffer>(_list211.size);
-          for (int _i212 = 0; _i212 < _list211.size; ++_i212)
+          org.apache.thrift.protocol.TList _list223 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.keys = new ArrayList<ByteBuffer>(_list223.size);
+          for (int _i224 = 0; _i224 < _list223.size; ++_i224)
           {
-            ByteBuffer _elem213; // optional
-            _elem213 = iprot.readBinary();
-            struct.keys.add(_elem213);
+            ByteBuffer _elem225; // optional
+            _elem225 = iprot.readBinary();
+            struct.keys.add(_elem225);
           }
         }
         struct.setKeysIsSet(true);
@@ -11555,26 +11555,26 @@ public class Cassandra {
             case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                 {
-                  org.apache.thrift.protocol.TMap _map214 = iprot.readMapBegin();
-                  struct.success = new HashMap<ByteBuffer,List<ColumnOrSuperColumn>>(2*_map214.size);
-                  for (int _i215 = 0; _i215 < _map214.size; ++_i215)
+                  org.apache.thrift.protocol.TMap _map226 = iprot.readMapBegin();
+                  struct.success = new HashMap<ByteBuffer,List<ColumnOrSuperColumn>>(2*_map226.size);
+                  for (int _i227 = 0; _i227 < _map226.size; ++_i227)
                   {
-                    ByteBuffer _key216; // required
-                    List<ColumnOrSuperColumn> _val217; // required
-                    _key216 = iprot.readBinary();
+                    ByteBuffer _key228; // required
+                    List<ColumnOrSuperColumn> _val229; // required
+                    _key228 = iprot.readBinary();
                     {
-                      org.apache.thrift.protocol.TList _list218 = iprot.readListBegin();
-                      _val217 = new ArrayList<ColumnOrSuperColumn>(_list218.size);
-                      for (int _i219 = 0; _i219 < _list218.size; ++_i219)
+                      org.apache.thrift.protocol.TList _list230 = iprot.readListBegin();
+                      _val229 = new ArrayList<ColumnOrSuperColumn>(_list230.size);
+                      for (int _i231 = 0; _i231 < _list230.size; ++_i231)
                       {
-                        ColumnOrSuperColumn _elem220; // optional
-                        _elem220 = new ColumnOrSuperColumn();
-                        _elem220.read(iprot);
-                        _val217.add(_elem220);
+                        ColumnOrSuperColumn _elem232; // optional
+                        _elem232 = new ColumnOrSuperColumn();
+                        _elem232.read(iprot);
+                        _val229.add(_elem232);
                       }
                       iprot.readListEnd();
                     }
-                    struct.success.put(_key216, _val217);
+                    struct.success.put(_key228, _val229);
                   }
                   iprot.readMapEnd();
                 }
@@ -11629,14 +11629,14 @@ public class Cassandra {
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.LIST, struct.success.size()));
-            for (Map.Entry<ByteBuffer, List<ColumnOrSuperColumn>> _iter221 : struct.success.entrySet())
+            for (Map.Entry<ByteBuffer, List<ColumnOrSuperColumn>> _iter233 : struct.success.entrySet())
             {
-              oprot.writeBinary(_iter221.getKey());
+              oprot.writeBinary(_iter233.getKey());
               {
-                oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, _iter221.getValue().size()));
-                for (ColumnOrSuperColumn _iter222 : _iter221.getValue())
+                oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, _iter233.getValue().size()));
+                for (ColumnOrSuperColumn _iter234 : _iter233.getValue())
                 {
-                  _iter222.write(oprot);
+                  _iter234.write(oprot);
                 }
                 oprot.writeListEnd();
               }
@@ -11694,14 +11694,14 @@ public class Cassandra {
         if (struct.isSetSuccess()) {
           {
             oprot.writeI32(struct.success.size());
-            for (Map.Entry<ByteBuffer, List<ColumnOrSuperColumn>> _iter223 : struct.success.entrySet())
+            for (Map.Entry<ByteBuffer, List<ColumnOrSuperColumn>> _iter235 : struct.success.entrySet())
             {
-              oprot.writeBinary(_iter223.getKey());
+              oprot.writeBinary(_iter235.getKey());
               {
-                oprot.writeI32(_iter223.getValue().size());
-                for (ColumnOrSuperColumn _iter224 : _iter223.getValue())
+                oprot.writeI32(_iter235.getValue().size());
+                for (ColumnOrSuperColumn _iter236 : _iter235.getValue())
                 {
-                  _iter224.write(oprot);
+                  _iter236.write(oprot);
                 }
               }
             }
@@ -11724,25 +11724,25 @@ public class Cassandra {
         BitSet incoming = iprot.readBitSet(4);
         if (incoming.get(0)) {
           {
-            org.apache.thrift.protocol.TMap _map225 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.LIST, iprot.readI32());
-            struct.success = new HashMap<ByteBuffer,List<ColumnOrSuperColumn>>(2*_map225.size);
-            for (int _i226 = 0; _i226 < _map225.size; ++_i226)
+            org.apache.thrift.protocol.TMap _map237 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.LIST, iprot.readI32());
+            struct.success = new HashMap<ByteBuffer,List<ColumnOrSuperColumn>>(2*_map237.size);
+            for (int _i238 = 0; _i238 < _map237.size; ++_i238)
             {
-              ByteBuffer _key227; // required
-              List<ColumnOrSuperColumn> _val228; // required
-              _key227 = iprot.readBinary();
+              ByteBuffer _key239; // required
+              List<ColumnOrSuperColumn> _val240; // required
+              _key239 = iprot.readBinary();
               {
-                org.apache.thrift.protocol.TList _list229 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-                _val228 = new ArrayList<ColumnOrSuperColumn>(_list229.size);
-                for (int _i230 = 0; _i230 < _list229.size; ++_i230)
+                org.apache.thrift.protocol.TList _list241 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+                _val240 = new ArrayList<ColumnOrSuperColumn>(_list241.size);
+                for (int _i242 = 0; _i242 < _list241.size; ++_i242)
                 {
-                  ColumnOrSuperColumn _elem231; // optional
-                  _elem231 = new ColumnOrSuperColumn();
-                  _elem231.read(iprot);
-                  _val228.add(_elem231);
+                  ColumnOrSuperColumn _elem243; // optional
+                  _elem243 = new ColumnOrSuperColumn();
+                  _elem243.read(iprot);
+                  _val240.add(_elem243);
                 }
               }
-              struct.success.put(_key227, _val228);
+              struct.success.put(_key239, _val240);
             }
           }
           struct.setSuccessIsSet(true);
@@ -12368,13 +12368,13 @@ public class Cassandra {
             case 1: // KEYS
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list232 = iprot.readListBegin();
-                  struct.keys = new ArrayList<ByteBuffer>(_list232.size);
-                  for (int _i233 = 0; _i233 < _list232.size; ++_i233)
+                  org.apache.thrift.protocol.TList _list244 = iprot.readListBegin();
+                  struct.keys = new ArrayList<ByteBuffer>(_list244.size);
+                  for (int _i245 = 0; _i245 < _list244.size; ++_i245)
                   {
-                    ByteBuffer _elem234; // optional
-                    _elem234 = iprot.readBinary();
-                    struct.keys.add(_elem234);
+                    ByteBuffer _elem246; // optional
+                    _elem246 = iprot.readBinary();
+                    struct.keys.add(_elem246);
                   }
                   iprot.readListEnd();
                 }
@@ -12428,9 +12428,9 @@ public class Cassandra {
           oprot.writeFieldBegin(KEYS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.keys.size()));
-            for (ByteBuffer _iter235 : struct.keys)
+            for (ByteBuffer _iter247 : struct.keys)
             {
-              oprot.writeBinary(_iter235);
+              oprot.writeBinary(_iter247);
             }
             oprot.writeListEnd();
           }
@@ -12470,9 +12470,9 @@ public class Cassandra {
         TTupleProtocol oprot = (TTupleProtocol) prot;
         {
           oprot.writeI32(struct.keys.size());
-          for (ByteBuffer _iter236 : struct.keys)
+          for (ByteBuffer _iter248 : struct.keys)
           {
-            oprot.writeBinary(_iter236);
+            oprot.writeBinary(_iter248);
           }
         }
         struct.column_parent.write(oprot);
@@ -12484,13 +12484,13 @@ public class Cassandra {
       public void read(org.apache.thrift.protocol.TProtocol prot, multiget_count_args struct) throws org.apache.thrift.TException {
         TTupleProtocol iprot = (TTupleProtocol) prot;
         {
-          org.apache.thrift.protocol.TList _list237 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.keys = new ArrayList<ByteBuffer>(_list237.size);
-          for (int _i238 = 0; _i238 < _list237.size; ++_i238)
+          org.apache.thrift.protocol.TList _list249 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.keys = new ArrayList<ByteBuffer>(_list249.size);
+          for (int _i250 = 0; _i250 < _list249.size; ++_i250)
           {
-            ByteBuffer _elem239; // optional
-            _elem239 = iprot.readBinary();
-            struct.keys.add(_elem239);
+            ByteBuffer _elem251; // optional
+            _elem251 = iprot.readBinary();
+            struct.keys.add(_elem251);
           }
         }
         struct.setKeysIsSet(true);
@@ -13075,15 +13075,15 @@ public class Cassandra {
             case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                 {
-                  org.apache.thrift.protocol.TMap _map240 = iprot.readMapBegin();
-                  struct.success = new HashMap<ByteBuffer,Integer>(2*_map240.size);
-                  for (int _i241 = 0; _i241 < _map240.size; ++_i241)
+                  org.apache.thrift.protocol.TMap _map252 = iprot.readMapBegin();
+                  struct.success = new HashMap<ByteBuffer,Integer>(2*_map252.size);
+                  for (int _i253 = 0; _i253 < _map252.size; ++_i253)
                   {
-                    ByteBuffer _key242; // required
-                    int _val243; // required
-                    _key242 = iprot.readBinary();
-                    _val243 = iprot.readI32();
-                    struct.success.put(_key242, _val243);
+                    ByteBuffer _key254; // required
+                    int _val255; // required
+                    _key254 = iprot.readBinary();
+                    _val255 = iprot.readI32();
+                    struct.success.put(_key254, _val255);
                   }
                   iprot.readMapEnd();
                 }
@@ -13138,10 +13138,10 @@ public class Cassandra {
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.I32, struct.success.size()));
-            for (Map.Entry<ByteBuffer, Integer> _iter244 : struct.success.entrySet())
+            for (Map.Entry<ByteBuffer, Integer> _iter256 : struct.success.entrySet())
             {
-              oprot.writeBinary(_iter244.getKey());
-              oprot.writeI32(_iter244.getValue());
+              oprot.writeBinary(_iter256.getKey());
+              oprot.writeI32(_iter256.getValue());
             }
             oprot.writeMapEnd();
           }
@@ -13196,10 +13196,10 @@ public class Cassandra {
         if (struct.isSetSuccess()) {
           {
             oprot.writeI32(struct.success.size());
-            for (Map.Entry<ByteBuffer, Integer> _iter245 : struct.success.entrySet())
+            for (Map.Entry<ByteBuffer, Integer> _iter257 : struct.success.entrySet())
             {
-              oprot.writeBinary(_iter245.getKey());
-              oprot.writeI32(_iter245.getValue());
+              oprot.writeBinary(_iter257.getKey());
+              oprot.writeI32(_iter257.getValue());
             }
           }
         }
@@ -13220,15 +13220,15 @@ public class Cassandra {
         BitSet incoming = iprot.readBitSet(4);
         if (incoming.get(0)) {
           {
-            org.apache.thrift.protocol.TMap _map246 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.I32, iprot.readI32());
-            struct.success = new HashMap<ByteBuffer,Integer>(2*_map246.size);
-            for (int _i247 = 0; _i247 < _map246.size; ++_i247)
+            org.apache.thrift.protocol.TMap _map258 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.I32, iprot.readI32());
+            struct.success = new HashMap<ByteBuffer,Integer>(2*_map258.size);
+            for (int _i259 = 0; _i259 < _map258.size; ++_i259)
             {
-              ByteBuffer _key248; // required
-              int _val249; // required
-              _key248 = iprot.readBinary();
-              _val249 = iprot.readI32();
-              struct.success.put(_key248, _val249);
+              ByteBuffer _key260; // required
+              int _val261; // required
+              _key260 = iprot.readBinary();
+              _val261 = iprot.readI32();
+              struct.success.put(_key260, _val261);
             }
           }
           struct.setSuccessIsSet(true);
@@ -14506,14 +14506,14 @@ public class Cassandra {
             case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list250 = iprot.readListBegin();
-                  struct.success = new ArrayList<KeySlice>(_list250.size);
-                  for (int _i251 = 0; _i251 < _list250.size; ++_i251)
+                  org.apache.thrift.protocol.TList _list262 = iprot.readListBegin();
+                  struct.success = new ArrayList<KeySlice>(_list262.size);
+                  for (int _i263 = 0; _i263 < _list262.size; ++_i263)
                   {
-                    KeySlice _elem252; // optional
-                    _elem252 = new KeySlice();
-                    _elem252.read(iprot);
-                    struct.success.add(_elem252);
+                    KeySlice _elem264; // optional
+                    _elem264 = new KeySlice();
+                    _elem264.read(iprot);
+                    struct.success.add(_elem264);
                   }
                   iprot.readListEnd();
                 }
@@ -14568,9 +14568,9 @@ public class Cassandra {
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-            for (KeySlice _iter253 : struct.success)
+            for (KeySlice _iter265 : struct.success)
             {
-              _iter253.write(oprot);
+              _iter265.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -14625,9 +14625,9 @@ public class Cassandra {
         if (struct.isSetSuccess()) {
           {
             oprot.writeI32(struct.success.size());
-            for (KeySlice _iter254 : struct.success)
+            for (KeySlice _iter266 : struct.success)
             {
-              _iter254.write(oprot);
+              _iter266.write(oprot);
             }
           }
         }
@@ -14648,14 +14648,14 @@ public class Cassandra {
         BitSet incoming = iprot.readBitSet(4);
         if (incoming.get(0)) {
           {
-            org.apache.thrift.protocol.TList _list255 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-            struct.success = new ArrayList<KeySlice>(_list255.size);
-            for (int _i256 = 0; _i256 < _list255.size; ++_i256)
+            org.apache.thrift.protocol.TList _list267 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+            struct.success = new ArrayList<KeySlice>(_list267.size);
+            for (int _i268 = 0; _i268 < _list267.size; ++_i268)
             {
-              KeySlice _elem257; // optional
-              _elem257 = new KeySlice();
-              _elem257.read(iprot);
-              struct.success.add(_elem257);
+              KeySlice _elem269; // optional
+              _elem269 = new KeySlice();
+              _elem269.read(iprot);
+              struct.success.add(_elem269);
             }
           }
           struct.setSuccessIsSet(true);
@@ -15934,14 +15934,14 @@ public class Cassandra {
             case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list258 = iprot.readListBegin();
-                  struct.success = new ArrayList<KeySlice>(_list258.size);
-                  for (int _i259 = 0; _i259 < _list258.size; ++_i259)
+                  org.apache.thrift.protocol.TList _list270 = iprot.readListBegin();
+                  struct.success = new ArrayList<KeySlice>(_list270.size);
+                  for (int _i271 = 0; _i271 < _list270.size; ++_i271)
                   {
-                    KeySlice _elem260; // optional
-                    _elem260 = new KeySlice();
-                    _elem260.read(iprot);
-                    struct.success.add(_elem260);
+                    KeySlice _elem272; // optional
+                    _elem272 = new KeySlice();
+                    _elem272.read(iprot);
+                    struct.success.add(_elem272);
                   }
                   iprot.readListEnd();
                 }
@@ -15996,9 +15996,9 @@ public class Cassandra {
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-            for (KeySlice _iter261 : struct.success)
+            for (KeySlice _iter273 : struct.success)
             {
-              _iter261.write(oprot);
+              _iter273.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -16053,9 +16053,9 @@ public class Cassandra {
         if (struct.isSetSuccess()) {
           {
             oprot.writeI32(struct.success.size());
-            for (KeySlice _iter262 : struct.success)
+            for (KeySlice _iter274 : struct.success)
             {
-              _iter262.write(oprot);
+              _iter274.write(oprot);
             }
           }
         }
@@ -16076,14 +16076,14 @@ public class Cassandra {
         BitSet incoming = iprot.readBitSet(4);
         if (incoming.get(0)) {
           {
-            org.apache.thrift.protocol.TList _list263 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-            struct.success = new ArrayList<KeySlice>(_list263.size);
-            for (int _i264 = 0; _i264 < _list263.size; ++_i264)
+            org.apache.thrift.protocol.TList _list275 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+            struct.success = new ArrayList<KeySlice>(_list275.size);
+            for (int _i276 = 0; _i276 < _list275.size; ++_i276)
             {
-              KeySlice _elem265; // optional
-              _elem265 = new KeySlice();
-              _elem265.read(iprot);
-              struct.success.add(_elem265);
+              KeySlice _elem277; // optional
+              _elem277 = new KeySlice();
+              _elem277.read(iprot);
+              struct.success.add(_elem277);
             }
           }
           struct.setSuccessIsSet(true);
@@ -17361,14 +17361,14 @@ public class Cassandra {
             case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list266 = iprot.readListBegin();
-                  struct.success = new ArrayList<KeySlice>(_list266.size);
-                  for (int _i267 = 0; _i267 < _list266.size; ++_i267)
+                  org.apache.thrift.protocol.TList _list278 = iprot.readListBegin();
+                  struct.success = new ArrayList<KeySlice>(_list278.size);
+                  for (int _i279 = 0; _i279 < _list278.size; ++_i279)
                   {
-                    KeySlice _elem268; // optional
-                    _elem268 = new KeySlice();
-                    _elem268.read(iprot);
-                    struct.success.add(_elem268);
+                    KeySlice _elem280; // optional
+                    _elem280 = new KeySlice();
+                    _elem280.read(iprot);
+                    struct.success.add(_elem280);
                   }
                   iprot.readListEnd();
                 }
@@ -17423,9 +17423,9 @@ public class Cassandra {
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-            for (KeySlice _iter269 : struct.success)
+            for (KeySlice _iter281 : struct.success)
             {
-              _iter269.write(oprot);
+              _iter281.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -17480,9 +17480,9 @@ public class Cassandra {
         if (struct.isSetSuccess()) {
           {
             oprot.writeI32(struct.success.size());
-            for (KeySlice _iter270 : struct.success)
+            for (KeySlice _iter282 : struct.success)
             {
-              _iter270.write(oprot);
+              _iter282.write(oprot);
             }
           }
         }
@@ -17503,14 +17503,14 @@ public class Cassandra {
         BitSet incoming = iprot.readBitSet(4);
         if (incoming.get(0)) {
           {
-            org.apache.thrift.protocol.TList _list271 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-            struct.success = new ArrayList<KeySlice>(_list271.size);
-            for (int _i272 = 0; _i272 < _list271.size; ++_i272)
+            org.apache.thrift.protocol.TList _list283 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+            struct.success = new ArrayList<KeySlice>(_list283.size);
+            for (int _i284 = 0; _i284 < _list283.size; ++_i284)
             {
-              KeySlice _elem273; // optional
-              _elem273 = new KeySlice();
-              _elem273.read(iprot);
-              struct.success.add(_elem273);
+              KeySlice _elem285; // optional
+              _elem285 = new KeySlice();
+              _elem285.read(iprot);
+              struct.success.add(_elem285);
             }
           }
           struct.setSuccessIsSet(true);
@@ -20802,14 +20802,14 @@ public class Cassandra {
             case 3: // EXPECTED
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list274 = iprot.readListBegin();
-                  struct.expected = new ArrayList<Column>(_list274.size);
-                  for (int _i275 = 0; _i275 < _list274.size; ++_i275)
+                  org.apache.thrift.protocol.TList _list286 = iprot.readListBegin();
+                  struct.expected = new ArrayList<Column>(_list286.size);
+                  for (int _i287 = 0; _i287 < _list286.size; ++_i287)
                   {
-                    Column _elem276; // optional
-                    _elem276 = new Column();
-                    _elem276.read(iprot);
-                    struct.expected.add(_elem276);
+                    Column _elem288; // optional
+                    _elem288 = new Column();
+                    _elem288.read(iprot);
+                    struct.expected.add(_elem288);
                   }
                   iprot.readListEnd();
                 }
@@ -20821,14 +20821,14 @@ public class Cassandra {
             case 4: // UPDATES
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list277 = iprot.readListBegin();
-                  struct.updates = new ArrayList<Column>(_list277.size);
-                  for (int _i278 = 0; _i278 < _list277.size; ++_i278)
+                  org.apache.thrift.protocol.TList _list289 = iprot.readListBegin();
+                  struct.updates = new ArrayList<Column>(_list289.size);
+                  for (int _i290 = 0; _i290 < _list289.size; ++_i290)
                   {
-                    Column _elem279; // optional
-                    _elem279 = new Column();
-                    _elem279.read(iprot);
-                    struct.updates.add(_elem279);
+                    Column _elem291; // optional
+                    _elem291 = new Column();
+                    _elem291.read(iprot);
+                    struct.updates.add(_elem291);
                   }
                   iprot.readListEnd();
                 }
@@ -20874,9 +20874,9 @@ public class Cassandra {
           oprot.writeFieldBegin(EXPECTED_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.expected.size()));
-            for (Column _iter280 : struct.expected)
+            for (Column _iter292 : struct.expected)
             {
-              _iter280.write(oprot);
+              _iter292.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -20886,9 +20886,9 @@ public class Cassandra {
           oprot.writeFieldBegin(UPDATES_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.updates.size()));
-            for (Column _iter281 : struct.updates)
+            for (Column _iter293 : struct.updates)
             {
-              _iter281.write(oprot);
+              _iter293.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -20930,18 +20930,18 @@ public class Cassandra {
         if (struct.isSetExpected()) {
           {
             oprot.writeI32(struct.expected.size());
-            for (Column _iter282 : struct.expected)
+            for (Column _iter294 : struct.expected)
             {
-              _iter282.write(oprot);
+              _iter294.write(oprot);
             }
           }
         }
         if (struct.isSetUpdates()) {
           {
             oprot.writeI32(struct.updates.size());
-            for (Column _iter283 : struct.updates)
+            for (Column _iter295 : struct.updates)
             {
-              _iter283.write(oprot);
+              _iter295.write(oprot);
             }
           }
         }
@@ -20959,28 +20959,28 @@ public class Cassandra {
         BitSet incoming = iprot.readBitSet(2);
         if (incoming.get(0)) {
           {
-            org.apache.thrift.protocol.TList _list284 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-            struct.expected = new ArrayList<Column>(_list284.size);
-            for (int _i285 = 0; _i285 < _list284.size; ++_i285)
+            org.apache.thrift.protocol.TList _list296 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+            struct.expected = new ArrayList<Column>(_list296.size);
+            for (int _i297 = 0; _i297 < _list296.size; ++_i297)
             {
-              Column _elem286; // optional
-              _elem286 = new Column();
-              _elem286.read(iprot);
-              struct.expected.add(_elem286);
+              Column _elem298; // optional
+              _elem298 = new Column();
+              _elem298.read(iprot);
+              struct.expected.add(_elem298);
             }
           }
           struct.setExpectedIsSet(true);
         }
         if (incoming.get(1)) {
           {
-            org.apache.thrift.protocol.TList _list287 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-            struct.updates = new ArrayList<Column>(_list287.size);
-            for (int _i288 = 0; _i288 < _list287.size; ++_i288)
+            org.apache.thrift.protocol.TList _list299 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+            struct.updates = new ArrayList<Column>(_list299.size);
+            for (int _i300 = 0; _i300 < _list299.size; ++_i300)
             {
-              Column _elem289; // optional
-              _elem289 = new Column();
-              _elem289.read(iprot);
-              struct.updates.add(_elem289);
+              Column _elem301; // optional
+              _elem301 = new Column();
+              _elem301.read(iprot);
+              struct.updates.add(_elem301);
             }
           }
           struct.setUpdatesIsSet(true);
@@ -24561,38 +24561,38 @@ public class Cassandra {
             case 1: // MUTATION_MAP
               if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                 {
-                  org.apache.thrift.protocol.TMap _map290 = iprot.readMapBegin();
-                  struct.mutation_map = new HashMap<ByteBuffer,Map<String,List<Mutation>>>(2*_map290.size);
-                  for (int _i291 = 0; _i291 < _map290.size; ++_i291)
+                  org.apache.thrift.protocol.TMap _map302 = iprot.readMapBegin();
+                  struct.mutation_map = new HashMap<ByteBuffer,Map<String,List<Mutation>>>(2*_map302.size);
+                  for (int _i303 = 0; _i303 < _map302.size; ++_i303)
                   {
-                    ByteBuffer _key292; // required
-                    Map<String,List<Mutation>> _val293; // required
-                    _key292 = iprot.readBinary();
+                    ByteBuffer _key304; // required
+                    Map<String,List<Mutation>> _val305; // required
+                    _key304 = iprot.readBinary();
                     {
-                      org.apache.thrift.protocol.TMap _map294 = iprot.readMapBegin();
-                      _val293 = new HashMap<String,List<Mutation>>(2*_map294.size);
-                      for (int _i295 = 0; _i295 < _map294.size; ++_i295)
+                      org.apache.thrift.protocol.TMap _map306 = iprot.readMapBegin();
+                      _val305 = new HashMap<String,List<Mutation>>(2*_map306.size);
+                      for (int _i307 = 0; _i307 < _map306.size; ++_i307)
                       {
-                        String _key296; // required
-                        List<Mutation> _val297; // required
-                        _key296 = iprot.readString();
+                        String _key308; // required
+                        List<Mutation> _val309; // required
+                        _key308 = iprot.readString();
                         {
-                          org.apache.thrift.protocol.TList _list298 = iprot.readListBegin();
-                          _val297 = new ArrayList<Mutation>(_list298.size);
-                          for (int _i299 = 0; _i299 < _list298.size; ++_i299)
+                          org.apache.thrift.protocol.TList _list310 = iprot.readListBegin();
+                          _val309 = new ArrayList<Mutation>(_list310.size);
+                          for (int _i311 = 0; _i311 < _list310.size; ++_i311)
                           {
-                            Mutation _elem300; // optional
-                            _elem300 = new Mutation();
-                            _elem300.read(iprot);
-                            _val297.add(_elem300);
+                            Mutation _elem312; // optional
+                            _elem312 = new Mutation();
+                            _elem312.read(iprot);
+                            _val309.add(_elem312);
                           }
                           iprot.readListEnd();
                         }
-                        _val293.put(_key296, _val297);
+                        _val305.put(_key308, _val309);
                       }
                       iprot.readMapEnd();
                     }
-                    struct.mutation_map.put(_key292, _val293);
+                    struct.mutation_map.put(_key304, _val305);
                   }
                   iprot.readMapEnd();
                 }
@@ -24628,19 +24628,19 @@ public class Cassandra {
           oprot.writeFieldBegin(MUTATION_MAP_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, struct.mutation_map.size()));
-            for (Map.Entry<ByteBuffer, Map<String,List<Mutation>>> _iter301 : struct.mutation_map.entrySet())
+            for (Map.Entry<ByteBuffer, Map<String,List<Mutation>>> _iter313 : struct.mutation_map.entrySet())
             {
-              oprot.writeBinary(_iter301.getKey());
+              oprot.writeBinary(_iter313.getKey());
               {
-                oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.LIST, _iter301.getValue().size()));
-                for (Map.Entry<String, List<Mutation>> _iter302 : _iter301.getValue().entrySet())
+                oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.LIST, _iter313.getValue().size()));
+                for (Map.Entry<String, List<Mutation>> _iter314 : _iter313.getValue().entrySet())
                 {
-                  oprot.writeString(_iter302.getKey());
+                  oprot.writeString(_iter314.getKey());
                   {
-                    oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, _iter302.getValue().size()));
-                    for (Mutation _iter303 : _iter302.getValue())
+                    oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, _iter314.getValue().size()));
+                    for (Mutation _iter315 : _iter314.getValue())
                     {
-                      _iter303.write(oprot);
+                      _iter315.write(oprot);
                     }
                     oprot.writeListEnd();
                   }
@@ -24676,19 +24676,19 @@ public class Cassandra {
         TTupleProtocol oprot = (TTupleProtocol) prot;
         {
           oprot.writeI32(struct.mutation_map.size());
-          for (Map.Entry<ByteBuffer, Map<String,List<Mutation>>> _iter304 : struct.mutation_map.entrySet())
+          for (Map.Entry<ByteBuffer, Map<String,List<Mutation>>> _iter316 : struct.mutation_map.entrySet())
           {
-            oprot.writeBinary(_iter304.getKey());
+            oprot.writeBinary(_iter316.getKey());
             {
-              oprot.writeI32(_iter304.getValue().size());
-              for (Map.Entry<String, List<Mutation>> _iter305 : _iter304.getValue().entrySet())
+              oprot.writeI32(_iter316.getValue().size());
+              for (Map.Entry<String, List<Mutation>> _iter317 : _iter316.getValue().entrySet())
               {
-                oprot.writeString(_iter305.getKey());
+                oprot.writeString(_iter317.getKey());
                 {
-                  oprot.writeI32(_iter305.getValue().size());
-                  for (Mutation _iter306 : _iter305.getValue())
+                  oprot.writeI32(_iter317.getValue().size());
+                  for (Mutation _iter318 : _iter317.getValue())
                   {
-                    _iter306.write(oprot);
+                    _iter318.write(oprot);
                   }
                 }
               }
@@ -24702,36 +24702,36 @@ public class Cassandra {
       public void read(org.apache.thrift.protocol.TProtocol prot, batch_mutate_args struct) throws org.apache.thrift.TException {
         TTupleProtocol iprot = (TTupleProtocol) prot;
         {
-          org.apache.thrift.protocol.TMap _map307 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, iprot.readI32());
-          struct.mutation_map = new HashMap<ByteBuffer,Map<String,List<Mutation>>>(2*_map307.size);
-          for (int _i308 = 0; _i308 < _map307.size; ++_i308)
+          org.apache.thrift.protocol.TMap _map319 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, iprot.readI32());
+          struct.mutation_map = new HashMap<ByteBuffer,Map<String,List<Mutation>>>(2*_map319.size);
+          for (int _i320 = 0; _i320 < _map319.size; ++_i320)
           {
-            ByteBuffer _key309; // required
-            Map<String,List<Mutation>> _val310; // required
-            _key309 = iprot.readBinary();
+            ByteBuffer _key321; // required
+            Map<String,List<Mutation>> _val322; // required
+            _key321 = iprot.readBinary();
             {
-              org.apache.thrift.protocol.TMap _map311 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.LIST, iprot.readI32());
-              _val310 = new HashMap<String,List<Mutation>>(2*_map311.size);
-              for (int _i312 = 0; _i312 < _map311.size; ++_i312)
+              org.apache.thrift.protocol.TMap _map323 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.LIST, iprot.readI32());
+              _val322 = new HashMap<String,List<Mutation>>(2*_map323.size);
+              for (int _i324 = 0; _i324 < _map323.size; ++_i324)
               {
-                String _key313; // required
-                List<Mutation> _val314; // required
-                _key313 = iprot.readString();
+                String _key325; // required
+                List<Mutation> _val326; // required
+                _key325 = iprot.readString();
                 {
-                  org.apache.thrift.protocol.TList _list315 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-                  _val314 = new ArrayList<Mutation>(_list315.size);
-                  for (int _i316 = 0; _i316 < _list315.size; ++_i316)
+                  org.apache.thrift.protocol.TList _list327 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+                  _val326 = new ArrayList<Mutation>(_list327.size);
+                  for (int _i328 = 0; _i328 < _list327.size; ++_i328)
                   {
-                    Mutation _elem317; // optional
-                    _elem317 = new Mutation();
-                    _elem317.read(iprot);
-                    _val314.add(_elem317);
+                    Mutation _elem329; // optional
+                    _elem329 = new Mutation();
+                    _elem329.read(iprot);
+                    _val326.add(_elem329);
                   }
                 }
-                _val310.put(_key313, _val314);
+                _val322.put(_key325, _val326);
               }
             }
-            struct.mutation_map.put(_key309, _val310);
+            struct.mutation_map.put(_key321, _val322);
           }
         }
         struct.setMutation_mapIsSet(true);
@@ -25765,38 +25765,38 @@ public class Cassandra {
             case 1: // MUTATION_MAP
               if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                 {
-                  org.apache.thrift.protocol.TMap _map318 = iprot.readMapBegin();
-                  struct.mutation_map = new HashMap<ByteBuffer,Map<String,List<Mutation>>>(2*_map318.size);
-                  for (int _i319 = 0; _i319 < _map318.size; ++_i319)
+                  org.apache.thrift.protocol.TMap _map330 = iprot.readMapBegin();
+                  struct.mutation_map = new HashMap<ByteBuffer,Map<String,List<Mutation>>>(2*_map330.size);
+                  for (int _i331 = 0; _i331 < _map330.size; ++_i331)
                   {
-                    ByteBuffer _key320; // required
-                    Map<String,List<Mutation>> _val321; // required
-                    _key320 = iprot.readBinary();
+                    ByteBuffer _key332; // required
+                    Map<String,List<Mutation>> _val333; // required
+                    _key332 = iprot.readBinary();
                     {
-                      org.apache.thrift.protocol.TMap _map322 = iprot.readMapBegin();
-                      _val321 = new HashMap<String,List<Mutation>>(2*_map322.size);
-                      for (int _i323 = 0; _i323 < _map322.size; ++_i323)
+                      org.apache.thrift.protocol.TMap _map334 = iprot.readMapBegin();
+                      _val333 = new HashMap<String,List<Mutation>>(2*_map334.size);
+                      for (int _i335 = 0; _i335 < _map334.size; ++_i335)
                       {
-                        String _key324; // required
-                        List<Mutation> _val325; // required
-                        _key324 = iprot.readString();
+                        String _key336; // required
+                        List<Mutation> _val337; // required
+                        _key336 = iprot.readString();
                         {
-                          org.apache.thrift.protocol.TList _list326 = iprot.readListBegin();
-                          _val325 = new ArrayList<Mutation>(_list326.size);
-                          for (int _i327 = 0; _i327 < _list326.size; ++_i327)
+                          org.apache.thrift.protocol.TList _list338 = iprot.readListBegin();
+                          _val337 = new ArrayList<Mutation>(_list338.size);
+                          for (int _i339 = 0; _i339 < _list338.size; ++_i339)
                           {
-                            Mutation _elem328; // optional
-                            _elem328 = new Mutation();
-                            _elem328.read(iprot);
-                            _val325.add(_elem328);
+                            Mutation _elem340; // optional
+                            _elem340 = new Mutation();
+                            _elem340.read(iprot);
+                            _val337.add(_elem340);
                           }
                           iprot.readListEnd();
                         }
-                        _val321.put(_key324, _val325);
+                        _val333.put(_key336, _val337);
                       }
                       iprot.readMapEnd();
                     }
-                    struct.mutation_map.put(_key320, _val321);
+                    struct.mutation_map.put(_key332, _val333);
                   }
                   iprot.readMapEnd();
                 }
@@ -25832,19 +25832,19 @@ public class Cassandra {
           oprot.writeFieldBegin(MUTATION_MAP_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, struct.mutation_map.size()));
-            for (Map.Entry<ByteBuffer, Map<String,List<Mutation>>> _iter329 : struct.mutation_map.entrySet())
+            for (Map.Entry<ByteBuffer, Map<String,List<Mutation>>> _iter341 : struct.mutation_map.entrySet())
             {
-              oprot.writeBinary(_iter329.getKey());
+              oprot.writeBinary(_iter341.getKey());
               {
-                oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.LIST, _iter329.getValue().size()));
-                for (Map.Entry<String, List<Mutation>> _iter330 : _iter329.getValue().entrySet())
+                oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.LIST, _iter341.getValue().size()));
+                for (Map.Entry<String, List<Mutation>> _iter342 : _iter341.getValue().entrySet())
                 {
-                  oprot.writeString(_iter330.getKey());
+                  oprot.writeString(_iter342.getKey());
                   {
-                    oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, _iter330.getValue().size()));
-                    for (Mutation _iter331 : _iter330.getValue())
+                    oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, _iter342.getValue().size()));
+                    for (Mutation _iter343 : _iter342.getValue())
                     {
-                      _iter331.write(oprot);
+                      _iter343.write(oprot);
                     }
                     oprot.writeListEnd();
                   }
@@ -25880,19 +25880,19 @@ public class Cassandra {
         TTupleProtocol oprot = (TTupleProtocol) prot;
         {
           oprot.writeI32(struct.mutation_map.size());
-          for (Map.Entry<ByteBuffer, Map<String,List<Mutation>>> _iter332 : struct.mutation_map.entrySet())
+          for (Map.Entry<ByteBuffer, Map<String,List<Mutation>>> _iter344 : struct.mutation_map.entrySet())
           {
-            oprot.writeBinary(_iter332.getKey());
+            oprot.writeBinary(_iter344.getKey());
             {
-              oprot.writeI32(_iter332.getValue().size());
-              for (Map.Entry<String, List<Mutation>> _iter333 : _iter332.getValue().entrySet())
+              oprot.writeI32(_iter344.getValue().size());
+              for (Map.Entry<String, List<Mutation>> _iter345 : _iter344.getValue().entrySet())
               {
-                oprot.writeString(_iter333.getKey());
+                oprot.writeString(_iter345.getKey());
                 {
-                  oprot.writeI32(_iter333.getValue().size());
-                  for (Mutation _iter334 : _iter333.getValue())
+                  oprot.writeI32(_iter345.getValue().size());
+                  for (Mutation _iter346 : _iter345.getValue())
                   {
-                    _iter334.write(oprot);
+                    _iter346.write(oprot);
                   }
                 }
               }
@@ -25906,36 +25906,36 @@ public class Cassandra {
       public void read(org.apache.thrift.protocol.TProtocol prot, atomic_batch_mutate_args struct) throws org.apache.thrift.TException {
         TTupleProtocol iprot = (TTupleProtocol) prot;
         {
-          org.apache.thrift.protocol.TMap _map335 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, iprot.readI32());
-          struct.mutation_map = new HashMap<ByteBuffer,Map<String,List<Mutation>>>(2*_map335.size);
-          for (int _i336 = 0; _i336 < _map335.size; ++_i336)
+          org.apache.thrift.protocol.TMap _map347 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, iprot.readI32());
+          struct.mutation_map = new HashMap<ByteBuffer,Map<String,List<Mutation>>>(2*_map347.size);
+          for (int _i348 = 0; _i348 < _map347.size; ++_i348)
           {
-            ByteBuffer _key337; // required
-            Map<String,List<Mutation>> _val338; // required
-            _key337 = iprot.readBinary();
+            ByteBuffer _key349; // required
+            Map<String,List<Mutation>> _val350; // required
+            _key349 = iprot.readBinary();
             {
-              org.apache.thrift.protocol.TMap _map339 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.LIST, iprot.readI32());
-              _val338 = new HashMap<String,List<Mutation>>(2*_map339.size);
-              for (int _i340 = 0; _i340 < _map339.size; ++_i340)
+              org.apache.thrift.protocol.TMap _map351 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.LIST, iprot.readI32());
+              _val350 = new HashMap<String,List<Mutation>>(2*_map351.size);
+              for (int _i352 = 0; _i352 < _map351.size; ++_i352)
               {
-                String _key341; // required
-                List<Mutation> _val342; // required
-                _key341 = iprot.readString();
+                String _key353; // required
+                List<Mutation> _val354; // required
+                _key353 = iprot.readString();
                 {
-                  org.apache.thrift.protocol.TList _list343 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-                  _val342 = new ArrayList<Mutation>(_list343.size);
-                  for (int _i344 = 0; _i344 < _list343.size; ++_i344)
+                  org.apache.thrift.protocol.TList _list355 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+                  _val354 = new ArrayList<Mutation>(_list355.size);
+                  for (int _i356 = 0; _i356 < _list355.size; ++_i356)
                   {
-                    Mutation _elem345; // optional
-                    _elem345 = new Mutation();
-                    _elem345.read(iprot);
-                    _val342.add(_elem345);
+                    Mutation _elem357; // optional
+                    _elem357 = new Mutation();
+                    _elem357.read(iprot);
+                    _val354.add(_elem357);
                   }
                 }
-                _val338.put(_key341, _val342);
+                _val350.put(_key353, _val354);
               }
             }
-            struct.mutation_map.put(_key337, _val338);
+            struct.mutation_map.put(_key349, _val350);
           }
         }
         struct.setMutation_mapIsSet(true);
@@ -28109,25 +28109,25 @@ public class Cassandra {
             case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                 {
-                  org.apache.thrift.protocol.TMap _map346 = iprot.readMapBegin();
-                  struct.success = new HashMap<String,List<String>>(2*_map346.size);
-                  for (int _i347 = 0; _i347 < _map346.size; ++_i347)
+                  org.apache.thrift.protocol.TMap _map358 = iprot.readMapBegin();
+                  struct.success = new HashMap<String,List<String>>(2*_map358.size);
+                  for (int _i359 = 0; _i359 < _map358.size; ++_i359)
                   {
-                    String _key348; // required
-                    List<String> _val349; // required
-                    _key348 = iprot.readString();
+                    String _key360; // required
+                    List<String> _val361; // required
+                    _key360 = iprot.readString();
                     {
-                      org.apache.thrift.protocol.TList _list350 = iprot.readListBegin();
-                      _val349 = new ArrayList<String>(_list350.size);
-                      for (int _i351 = 0; _i351 < _list350.size; ++_i351)
+                      org.apache.thrift.protocol.TList _list362 = iprot.readListBegin();
+                      _val361 = new ArrayList<String>(_list362.size);
+                      for (int _i363 = 0; _i363 < _list362.size; ++_i363)
                       {
-                        String _elem352; // optional
-                        _elem352 = iprot.readString();
-                        _val349.add(_elem352);
+                        String _elem364; // optional
+                        _elem364 = iprot.readString();
+                        _val361.add(_elem364);
                       }
                       iprot.readListEnd();
                     }
-                    struct.success.put(_key348, _val349);
+                    struct.success.put(_key360, _val361);
                   }
                   iprot.readMapEnd();
                 }
@@ -28164,14 +28164,14 @@ public class Cassandra {
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.LIST, struct.success.size()));
-            for (Map.Entry<String, List<String>> _iter353 : struct.success.entrySet())
+            for (Map.Entry<String, List<String>> _iter365 : struct.success.entrySet())
             {
-              oprot.writeString(_iter353.getKey());
+              oprot.writeString(_iter365.getKey());
               {
-                oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, _iter353.getValue().size()));
-                for (String _iter354 : _iter353.getValue())
+                oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, _iter365.getValue().size()));
+                for (String _iter366 : _iter365.getValue())
                 {
-                  oprot.writeString(_iter354);
+                  oprot.writeString(_iter366);
                 }
                 oprot.writeListEnd();
               }
@@ -28213,14 +28213,14 @@ public class Cassandra {
         if (struct.isSetSuccess()) {
           {
             oprot.writeI32(struct.success.size());
-            for (Map.Entry<String, List<String>> _iter355 : struct.success.entrySet())
+            for (Map.Entry<String, List<String>> _iter367 : struct.success.entrySet())
             {
-              oprot.writeString(_iter355.getKey());
+              oprot.writeString(_iter367.getKey());
               {
-                oprot.writeI32(_iter355.getValue().size());
-                for (String _iter356 : _iter355.getValue())
+                oprot.writeI32(_iter367.getValue().size());
+                for (String _iter368 : _iter367.getValue())
                 {
-                  oprot.writeString(_iter356);
+                  oprot.writeString(_iter368);
                 }
               }
             }
@@ -28237,24 +28237,24 @@ public class Cassandra {
         BitSet incoming = iprot.readBitSet(2);
         if (incoming.get(0)) {
           {
-            org.apache.thrift.protocol.TMap _map357 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.LIST, iprot.readI32());
-            struct.success = new HashMap<String,List<String>>(2*_map357.size);
-            for (int _i358 = 0; _i358 < _map357.size; ++_i358)
+            org.apache.thrift.protocol.TMap _map369 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.LIST, iprot.readI32());
+            struct.success = new HashMap<String,List<String>>(2*_map369.size);
+            for (int _i370 = 0; _i370 < _map369.size; ++_i370)
             {
-              String _key359; // required
-              List<String> _val360; // required
-              _key359 = iprot.readString();
+              String _key371; // required
+              List<String> _val372; // required
+              _key371 = iprot.readString();
               {
-                org.apache.thrift.protocol.TList _list361 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-                _val360 = new ArrayList<String>(_list361.size);
-                for (int _i362 = 0; _i362 < _list361.size; ++_i362)
+                org.apache.thrift.protocol.TList _list373 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+                _val372 = new ArrayList<String>(_list373.size);
+                for (int _i374 = 0; _i374 < _list373.size; ++_i374)
                 {
-                  String _elem363; // optional
-                  _elem363 = iprot.readString();
-                  _val360.add(_elem363);
+                  String _elem375; // optional
+                  _elem375 = iprot.readString();
+                  _val372.add(_elem375);
                 }
               }
-              struct.success.put(_key359, _val360);
+              struct.success.put(_key371, _val372);
             }
           }
           struct.setSuccessIsSet(true);
@@ -28915,14 +28915,14 @@ public class Cassandra {
             case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list364 = iprot.readListBegin();
-                  struct.success = new ArrayList<KsDef>(_list364.size);
-                  for (int _i365 = 0; _i365 < _list364.size; ++_i365)
+                  org.apache.thrift.protocol.TList _list376 = iprot.readListBegin();
+                  struct.success = new ArrayList<KsDef>(_list376.size);
+                  for (int _i377 = 0; _i377 < _list376.size; ++_i377)
                   {
-                    KsDef _elem366; // optional
-                    _elem366 = new KsDef();
-                    _elem366.read(iprot);
-                    struct.success.add(_elem366);
+                    KsDef _elem378; // optional
+                    _elem378 = new KsDef();
+                    _elem378.read(iprot);
+                    struct.success.add(_elem378);
                   }
                   iprot.readListEnd();
                 }
@@ -28959,9 +28959,9 @@ public class Cassandra {
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-            for (KsDef _iter367 : struct.success)
+            for (KsDef _iter379 : struct.success)
             {
-              _iter367.write(oprot);
+              _iter379.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -29000,9 +29000,9 @@ public class Cassandra {
         if (struct.isSetSuccess()) {
           {
             oprot.writeI32(struct.success.size());
-            for (KsDef _iter368 : struct.success)
+            for (KsDef _iter380 : struct.success)
             {
-              _iter368.write(oprot);
+              _iter380.write(oprot);
             }
           }
         }
@@ -29017,14 +29017,14 @@ public class Cassandra {
         BitSet incoming = iprot.readBitSet(2);
         if (incoming.get(0)) {
           {
-            org.apache.thrift.protocol.TList _list369 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-            struct.success = new ArrayList<KsDef>(_list369.size);
-            for (int _i370 = 0; _i370 < _list369.size; ++_i370)
+            org.apache.thrift.protocol.TList _list381 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+            struct.success = new ArrayList<KsDef>(_list381.size);
+            for (int _i382 = 0; _i382 < _list381.size; ++_i382)
             {
-              KsDef _elem371; // optional
-              _elem371 = new KsDef();
-              _elem371.read(iprot);
-              struct.success.add(_elem371);
+              KsDef _elem383; // optional
+              _elem383 = new KsDef();
+              _elem383.read(iprot);
+              struct.success.add(_elem383);
             }
           }
           struct.setSuccessIsSet(true);
@@ -31009,14 +31009,14 @@ public class Cassandra {
             case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list372 = iprot.readListBegin();
-                  struct.success = new ArrayList<TokenRange>(_list372.size);
-                  for (int _i373 = 0; _i373 < _list372.size; ++_i373)
+                  org.apache.thrift.protocol.TList _list384 = iprot.readListBegin();
+                  struct.success = new ArrayList<TokenRange>(_list384.size);
+                  for (int _i385 = 0; _i385 < _list384.size; ++_i385)
                   {
-                    TokenRange _elem374; // optional
-                    _elem374 = new TokenRange();
-                    _elem374.read(iprot);
-                    struct.success.add(_elem374);
+                    TokenRange _elem386; // optional
+                    _elem386 = new TokenRange();
+                    _elem386.read(iprot);
+                    struct.success.add(_elem386);
                   }
                   iprot.readListEnd();
                 }
@@ -31053,9 +31053,9 @@ public class Cassandra {
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-            for (TokenRange _iter375 : struct.success)
+            for (TokenRange _iter387 : struct.success)
             {
-              _iter375.write(oprot);
+              _iter387.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -31094,9 +31094,9 @@ public class Cassandra {
         if (struct.isSetSuccess()) {
           {
             oprot.writeI32(struct.success.size());
-            for (TokenRange _iter376 : struct.success)
+            for (TokenRange _iter388 : struct.success)
             {
-              _iter376.write(oprot);
+              _iter388.write(oprot);
             }
           }
         }
@@ -31111,14 +31111,14 @@ public class Cassandra {
         BitSet incoming = iprot.readBitSet(2);
         if (incoming.get(0)) {
           {
-            org.apache.thrift.protocol.TList _list377 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-            struct.success = new ArrayList<TokenRange>(_list377.size);
-            for (int _i378 = 0; _i378 < _list377.size; ++_i378)
+            org.apache.thrift.protocol.TList _list389 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+            struct.success = new ArrayList<TokenRange>(_list389.size);
+            for (int _i390 = 0; _i390 < _list389.size; ++_i390)
             {
-              TokenRange _elem379; // optional
-              _elem379 = new TokenRange();
-              _elem379.read(iprot);
-              struct.success.add(_elem379);
+              TokenRange _elem391; // optional
+              _elem391 = new TokenRange();
+              _elem391.read(iprot);
+              struct.success.add(_elem391);
             }
           }
           struct.setSuccessIsSet(true);
@@ -31784,15 +31784,15 @@ public class Cassandra {
             case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                 {
-                  org.apache.thrift.protocol.TMap _map380 = iprot.readMapBegin();
-                  struct.success = new HashMap<String,String>(2*_map380.size);
-                  for (int _i381 = 0; _i381 < _map380.size; ++_i381)
+                  org.apache.thrift.protocol.TMap _map392 = iprot.readMapBegin();
+                  struct.success = new HashMap<String,String>(2*_map392.size);
+                  for (int _i393 = 0; _i393 < _map392.size; ++_i393)
                   {
-                    String _key382; // required
-                    String _val383; // required
-                    _key382 = iprot.readString();
-                    _val383 = iprot.readString();
-                    struct.success.put(_key382, _val383);
+                    String _key394; // required
+                    String _val395; // required
+                    _key394 = iprot.readString();
+                    _val395 = iprot.readString();
+                    struct.success.put(_key394, _val395);
                   }
                   iprot.readMapEnd();
                 }
@@ -31829,10 +31829,10 @@ public class Cassandra {
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.success.size()));
-            for (Map.Entry<String, String> _iter384 : struct.success.entrySet())
+            for (Map.Entry<String, String> _iter396 : struct.success.entrySet())
             {
-              oprot.writeString(_iter384.getKey());
-              oprot.writeString(_iter384.getValue());
+              oprot.writeString(_iter396.getKey());
+              oprot.writeString(_iter396.getValue());
             }
             oprot.writeMapEnd();
           }
@@ -31871,10 +31871,10 @@ public class Cassandra {
         if (struct.isSetSuccess()) {
           {
             oprot.writeI32(struct.success.size());
-            for (Map.Entry<String, String> _iter385 : struct.success.entrySet())
+            for (Map.Entry<String, String> _iter397 : struct.success.entrySet())
             {
-              oprot.writeString(_iter385.getKey());
-              oprot.writeString(_iter385.getValue());
+              oprot.writeString(_iter397.getKey());
+              oprot.writeString(_iter397.getValue());
             }
           }
         }
@@ -31889,15 +31889,15 @@ public class Cassandra {
         BitSet incoming = iprot.readBitSet(2);
         if (incoming.get(0)) {
           {
-            org.apache.thrift.protocol.TMap _map386 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-            struct.success = new HashMap<String,String>(2*_map386.size);
-            for (int _i387 = 0; _i387 < _map386.size; ++_i387)
+            org.apache.thrift.protocol.TMap _map398 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+            struct.success = new HashMap<String,String>(2*_map398.size);
+            for (int _i399 = 0; _i399 < _map398.size; ++_i399)
             {
-              String _key388; // required
-              String _val389; // required
-              _key388 = iprot.readString();
-              _val389 = iprot.readString();
-              struct.success.put(_key388, _val389);
+              String _key400; // required
+              String _val401; // required
+              _key400 = iprot.readString();
+              _val401 = iprot.readString();
+              struct.success.put(_key400, _val401);
             }
           }
           struct.setSuccessIsSet(true);
@@ -35118,13 +35118,13 @@ public class Cassandra {
             case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list390 = iprot.readListBegin();
-                  struct.success = new ArrayList<String>(_list390.size);
-                  for (int _i391 = 0; _i391 < _list390.size; ++_i391)
+                  org.apache.thrift.protocol.TList _list402 = iprot.readListBegin();
+                  struct.success = new ArrayList<String>(_list402.size);
+                  for (int _i403 = 0; _i403 < _list402.size; ++_i403)
                   {
-                    String _elem392; // optional
-                    _elem392 = iprot.readString();
-                    struct.success.add(_elem392);
+                    String _elem404; // optional
+                    _elem404 = iprot.readString();
+                    struct.success.add(_elem404);
                   }
                   iprot.readListEnd();
                 }
@@ -35161,9 +35161,9 @@ public class Cassandra {
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.success.size()));
-            for (String _iter393 : struct.success)
+            for (String _iter405 : struct.success)
             {
-              oprot.writeString(_iter393);
+              oprot.writeString(_iter405);
             }
             oprot.writeListEnd();
           }
@@ -35202,9 +35202,9 @@ public class Cassandra {
         if (struct.isSetSuccess()) {
           {
             oprot.writeI32(struct.success.size());
-            for (String _iter394 : struct.success)
+            for (String _iter406 : struct.success)
             {
-              oprot.writeString(_iter394);
+              oprot.writeString(_iter406);
             }
           }
         }
@@ -35219,13 +35219,13 @@ public class Cassandra {
         BitSet incoming = iprot.readBitSet(2);
         if (incoming.get(0)) {
           {
-            org.apache.thrift.protocol.TList _list395 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-            struct.success = new ArrayList<String>(_list395.size);
-            for (int _i396 = 0; _i396 < _list395.size; ++_i396)
+            org.apache.thrift.protocol.TList _list407 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+            struct.success = new ArrayList<String>(_list407.size);
+            for (int _i408 = 0; _i408 < _list407.size; ++_i408)
             {
-              String _elem397; // optional
-              _elem397 = iprot.readString();
-              struct.success.add(_elem397);
+              String _elem409; // optional
+              _elem409 = iprot.readString();
+              struct.success.add(_elem409);
             }
           }
           struct.setSuccessIsSet(true);
@@ -36914,14 +36914,14 @@ public class Cassandra {
             case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list398 = iprot.readListBegin();
-                  struct.success = new ArrayList<CfSplit>(_list398.size);
-                  for (int _i399 = 0; _i399 < _list398.size; ++_i399)
+                  org.apache.thrift.protocol.TList _list410 = iprot.readListBegin();
+                  struct.success = new ArrayList<CfSplit>(_list410.size);
+                  for (int _i411 = 0; _i411 < _list410.size; ++_i411)
                   {
-                    CfSplit _elem400; // optional
-                    _elem400 = new CfSplit();
-                    _elem400.read(iprot);
-                    struct.success.add(_elem400);
+                    CfSplit _elem412; // optional
+                    _elem412 = new CfSplit();
+                    _elem412.read(iprot);
+                    struct.success.add(_elem412);
                   }
                   iprot.readListEnd();
                 }
@@ -36958,9 +36958,9 @@ public class Cassandra {
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.success.size()));
-            for (CfSplit _iter401 : struct.success)
+            for (CfSplit _iter413 : struct.success)
             {
-              _iter401.write(oprot);
+              _iter413.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -36999,9 +36999,9 @@ public class Cassandra {
         if (struct.isSetSuccess()) {
           {
             oprot.writeI32(struct.success.size());
-            for (CfSplit _iter402 : struct.success)
+            for (CfSplit _iter414 : struct.success)
             {
-              _iter402.write(oprot);
+              _iter414.write(oprot);
             }
           }
         }
@@ -37016,14 +37016,14 @@ public class Cassandra {
         BitSet incoming = iprot.readBitSet(2);
         if (incoming.get(0)) {
           {
-            org.apache.thrift.protocol.TList _list403 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-            struct.success = new ArrayList<CfSplit>(_list403.size);
-            for (int _i404 = 0; _i404 < _list403.size; ++_i404)
+            org.apache.thrift.protocol.TList _list415 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+            struct.success = new ArrayList<CfSplit>(_list415.size);
+            for (int _i416 = 0; _i416 < _list415.size; ++_i416)
             {
-              CfSplit _elem405; // optional
-              _elem405 = new CfSplit();
-              _elem405.read(iprot);
-              struct.success.add(_elem405);
+              CfSplit _elem417; // optional
+              _elem417 = new CfSplit();
+              _elem417.read(iprot);
+              struct.success.add(_elem417);
             }
           }
           struct.setSuccessIsSet(true);
@@ -47623,13 +47623,13 @@ public class Cassandra {
             case 2: // VALUES
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list406 = iprot.readListBegin();
-                  struct.values = new ArrayList<ByteBuffer>(_list406.size);
-                  for (int _i407 = 0; _i407 < _list406.size; ++_i407)
+                  org.apache.thrift.protocol.TList _list418 = iprot.readListBegin();
+                  struct.values = new ArrayList<ByteBuffer>(_list418.size);
+                  for (int _i419 = 0; _i419 < _list418.size; ++_i419)
                   {
-                    ByteBuffer _elem408; // optional
-                    _elem408 = iprot.readBinary();
-                    struct.values.add(_elem408);
+                    ByteBuffer _elem420; // optional
+                    _elem420 = iprot.readBinary();
+                    struct.values.add(_elem420);
                   }
                   iprot.readListEnd();
                 }
@@ -47663,9 +47663,9 @@ public class Cassandra {
           oprot.writeFieldBegin(VALUES_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.values.size()));
-            for (ByteBuffer _iter409 : struct.values)
+            for (ByteBuffer _iter421 : struct.values)
             {
-              oprot.writeBinary(_iter409);
+              oprot.writeBinary(_iter421);
             }
             oprot.writeListEnd();
           }
@@ -47691,9 +47691,9 @@ public class Cassandra {
         oprot.writeI32(struct.itemId);
         {
           oprot.writeI32(struct.values.size());
-          for (ByteBuffer _iter410 : struct.values)
+          for (ByteBuffer _iter422 : struct.values)
           {
-            oprot.writeBinary(_iter410);
+            oprot.writeBinary(_iter422);
           }
         }
       }
@@ -47704,13 +47704,13 @@ public class Cassandra {
         struct.itemId = iprot.readI32();
         struct.setItemIdIsSet(true);
         {
-          org.apache.thrift.protocol.TList _list411 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.values = new ArrayList<ByteBuffer>(_list411.size);
-          for (int _i412 = 0; _i412 < _list411.size; ++_i412)
+          org.apache.thrift.protocol.TList _list423 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.values = new ArrayList<ByteBuffer>(_list423.size);
+          for (int _i424 = 0; _i424 < _list423.size; ++_i424)
           {
-            ByteBuffer _elem413; // optional
-            _elem413 = iprot.readBinary();
-            struct.values.add(_elem413);
+            ByteBuffer _elem425; // optional
+            _elem425 = iprot.readBinary();
+            struct.values.add(_elem425);
           }
         }
         struct.setValuesIsSet(true);
@@ -49026,13 +49026,13 @@ public class Cassandra {
             case 2: // VALUES
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list414 = iprot.readListBegin();
-                  struct.values = new ArrayList<ByteBuffer>(_list414.size);
-                  for (int _i415 = 0; _i415 < _list414.size; ++_i415)
+                  org.apache.thrift.protocol.TList _list426 = iprot.readListBegin();
+                  struct.values = new ArrayList<ByteBuffer>(_list426.size);
+                  for (int _i427 = 0; _i427 < _list426.size; ++_i427)
                   {
-                    ByteBuffer _elem416; // optional
-                    _elem416 = iprot.readBinary();
-                    struct.values.add(_elem416);
+                    ByteBuffer _elem428; // optional
+                    _elem428 = iprot.readBinary();
+                    struct.values.add(_elem428);
                   }
                   iprot.readListEnd();
                 }
@@ -49074,9 +49074,9 @@ public class Cassandra {
           oprot.writeFieldBegin(VALUES_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.values.size()));
-            for (ByteBuffer _iter417 : struct.values)
+            for (ByteBuffer _iter429 : struct.values)
             {
-              oprot.writeBinary(_iter417);
+              oprot.writeBinary(_iter429);
             }
             oprot.writeListEnd();
           }
@@ -49107,9 +49107,9 @@ public class Cassandra {
         oprot.writeI32(struct.itemId);
         {
           oprot.writeI32(struct.values.size());
-          for (ByteBuffer _iter418 : struct.values)
+          for (ByteBuffer _iter430 : struct.values)
           {
-            oprot.writeBinary(_iter418);
+            oprot.writeBinary(_iter430);
           }
         }
         oprot.writeI32(struct.consistency.getValue());
@@ -49121,13 +49121,13 @@ public class Cassandra {
         struct.itemId = iprot.readI32();
         struct.setItemIdIsSet(true);
         {
-          org.apache.thrift.protocol.TList _list419 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.values = new ArrayList<ByteBuffer>(_list419.size);
-          for (int _i420 = 0; _i420 < _list419.size; ++_i420)
+          org.apache.thrift.protocol.TList _list431 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.values = new ArrayList<ByteBuffer>(_list431.size);
+          for (int _i432 = 0; _i432 < _list431.size; ++_i432)
           {
-            ByteBuffer _elem421; // optional
-            _elem421 = iprot.readBinary();
-            struct.values.add(_elem421);
+            ByteBuffer _elem433; // optional
+            _elem433 = iprot.readBinary();
+            struct.values.add(_elem433);
           }
         }
         struct.setValuesIsSet(true);


[2/3] patch by Vijay; reviewed by Aleksey Yeschenko for CASSANDRA-5576

Posted by vi...@apache.org.
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/interface/thrift/gen-java/org/apache/cassandra/thrift/CfDef.java
----------------------------------------------------------------------
diff --git a/interface/thrift/gen-java/org/apache/cassandra/thrift/CfDef.java b/interface/thrift/gen-java/org/apache/cassandra/thrift/CfDef.java
index 2155b8e..8943afb 100644
--- a/interface/thrift/gen-java/org/apache/cassandra/thrift/CfDef.java
+++ b/interface/thrift/gen-java/org/apache/cassandra/thrift/CfDef.java
@@ -82,7 +82,7 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
   private static final org.apache.thrift.protocol.TField DEFAULT_TIME_TO_LIVE_FIELD_DESC = new org.apache.thrift.protocol.TField("default_time_to_live", org.apache.thrift.protocol.TType.I32, (short)40);
   private static final org.apache.thrift.protocol.TField INDEX_INTERVAL_FIELD_DESC = new org.apache.thrift.protocol.TField("index_interval", org.apache.thrift.protocol.TType.I32, (short)41);
   private static final org.apache.thrift.protocol.TField SPECULATIVE_RETRY_FIELD_DESC = new org.apache.thrift.protocol.TField("speculative_retry", org.apache.thrift.protocol.TType.STRING, (short)42);
-  private static final org.apache.thrift.protocol.TField TRIGGER_CLASS_FIELD_DESC = new org.apache.thrift.protocol.TField("trigger_class", org.apache.thrift.protocol.TType.SET, (short)43);
+  private static final org.apache.thrift.protocol.TField TRIGGERS_FIELD_DESC = new org.apache.thrift.protocol.TField("triggers", org.apache.thrift.protocol.TType.MAP, (short)43);
   private static final org.apache.thrift.protocol.TField ROW_CACHE_SIZE_FIELD_DESC = new org.apache.thrift.protocol.TField("row_cache_size", org.apache.thrift.protocol.TType.DOUBLE, (short)9);
   private static final org.apache.thrift.protocol.TField KEY_CACHE_SIZE_FIELD_DESC = new org.apache.thrift.protocol.TField("key_cache_size", org.apache.thrift.protocol.TType.DOUBLE, (short)11);
   private static final org.apache.thrift.protocol.TField ROW_CACHE_SAVE_PERIOD_IN_SECONDS_FIELD_DESC = new org.apache.thrift.protocol.TField("row_cache_save_period_in_seconds", org.apache.thrift.protocol.TType.I32, (short)19);
@@ -127,7 +127,7 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
   public int default_time_to_live; // optional
   public int index_interval; // optional
   public String speculative_retry; // optional
-  public Set<String> trigger_class; // optional
+  public Map<String,Map<String,String>> triggers; // optional
   /**
    * @deprecated
    */
@@ -198,7 +198,7 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
     DEFAULT_TIME_TO_LIVE((short)40, "default_time_to_live"),
     INDEX_INTERVAL((short)41, "index_interval"),
     SPECULATIVE_RETRY((short)42, "speculative_retry"),
-    TRIGGER_CLASS((short)43, "trigger_class"),
+    TRIGGERS((short)43, "triggers"),
     /**
      * @deprecated
      */
@@ -307,8 +307,8 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
           return INDEX_INTERVAL;
         case 42: // SPECULATIVE_RETRY
           return SPECULATIVE_RETRY;
-        case 43: // TRIGGER_CLASS
-          return TRIGGER_CLASS;
+        case 43: // TRIGGERS
+          return TRIGGERS;
         case 9: // ROW_CACHE_SIZE
           return ROW_CACHE_SIZE;
         case 11: // KEY_CACHE_SIZE
@@ -391,7 +391,7 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
   private static final int __MERGE_SHARDS_CHANCE_ISSET_ID = 19;
   private static final int __ROW_CACHE_KEYS_TO_SAVE_ISSET_ID = 20;
   private int __isset_bitfield = 0;
-  private _Fields optionals[] = {_Fields.COLUMN_TYPE,_Fields.COMPARATOR_TYPE,_Fields.SUBCOMPARATOR_TYPE,_Fields.COMMENT,_Fields.READ_REPAIR_CHANCE,_Fields.COLUMN_METADATA,_Fields.GC_GRACE_SECONDS,_Fields.DEFAULT_VALIDATION_CLASS,_Fields.ID,_Fields.MIN_COMPACTION_THRESHOLD,_Fields.MAX_COMPACTION_THRESHOLD,_Fields.REPLICATE_ON_WRITE,_Fields.KEY_VALIDATION_CLASS,_Fields.KEY_ALIAS,_Fields.COMPACTION_STRATEGY,_Fields.COMPACTION_STRATEGY_OPTIONS,_Fields.COMPRESSION_OPTIONS,_Fields.BLOOM_FILTER_FP_CHANCE,_Fields.CACHING,_Fields.DCLOCAL_READ_REPAIR_CHANCE,_Fields.POPULATE_IO_CACHE_ON_FLUSH,_Fields.MEMTABLE_FLUSH_PERIOD_IN_MS,_Fields.DEFAULT_TIME_TO_LIVE,_Fields.INDEX_INTERVAL,_Fields.SPECULATIVE_RETRY,_Fields.TRIGGER_CLASS,_Fields.ROW_CACHE_SIZE,_Fields.KEY_CACHE_SIZE,_Fields.ROW_CACHE_SAVE_PERIOD_IN_SECONDS,_Fields.KEY_CACHE_SAVE_PERIOD_IN_SECONDS,_Fields.MEMTABLE_FLUSH_AFTER_MINS,_Fields.MEMTABLE_THROUGHPUT_IN_MB,_Fields.MEMTABLE_OPERATIONS_IN_MILLIONS,_Fields.MERGE_SHARDS_CHANCE,_Fields.
 ROW_CACHE_PROVIDER,_Fields.ROW_CACHE_KEYS_TO_SAVE};
+  private _Fields optionals[] = {_Fields.COLUMN_TYPE,_Fields.COMPARATOR_TYPE,_Fields.SUBCOMPARATOR_TYPE,_Fields.COMMENT,_Fields.READ_REPAIR_CHANCE,_Fields.COLUMN_METADATA,_Fields.GC_GRACE_SECONDS,_Fields.DEFAULT_VALIDATION_CLASS,_Fields.ID,_Fields.MIN_COMPACTION_THRESHOLD,_Fields.MAX_COMPACTION_THRESHOLD,_Fields.REPLICATE_ON_WRITE,_Fields.KEY_VALIDATION_CLASS,_Fields.KEY_ALIAS,_Fields.COMPACTION_STRATEGY,_Fields.COMPACTION_STRATEGY_OPTIONS,_Fields.COMPRESSION_OPTIONS,_Fields.BLOOM_FILTER_FP_CHANCE,_Fields.CACHING,_Fields.DCLOCAL_READ_REPAIR_CHANCE,_Fields.POPULATE_IO_CACHE_ON_FLUSH,_Fields.MEMTABLE_FLUSH_PERIOD_IN_MS,_Fields.DEFAULT_TIME_TO_LIVE,_Fields.INDEX_INTERVAL,_Fields.SPECULATIVE_RETRY,_Fields.TRIGGERS,_Fields.ROW_CACHE_SIZE,_Fields.KEY_CACHE_SIZE,_Fields.ROW_CACHE_SAVE_PERIOD_IN_SECONDS,_Fields.KEY_CACHE_SAVE_PERIOD_IN_SECONDS,_Fields.MEMTABLE_FLUSH_AFTER_MINS,_Fields.MEMTABLE_THROUGHPUT_IN_MB,_Fields.MEMTABLE_OPERATIONS_IN_MILLIONS,_Fields.MERGE_SHARDS_CHANCE,_Fields.ROW_C
 ACHE_PROVIDER,_Fields.ROW_CACHE_KEYS_TO_SAVE};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -454,9 +454,12 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
     tmpMap.put(_Fields.SPECULATIVE_RETRY, new org.apache.thrift.meta_data.FieldMetaData("speculative_retry", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.TRIGGER_CLASS, new org.apache.thrift.meta_data.FieldMetaData("trigger_class", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.SetMetaData(org.apache.thrift.protocol.TType.SET, 
-            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
+    tmpMap.put(_Fields.TRIGGERS, new org.apache.thrift.meta_data.FieldMetaData("triggers", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
+            new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
+                new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
+                new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)))));
     tmpMap.put(_Fields.ROW_CACHE_SIZE, new org.apache.thrift.meta_data.FieldMetaData("row_cache_size", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE)));
     tmpMap.put(_Fields.KEY_CACHE_SIZE, new org.apache.thrift.meta_data.FieldMetaData("key_cache_size", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -594,12 +597,31 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
     if (other.isSetSpeculative_retry()) {
       this.speculative_retry = other.speculative_retry;
     }
-    if (other.isSetTrigger_class()) {
-      Set<String> __this__trigger_class = new HashSet<String>();
-      for (String other_element : other.trigger_class) {
-        __this__trigger_class.add(other_element);
+    if (other.isSetTriggers()) {
+      Map<String,Map<String,String>> __this__triggers = new HashMap<String,Map<String,String>>();
+      for (Map.Entry<String, Map<String,String>> other_element : other.triggers.entrySet()) {
+
+        String other_element_key = other_element.getKey();
+        Map<String,String> other_element_value = other_element.getValue();
+
+        String __this__triggers_copy_key = other_element_key;
+
+        Map<String,String> __this__triggers_copy_value = new HashMap<String,String>();
+        for (Map.Entry<String, String> other_element_value_element : other_element_value.entrySet()) {
+
+          String other_element_value_element_key = other_element_value_element.getKey();
+          String other_element_value_element_value = other_element_value_element.getValue();
+
+          String __this__triggers_copy_value_copy_key = other_element_value_element_key;
+
+          String __this__triggers_copy_value_copy_value = other_element_value_element_value;
+
+          __this__triggers_copy_value.put(__this__triggers_copy_value_copy_key, __this__triggers_copy_value_copy_value);
+        }
+
+        __this__triggers.put(__this__triggers_copy_key, __this__triggers_copy_value);
       }
-      this.trigger_class = __this__trigger_class;
+      this.triggers = __this__triggers;
     }
     this.row_cache_size = other.row_cache_size;
     this.key_cache_size = other.key_cache_size;
@@ -664,7 +686,7 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
     this.index_interval = 0;
     this.speculative_retry = "NONE";
 
-    this.trigger_class = null;
+    this.triggers = null;
     setRow_cache_sizeIsSet(false);
     this.row_cache_size = 0.0;
     setKey_cache_sizeIsSet(false);
@@ -1369,42 +1391,38 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
     }
   }
 
-  public int getTrigger_classSize() {
-    return (this.trigger_class == null) ? 0 : this.trigger_class.size();
-  }
-
-  public java.util.Iterator<String> getTrigger_classIterator() {
-    return (this.trigger_class == null) ? null : this.trigger_class.iterator();
+  public int getTriggersSize() {
+    return (this.triggers == null) ? 0 : this.triggers.size();
   }
 
-  public void addToTrigger_class(String elem) {
-    if (this.trigger_class == null) {
-      this.trigger_class = new HashSet<String>();
+  public void putToTriggers(String key, Map<String,String> val) {
+    if (this.triggers == null) {
+      this.triggers = new HashMap<String,Map<String,String>>();
     }
-    this.trigger_class.add(elem);
+    this.triggers.put(key, val);
   }
 
-  public Set<String> getTrigger_class() {
-    return this.trigger_class;
+  public Map<String,Map<String,String>> getTriggers() {
+    return this.triggers;
   }
 
-  public CfDef setTrigger_class(Set<String> trigger_class) {
-    this.trigger_class = trigger_class;
+  public CfDef setTriggers(Map<String,Map<String,String>> triggers) {
+    this.triggers = triggers;
     return this;
   }
 
-  public void unsetTrigger_class() {
-    this.trigger_class = null;
+  public void unsetTriggers() {
+    this.triggers = null;
   }
 
-  /** Returns true if field trigger_class is set (has been assigned a value) and false otherwise */
-  public boolean isSetTrigger_class() {
-    return this.trigger_class != null;
+  /** Returns true if field triggers is set (has been assigned a value) and false otherwise */
+  public boolean isSetTriggers() {
+    return this.triggers != null;
   }
 
-  public void setTrigger_classIsSet(boolean value) {
+  public void setTriggersIsSet(boolean value) {
     if (!value) {
-      this.trigger_class = null;
+      this.triggers = null;
     }
   }
 
@@ -1917,11 +1935,11 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
       }
       break;
 
-    case TRIGGER_CLASS:
+    case TRIGGERS:
       if (value == null) {
-        unsetTrigger_class();
+        unsetTriggers();
       } else {
-        setTrigger_class((Set<String>)value);
+        setTriggers((Map<String,Map<String,String>>)value);
       }
       break;
 
@@ -2091,8 +2109,8 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
     case SPECULATIVE_RETRY:
       return getSpeculative_retry();
 
-    case TRIGGER_CLASS:
-      return getTrigger_class();
+    case TRIGGERS:
+      return getTriggers();
 
     case ROW_CACHE_SIZE:
       return Double.valueOf(getRow_cache_size());
@@ -2189,8 +2207,8 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
       return isSetIndex_interval();
     case SPECULATIVE_RETRY:
       return isSetSpeculative_retry();
-    case TRIGGER_CLASS:
-      return isSetTrigger_class();
+    case TRIGGERS:
+      return isSetTriggers();
     case ROW_CACHE_SIZE:
       return isSetRow_cache_size();
     case KEY_CACHE_SIZE:
@@ -2471,12 +2489,12 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
         return false;
     }
 
-    boolean this_present_trigger_class = true && this.isSetTrigger_class();
-    boolean that_present_trigger_class = true && that.isSetTrigger_class();
-    if (this_present_trigger_class || that_present_trigger_class) {
-      if (!(this_present_trigger_class && that_present_trigger_class))
+    boolean this_present_triggers = true && this.isSetTriggers();
+    boolean that_present_triggers = true && that.isSetTriggers();
+    if (this_present_triggers || that_present_triggers) {
+      if (!(this_present_triggers && that_present_triggers))
         return false;
-      if (!this.trigger_class.equals(that.trigger_class))
+      if (!this.triggers.equals(that.triggers))
         return false;
     }
 
@@ -2712,10 +2730,10 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
     if (present_speculative_retry)
       builder.append(speculative_retry);
 
-    boolean present_trigger_class = true && (isSetTrigger_class());
-    builder.append(present_trigger_class);
-    if (present_trigger_class)
-      builder.append(trigger_class);
+    boolean present_triggers = true && (isSetTriggers());
+    builder.append(present_triggers);
+    if (present_triggers)
+      builder.append(triggers);
 
     boolean present_row_cache_size = true && (isSetRow_cache_size());
     builder.append(present_row_cache_size);
@@ -3048,12 +3066,12 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetTrigger_class()).compareTo(typedOther.isSetTrigger_class());
+    lastComparison = Boolean.valueOf(isSetTriggers()).compareTo(typedOther.isSetTriggers());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetTrigger_class()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.trigger_class, typedOther.trigger_class);
+    if (isSetTriggers()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.triggers, typedOther.triggers);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -3395,13 +3413,13 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
       }
       first = false;
     }
-    if (isSetTrigger_class()) {
+    if (isSetTriggers()) {
       if (!first) sb.append(", ");
-      sb.append("trigger_class:");
-      if (this.trigger_class == null) {
+      sb.append("triggers:");
+      if (this.triggers == null) {
         sb.append("null");
       } else {
-        sb.append(this.trigger_class);
+        sb.append(this.triggers);
       }
       first = false;
     }
@@ -3771,20 +3789,34 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 43: // TRIGGER_CLASS
-            if (schemeField.type == org.apache.thrift.protocol.TType.SET) {
+          case 43: // TRIGGERS
+            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
-                org.apache.thrift.protocol.TSet _set103 = iprot.readSetBegin();
-                struct.trigger_class = new HashSet<String>(2*_set103.size);
-                for (int _i104 = 0; _i104 < _set103.size; ++_i104)
+                org.apache.thrift.protocol.TMap _map103 = iprot.readMapBegin();
+                struct.triggers = new HashMap<String,Map<String,String>>(2*_map103.size);
+                for (int _i104 = 0; _i104 < _map103.size; ++_i104)
                 {
-                  String _elem105; // optional
-                  _elem105 = iprot.readString();
-                  struct.trigger_class.add(_elem105);
+                  String _key105; // required
+                  Map<String,String> _val106; // required
+                  _key105 = iprot.readString();
+                  {
+                    org.apache.thrift.protocol.TMap _map107 = iprot.readMapBegin();
+                    _val106 = new HashMap<String,String>(2*_map107.size);
+                    for (int _i108 = 0; _i108 < _map107.size; ++_i108)
+                    {
+                      String _key109; // required
+                      String _val110; // required
+                      _key109 = iprot.readString();
+                      _val110 = iprot.readString();
+                      _val106.put(_key109, _val110);
+                    }
+                    iprot.readMapEnd();
+                  }
+                  struct.triggers.put(_key105, _val106);
                 }
-                iprot.readSetEnd();
+                iprot.readMapEnd();
               }
-              struct.setTrigger_classIsSet(true);
+              struct.setTriggersIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
@@ -3942,9 +3974,9 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
           oprot.writeFieldBegin(COLUMN_METADATA_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.column_metadata.size()));
-            for (ColumnDef _iter106 : struct.column_metadata)
+            for (ColumnDef _iter111 : struct.column_metadata)
             {
-              _iter106.write(oprot);
+              _iter111.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -4046,10 +4078,10 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
           oprot.writeFieldBegin(COMPACTION_STRATEGY_OPTIONS_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.compaction_strategy_options.size()));
-            for (Map.Entry<String, String> _iter107 : struct.compaction_strategy_options.entrySet())
+            for (Map.Entry<String, String> _iter112 : struct.compaction_strategy_options.entrySet())
             {
-              oprot.writeString(_iter107.getKey());
-              oprot.writeString(_iter107.getValue());
+              oprot.writeString(_iter112.getKey());
+              oprot.writeString(_iter112.getValue());
             }
             oprot.writeMapEnd();
           }
@@ -4066,10 +4098,10 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
           oprot.writeFieldBegin(COMPRESSION_OPTIONS_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.compression_options.size()));
-            for (Map.Entry<String, String> _iter108 : struct.compression_options.entrySet())
+            for (Map.Entry<String, String> _iter113 : struct.compression_options.entrySet())
             {
-              oprot.writeString(_iter108.getKey());
-              oprot.writeString(_iter108.getValue());
+              oprot.writeString(_iter113.getKey());
+              oprot.writeString(_iter113.getValue());
             }
             oprot.writeMapEnd();
           }
@@ -4120,16 +4152,25 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
           oprot.writeFieldEnd();
         }
       }
-      if (struct.trigger_class != null) {
-        if (struct.isSetTrigger_class()) {
-          oprot.writeFieldBegin(TRIGGER_CLASS_FIELD_DESC);
+      if (struct.triggers != null) {
+        if (struct.isSetTriggers()) {
+          oprot.writeFieldBegin(TRIGGERS_FIELD_DESC);
           {
-            oprot.writeSetBegin(new org.apache.thrift.protocol.TSet(org.apache.thrift.protocol.TType.STRING, struct.trigger_class.size()));
-            for (String _iter109 : struct.trigger_class)
+            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, struct.triggers.size()));
+            for (Map.Entry<String, Map<String,String>> _iter114 : struct.triggers.entrySet())
             {
-              oprot.writeString(_iter109);
+              oprot.writeString(_iter114.getKey());
+              {
+                oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, _iter114.getValue().size()));
+                for (Map.Entry<String, String> _iter115 : _iter114.getValue().entrySet())
+                {
+                  oprot.writeString(_iter115.getKey());
+                  oprot.writeString(_iter115.getValue());
+                }
+                oprot.writeMapEnd();
+              }
             }
-            oprot.writeSetEnd();
+            oprot.writeMapEnd();
           }
           oprot.writeFieldEnd();
         }
@@ -4229,7 +4270,7 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
       if (struct.isSetSpeculative_retry()) {
         optionals.set(24);
       }
-      if (struct.isSetTrigger_class()) {
+      if (struct.isSetTriggers()) {
         optionals.set(25);
       }
       if (struct.isSetRow_cache_size()) {
@@ -4281,9 +4322,9 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
       if (struct.isSetColumn_metadata()) {
         {
           oprot.writeI32(struct.column_metadata.size());
-          for (ColumnDef _iter110 : struct.column_metadata)
+          for (ColumnDef _iter116 : struct.column_metadata)
           {
-            _iter110.write(oprot);
+            _iter116.write(oprot);
           }
         }
       }
@@ -4317,20 +4358,20 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
       if (struct.isSetCompaction_strategy_options()) {
         {
           oprot.writeI32(struct.compaction_strategy_options.size());
-          for (Map.Entry<String, String> _iter111 : struct.compaction_strategy_options.entrySet())
+          for (Map.Entry<String, String> _iter117 : struct.compaction_strategy_options.entrySet())
           {
-            oprot.writeString(_iter111.getKey());
-            oprot.writeString(_iter111.getValue());
+            oprot.writeString(_iter117.getKey());
+            oprot.writeString(_iter117.getValue());
           }
         }
       }
       if (struct.isSetCompression_options()) {
         {
           oprot.writeI32(struct.compression_options.size());
-          for (Map.Entry<String, String> _iter112 : struct.compression_options.entrySet())
+          for (Map.Entry<String, String> _iter118 : struct.compression_options.entrySet())
           {
-            oprot.writeString(_iter112.getKey());
-            oprot.writeString(_iter112.getValue());
+            oprot.writeString(_iter118.getKey());
+            oprot.writeString(_iter118.getValue());
           }
         }
       }
@@ -4358,12 +4399,20 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
       if (struct.isSetSpeculative_retry()) {
         oprot.writeString(struct.speculative_retry);
       }
-      if (struct.isSetTrigger_class()) {
+      if (struct.isSetTriggers()) {
         {
-          oprot.writeI32(struct.trigger_class.size());
-          for (String _iter113 : struct.trigger_class)
+          oprot.writeI32(struct.triggers.size());
+          for (Map.Entry<String, Map<String,String>> _iter119 : struct.triggers.entrySet())
           {
-            oprot.writeString(_iter113);
+            oprot.writeString(_iter119.getKey());
+            {
+              oprot.writeI32(_iter119.getValue().size());
+              for (Map.Entry<String, String> _iter120 : _iter119.getValue().entrySet())
+              {
+                oprot.writeString(_iter120.getKey());
+                oprot.writeString(_iter120.getValue());
+              }
+            }
           }
         }
       }
@@ -4429,14 +4478,14 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
       }
       if (incoming.get(5)) {
         {
-          org.apache.thrift.protocol.TList _list114 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.column_metadata = new ArrayList<ColumnDef>(_list114.size);
-          for (int _i115 = 0; _i115 < _list114.size; ++_i115)
+          org.apache.thrift.protocol.TList _list121 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.column_metadata = new ArrayList<ColumnDef>(_list121.size);
+          for (int _i122 = 0; _i122 < _list121.size; ++_i122)
           {
-            ColumnDef _elem116; // optional
-            _elem116 = new ColumnDef();
-            _elem116.read(iprot);
-            struct.column_metadata.add(_elem116);
+            ColumnDef _elem123; // optional
+            _elem123 = new ColumnDef();
+            _elem123.read(iprot);
+            struct.column_metadata.add(_elem123);
           }
         }
         struct.setColumn_metadataIsSet(true);
@@ -4479,30 +4528,30 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
       }
       if (incoming.get(15)) {
         {
-          org.apache.thrift.protocol.TMap _map117 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.compaction_strategy_options = new HashMap<String,String>(2*_map117.size);
-          for (int _i118 = 0; _i118 < _map117.size; ++_i118)
+          org.apache.thrift.protocol.TMap _map124 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.compaction_strategy_options = new HashMap<String,String>(2*_map124.size);
+          for (int _i125 = 0; _i125 < _map124.size; ++_i125)
           {
-            String _key119; // required
-            String _val120; // required
-            _key119 = iprot.readString();
-            _val120 = iprot.readString();
-            struct.compaction_strategy_options.put(_key119, _val120);
+            String _key126; // required
+            String _val127; // required
+            _key126 = iprot.readString();
+            _val127 = iprot.readString();
+            struct.compaction_strategy_options.put(_key126, _val127);
           }
         }
         struct.setCompaction_strategy_optionsIsSet(true);
       }
       if (incoming.get(16)) {
         {
-          org.apache.thrift.protocol.TMap _map121 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.compression_options = new HashMap<String,String>(2*_map121.size);
-          for (int _i122 = 0; _i122 < _map121.size; ++_i122)
+          org.apache.thrift.protocol.TMap _map128 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.compression_options = new HashMap<String,String>(2*_map128.size);
+          for (int _i129 = 0; _i129 < _map128.size; ++_i129)
           {
-            String _key123; // required
-            String _val124; // required
-            _key123 = iprot.readString();
-            _val124 = iprot.readString();
-            struct.compression_options.put(_key123, _val124);
+            String _key130; // required
+            String _val131; // required
+            _key130 = iprot.readString();
+            _val131 = iprot.readString();
+            struct.compression_options.put(_key130, _val131);
           }
         }
         struct.setCompression_optionsIsSet(true);
@@ -4541,16 +4590,29 @@ public class CfDef implements org.apache.thrift.TBase<CfDef, CfDef._Fields>, jav
       }
       if (incoming.get(25)) {
         {
-          org.apache.thrift.protocol.TSet _set125 = new org.apache.thrift.protocol.TSet(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.trigger_class = new HashSet<String>(2*_set125.size);
-          for (int _i126 = 0; _i126 < _set125.size; ++_i126)
+          org.apache.thrift.protocol.TMap _map132 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, iprot.readI32());
+          struct.triggers = new HashMap<String,Map<String,String>>(2*_map132.size);
+          for (int _i133 = 0; _i133 < _map132.size; ++_i133)
           {
-            String _elem127; // optional
-            _elem127 = iprot.readString();
-            struct.trigger_class.add(_elem127);
+            String _key134; // required
+            Map<String,String> _val135; // required
+            _key134 = iprot.readString();
+            {
+              org.apache.thrift.protocol.TMap _map136 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+              _val135 = new HashMap<String,String>(2*_map136.size);
+              for (int _i137 = 0; _i137 < _map136.size; ++_i137)
+              {
+                String _key138; // required
+                String _val139; // required
+                _key138 = iprot.readString();
+                _val139 = iprot.readString();
+                _val135.put(_key138, _val139);
+              }
+            }
+            struct.triggers.put(_key134, _val135);
           }
         }
-        struct.setTrigger_classIsSet(true);
+        struct.setTriggersIsSet(true);
       }
       if (incoming.get(26)) {
         struct.row_cache_size = iprot.readDouble();

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlMetadata.java
----------------------------------------------------------------------
diff --git a/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlMetadata.java b/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlMetadata.java
index 6b60337..f2d220e 100644
--- a/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlMetadata.java
+++ b/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlMetadata.java
@@ -658,15 +658,15 @@ public class CqlMetadata implements org.apache.thrift.TBase<CqlMetadata, CqlMeta
           case 1: // NAME_TYPES
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
-                org.apache.thrift.protocol.TMap _map154 = iprot.readMapBegin();
-                struct.name_types = new HashMap<ByteBuffer,String>(2*_map154.size);
-                for (int _i155 = 0; _i155 < _map154.size; ++_i155)
+                org.apache.thrift.protocol.TMap _map166 = iprot.readMapBegin();
+                struct.name_types = new HashMap<ByteBuffer,String>(2*_map166.size);
+                for (int _i167 = 0; _i167 < _map166.size; ++_i167)
                 {
-                  ByteBuffer _key156; // required
-                  String _val157; // required
-                  _key156 = iprot.readBinary();
-                  _val157 = iprot.readString();
-                  struct.name_types.put(_key156, _val157);
+                  ByteBuffer _key168; // required
+                  String _val169; // required
+                  _key168 = iprot.readBinary();
+                  _val169 = iprot.readString();
+                  struct.name_types.put(_key168, _val169);
                 }
                 iprot.readMapEnd();
               }
@@ -678,15 +678,15 @@ public class CqlMetadata implements org.apache.thrift.TBase<CqlMetadata, CqlMeta
           case 2: // VALUE_TYPES
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
-                org.apache.thrift.protocol.TMap _map158 = iprot.readMapBegin();
-                struct.value_types = new HashMap<ByteBuffer,String>(2*_map158.size);
-                for (int _i159 = 0; _i159 < _map158.size; ++_i159)
+                org.apache.thrift.protocol.TMap _map170 = iprot.readMapBegin();
+                struct.value_types = new HashMap<ByteBuffer,String>(2*_map170.size);
+                for (int _i171 = 0; _i171 < _map170.size; ++_i171)
                 {
-                  ByteBuffer _key160; // required
-                  String _val161; // required
-                  _key160 = iprot.readBinary();
-                  _val161 = iprot.readString();
-                  struct.value_types.put(_key160, _val161);
+                  ByteBuffer _key172; // required
+                  String _val173; // required
+                  _key172 = iprot.readBinary();
+                  _val173 = iprot.readString();
+                  struct.value_types.put(_key172, _val173);
                 }
                 iprot.readMapEnd();
               }
@@ -730,10 +730,10 @@ public class CqlMetadata implements org.apache.thrift.TBase<CqlMetadata, CqlMeta
         oprot.writeFieldBegin(NAME_TYPES_FIELD_DESC);
         {
           oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.name_types.size()));
-          for (Map.Entry<ByteBuffer, String> _iter162 : struct.name_types.entrySet())
+          for (Map.Entry<ByteBuffer, String> _iter174 : struct.name_types.entrySet())
           {
-            oprot.writeBinary(_iter162.getKey());
-            oprot.writeString(_iter162.getValue());
+            oprot.writeBinary(_iter174.getKey());
+            oprot.writeString(_iter174.getValue());
           }
           oprot.writeMapEnd();
         }
@@ -743,10 +743,10 @@ public class CqlMetadata implements org.apache.thrift.TBase<CqlMetadata, CqlMeta
         oprot.writeFieldBegin(VALUE_TYPES_FIELD_DESC);
         {
           oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.value_types.size()));
-          for (Map.Entry<ByteBuffer, String> _iter163 : struct.value_types.entrySet())
+          for (Map.Entry<ByteBuffer, String> _iter175 : struct.value_types.entrySet())
           {
-            oprot.writeBinary(_iter163.getKey());
-            oprot.writeString(_iter163.getValue());
+            oprot.writeBinary(_iter175.getKey());
+            oprot.writeString(_iter175.getValue());
           }
           oprot.writeMapEnd();
         }
@@ -781,18 +781,18 @@ public class CqlMetadata implements org.apache.thrift.TBase<CqlMetadata, CqlMeta
       TTupleProtocol oprot = (TTupleProtocol) prot;
       {
         oprot.writeI32(struct.name_types.size());
-        for (Map.Entry<ByteBuffer, String> _iter164 : struct.name_types.entrySet())
+        for (Map.Entry<ByteBuffer, String> _iter176 : struct.name_types.entrySet())
         {
-          oprot.writeBinary(_iter164.getKey());
-          oprot.writeString(_iter164.getValue());
+          oprot.writeBinary(_iter176.getKey());
+          oprot.writeString(_iter176.getValue());
         }
       }
       {
         oprot.writeI32(struct.value_types.size());
-        for (Map.Entry<ByteBuffer, String> _iter165 : struct.value_types.entrySet())
+        for (Map.Entry<ByteBuffer, String> _iter177 : struct.value_types.entrySet())
         {
-          oprot.writeBinary(_iter165.getKey());
-          oprot.writeString(_iter165.getValue());
+          oprot.writeBinary(_iter177.getKey());
+          oprot.writeString(_iter177.getValue());
         }
       }
       oprot.writeString(struct.default_name_type);
@@ -803,28 +803,28 @@ public class CqlMetadata implements org.apache.thrift.TBase<CqlMetadata, CqlMeta
     public void read(org.apache.thrift.protocol.TProtocol prot, CqlMetadata struct) throws org.apache.thrift.TException {
       TTupleProtocol iprot = (TTupleProtocol) prot;
       {
-        org.apache.thrift.protocol.TMap _map166 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-        struct.name_types = new HashMap<ByteBuffer,String>(2*_map166.size);
-        for (int _i167 = 0; _i167 < _map166.size; ++_i167)
+        org.apache.thrift.protocol.TMap _map178 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+        struct.name_types = new HashMap<ByteBuffer,String>(2*_map178.size);
+        for (int _i179 = 0; _i179 < _map178.size; ++_i179)
         {
-          ByteBuffer _key168; // required
-          String _val169; // required
-          _key168 = iprot.readBinary();
-          _val169 = iprot.readString();
-          struct.name_types.put(_key168, _val169);
+          ByteBuffer _key180; // required
+          String _val181; // required
+          _key180 = iprot.readBinary();
+          _val181 = iprot.readString();
+          struct.name_types.put(_key180, _val181);
         }
       }
       struct.setName_typesIsSet(true);
       {
-        org.apache.thrift.protocol.TMap _map170 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-        struct.value_types = new HashMap<ByteBuffer,String>(2*_map170.size);
-        for (int _i171 = 0; _i171 < _map170.size; ++_i171)
+        org.apache.thrift.protocol.TMap _map182 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+        struct.value_types = new HashMap<ByteBuffer,String>(2*_map182.size);
+        for (int _i183 = 0; _i183 < _map182.size; ++_i183)
         {
-          ByteBuffer _key172; // required
-          String _val173; // required
-          _key172 = iprot.readBinary();
-          _val173 = iprot.readString();
-          struct.value_types.put(_key172, _val173);
+          ByteBuffer _key184; // required
+          String _val185; // required
+          _key184 = iprot.readBinary();
+          _val185 = iprot.readString();
+          struct.value_types.put(_key184, _val185);
         }
       }
       struct.setValue_typesIsSet(true);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlPreparedResult.java
----------------------------------------------------------------------
diff --git a/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlPreparedResult.java b/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlPreparedResult.java
index 8f9146b..3f137de 100644
--- a/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlPreparedResult.java
+++ b/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlPreparedResult.java
@@ -649,13 +649,13 @@ public class CqlPreparedResult implements org.apache.thrift.TBase<CqlPreparedRes
           case 3: // VARIABLE_TYPES
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list182 = iprot.readListBegin();
-                struct.variable_types = new ArrayList<String>(_list182.size);
-                for (int _i183 = 0; _i183 < _list182.size; ++_i183)
+                org.apache.thrift.protocol.TList _list194 = iprot.readListBegin();
+                struct.variable_types = new ArrayList<String>(_list194.size);
+                for (int _i195 = 0; _i195 < _list194.size; ++_i195)
                 {
-                  String _elem184; // optional
-                  _elem184 = iprot.readString();
-                  struct.variable_types.add(_elem184);
+                  String _elem196; // optional
+                  _elem196 = iprot.readString();
+                  struct.variable_types.add(_elem196);
                 }
                 iprot.readListEnd();
               }
@@ -667,13 +667,13 @@ public class CqlPreparedResult implements org.apache.thrift.TBase<CqlPreparedRes
           case 4: // VARIABLE_NAMES
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list185 = iprot.readListBegin();
-                struct.variable_names = new ArrayList<String>(_list185.size);
-                for (int _i186 = 0; _i186 < _list185.size; ++_i186)
+                org.apache.thrift.protocol.TList _list197 = iprot.readListBegin();
+                struct.variable_names = new ArrayList<String>(_list197.size);
+                for (int _i198 = 0; _i198 < _list197.size; ++_i198)
                 {
-                  String _elem187; // optional
-                  _elem187 = iprot.readString();
-                  struct.variable_names.add(_elem187);
+                  String _elem199; // optional
+                  _elem199 = iprot.readString();
+                  struct.variable_names.add(_elem199);
                 }
                 iprot.readListEnd();
               }
@@ -714,9 +714,9 @@ public class CqlPreparedResult implements org.apache.thrift.TBase<CqlPreparedRes
           oprot.writeFieldBegin(VARIABLE_TYPES_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.variable_types.size()));
-            for (String _iter188 : struct.variable_types)
+            for (String _iter200 : struct.variable_types)
             {
-              oprot.writeString(_iter188);
+              oprot.writeString(_iter200);
             }
             oprot.writeListEnd();
           }
@@ -728,9 +728,9 @@ public class CqlPreparedResult implements org.apache.thrift.TBase<CqlPreparedRes
           oprot.writeFieldBegin(VARIABLE_NAMES_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.variable_names.size()));
-            for (String _iter189 : struct.variable_names)
+            for (String _iter201 : struct.variable_names)
             {
-              oprot.writeString(_iter189);
+              oprot.writeString(_iter201);
             }
             oprot.writeListEnd();
           }
@@ -767,18 +767,18 @@ public class CqlPreparedResult implements org.apache.thrift.TBase<CqlPreparedRes
       if (struct.isSetVariable_types()) {
         {
           oprot.writeI32(struct.variable_types.size());
-          for (String _iter190 : struct.variable_types)
+          for (String _iter202 : struct.variable_types)
           {
-            oprot.writeString(_iter190);
+            oprot.writeString(_iter202);
           }
         }
       }
       if (struct.isSetVariable_names()) {
         {
           oprot.writeI32(struct.variable_names.size());
-          for (String _iter191 : struct.variable_names)
+          for (String _iter203 : struct.variable_names)
           {
-            oprot.writeString(_iter191);
+            oprot.writeString(_iter203);
           }
         }
       }
@@ -794,26 +794,26 @@ public class CqlPreparedResult implements org.apache.thrift.TBase<CqlPreparedRes
       BitSet incoming = iprot.readBitSet(2);
       if (incoming.get(0)) {
         {
-          org.apache.thrift.protocol.TList _list192 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.variable_types = new ArrayList<String>(_list192.size);
-          for (int _i193 = 0; _i193 < _list192.size; ++_i193)
+          org.apache.thrift.protocol.TList _list204 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.variable_types = new ArrayList<String>(_list204.size);
+          for (int _i205 = 0; _i205 < _list204.size; ++_i205)
           {
-            String _elem194; // optional
-            _elem194 = iprot.readString();
-            struct.variable_types.add(_elem194);
+            String _elem206; // optional
+            _elem206 = iprot.readString();
+            struct.variable_types.add(_elem206);
           }
         }
         struct.setVariable_typesIsSet(true);
       }
       if (incoming.get(1)) {
         {
-          org.apache.thrift.protocol.TList _list195 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.variable_names = new ArrayList<String>(_list195.size);
-          for (int _i196 = 0; _i196 < _list195.size; ++_i196)
+          org.apache.thrift.protocol.TList _list207 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.variable_names = new ArrayList<String>(_list207.size);
+          for (int _i208 = 0; _i208 < _list207.size; ++_i208)
           {
-            String _elem197; // optional
-            _elem197 = iprot.readString();
-            struct.variable_names.add(_elem197);
+            String _elem209; // optional
+            _elem209 = iprot.readString();
+            struct.variable_names.add(_elem209);
           }
         }
         struct.setVariable_namesIsSet(true);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlResult.java
----------------------------------------------------------------------
diff --git a/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlResult.java b/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlResult.java
index 0ef02f7..5867b44 100644
--- a/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlResult.java
+++ b/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlResult.java
@@ -644,14 +644,14 @@ public class CqlResult implements org.apache.thrift.TBase<CqlResult, CqlResult._
           case 2: // ROWS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list174 = iprot.readListBegin();
-                struct.rows = new ArrayList<CqlRow>(_list174.size);
-                for (int _i175 = 0; _i175 < _list174.size; ++_i175)
+                org.apache.thrift.protocol.TList _list186 = iprot.readListBegin();
+                struct.rows = new ArrayList<CqlRow>(_list186.size);
+                for (int _i187 = 0; _i187 < _list186.size; ++_i187)
                 {
-                  CqlRow _elem176; // optional
-                  _elem176 = new CqlRow();
-                  _elem176.read(iprot);
-                  struct.rows.add(_elem176);
+                  CqlRow _elem188; // optional
+                  _elem188 = new CqlRow();
+                  _elem188.read(iprot);
+                  struct.rows.add(_elem188);
                 }
                 iprot.readListEnd();
               }
@@ -702,9 +702,9 @@ public class CqlResult implements org.apache.thrift.TBase<CqlResult, CqlResult._
           oprot.writeFieldBegin(ROWS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.rows.size()));
-            for (CqlRow _iter177 : struct.rows)
+            for (CqlRow _iter189 : struct.rows)
             {
-              _iter177.write(oprot);
+              _iter189.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -755,9 +755,9 @@ public class CqlResult implements org.apache.thrift.TBase<CqlResult, CqlResult._
       if (struct.isSetRows()) {
         {
           oprot.writeI32(struct.rows.size());
-          for (CqlRow _iter178 : struct.rows)
+          for (CqlRow _iter190 : struct.rows)
           {
-            _iter178.write(oprot);
+            _iter190.write(oprot);
           }
         }
       }
@@ -777,14 +777,14 @@ public class CqlResult implements org.apache.thrift.TBase<CqlResult, CqlResult._
       BitSet incoming = iprot.readBitSet(3);
       if (incoming.get(0)) {
         {
-          org.apache.thrift.protocol.TList _list179 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.rows = new ArrayList<CqlRow>(_list179.size);
-          for (int _i180 = 0; _i180 < _list179.size; ++_i180)
+          org.apache.thrift.protocol.TList _list191 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.rows = new ArrayList<CqlRow>(_list191.size);
+          for (int _i192 = 0; _i192 < _list191.size; ++_i192)
           {
-            CqlRow _elem181; // optional
-            _elem181 = new CqlRow();
-            _elem181.read(iprot);
-            struct.rows.add(_elem181);
+            CqlRow _elem193; // optional
+            _elem193 = new CqlRow();
+            _elem193.read(iprot);
+            struct.rows.add(_elem193);
           }
         }
         struct.setRowsIsSet(true);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlRow.java
----------------------------------------------------------------------
diff --git a/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlRow.java b/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlRow.java
index d3816cc..d495530 100644
--- a/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlRow.java
+++ b/interface/thrift/gen-java/org/apache/cassandra/thrift/CqlRow.java
@@ -478,14 +478,14 @@ public class CqlRow implements org.apache.thrift.TBase<CqlRow, CqlRow._Fields>,
           case 2: // COLUMNS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list146 = iprot.readListBegin();
-                struct.columns = new ArrayList<Column>(_list146.size);
-                for (int _i147 = 0; _i147 < _list146.size; ++_i147)
+                org.apache.thrift.protocol.TList _list158 = iprot.readListBegin();
+                struct.columns = new ArrayList<Column>(_list158.size);
+                for (int _i159 = 0; _i159 < _list158.size; ++_i159)
                 {
-                  Column _elem148; // optional
-                  _elem148 = new Column();
-                  _elem148.read(iprot);
-                  struct.columns.add(_elem148);
+                  Column _elem160; // optional
+                  _elem160 = new Column();
+                  _elem160.read(iprot);
+                  struct.columns.add(_elem160);
                 }
                 iprot.readListEnd();
               }
@@ -518,9 +518,9 @@ public class CqlRow implements org.apache.thrift.TBase<CqlRow, CqlRow._Fields>,
         oprot.writeFieldBegin(COLUMNS_FIELD_DESC);
         {
           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.columns.size()));
-          for (Column _iter149 : struct.columns)
+          for (Column _iter161 : struct.columns)
           {
-            _iter149.write(oprot);
+            _iter161.write(oprot);
           }
           oprot.writeListEnd();
         }
@@ -546,9 +546,9 @@ public class CqlRow implements org.apache.thrift.TBase<CqlRow, CqlRow._Fields>,
       oprot.writeBinary(struct.key);
       {
         oprot.writeI32(struct.columns.size());
-        for (Column _iter150 : struct.columns)
+        for (Column _iter162 : struct.columns)
         {
-          _iter150.write(oprot);
+          _iter162.write(oprot);
         }
       }
     }
@@ -559,14 +559,14 @@ public class CqlRow implements org.apache.thrift.TBase<CqlRow, CqlRow._Fields>,
       struct.key = iprot.readBinary();
       struct.setKeyIsSet(true);
       {
-        org.apache.thrift.protocol.TList _list151 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-        struct.columns = new ArrayList<Column>(_list151.size);
-        for (int _i152 = 0; _i152 < _list151.size; ++_i152)
+        org.apache.thrift.protocol.TList _list163 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+        struct.columns = new ArrayList<Column>(_list163.size);
+        for (int _i164 = 0; _i164 < _list163.size; ++_i164)
         {
-          Column _elem153; // optional
-          _elem153 = new Column();
-          _elem153.read(iprot);
-          struct.columns.add(_elem153);
+          Column _elem165; // optional
+          _elem165 = new Column();
+          _elem165.read(iprot);
+          struct.columns.add(_elem165);
         }
       }
       struct.setColumnsIsSet(true);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/interface/thrift/gen-java/org/apache/cassandra/thrift/KsDef.java
----------------------------------------------------------------------
diff --git a/interface/thrift/gen-java/org/apache/cassandra/thrift/KsDef.java b/interface/thrift/gen-java/org/apache/cassandra/thrift/KsDef.java
index f284680..3f2ee29 100644
--- a/interface/thrift/gen-java/org/apache/cassandra/thrift/KsDef.java
+++ b/interface/thrift/gen-java/org/apache/cassandra/thrift/KsDef.java
@@ -837,15 +837,15 @@ public class KsDef implements org.apache.thrift.TBase<KsDef, KsDef._Fields>, jav
           case 3: // STRATEGY_OPTIONS
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
-                org.apache.thrift.protocol.TMap _map128 = iprot.readMapBegin();
-                struct.strategy_options = new HashMap<String,String>(2*_map128.size);
-                for (int _i129 = 0; _i129 < _map128.size; ++_i129)
+                org.apache.thrift.protocol.TMap _map140 = iprot.readMapBegin();
+                struct.strategy_options = new HashMap<String,String>(2*_map140.size);
+                for (int _i141 = 0; _i141 < _map140.size; ++_i141)
                 {
-                  String _key130; // required
-                  String _val131; // required
-                  _key130 = iprot.readString();
-                  _val131 = iprot.readString();
-                  struct.strategy_options.put(_key130, _val131);
+                  String _key142; // required
+                  String _val143; // required
+                  _key142 = iprot.readString();
+                  _val143 = iprot.readString();
+                  struct.strategy_options.put(_key142, _val143);
                 }
                 iprot.readMapEnd();
               }
@@ -865,14 +865,14 @@ public class KsDef implements org.apache.thrift.TBase<KsDef, KsDef._Fields>, jav
           case 5: // CF_DEFS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list132 = iprot.readListBegin();
-                struct.cf_defs = new ArrayList<CfDef>(_list132.size);
-                for (int _i133 = 0; _i133 < _list132.size; ++_i133)
+                org.apache.thrift.protocol.TList _list144 = iprot.readListBegin();
+                struct.cf_defs = new ArrayList<CfDef>(_list144.size);
+                for (int _i145 = 0; _i145 < _list144.size; ++_i145)
                 {
-                  CfDef _elem134; // optional
-                  _elem134 = new CfDef();
-                  _elem134.read(iprot);
-                  struct.cf_defs.add(_elem134);
+                  CfDef _elem146; // optional
+                  _elem146 = new CfDef();
+                  _elem146.read(iprot);
+                  struct.cf_defs.add(_elem146);
                 }
                 iprot.readListEnd();
               }
@@ -919,10 +919,10 @@ public class KsDef implements org.apache.thrift.TBase<KsDef, KsDef._Fields>, jav
           oprot.writeFieldBegin(STRATEGY_OPTIONS_FIELD_DESC);
           {
             oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.strategy_options.size()));
-            for (Map.Entry<String, String> _iter135 : struct.strategy_options.entrySet())
+            for (Map.Entry<String, String> _iter147 : struct.strategy_options.entrySet())
             {
-              oprot.writeString(_iter135.getKey());
-              oprot.writeString(_iter135.getValue());
+              oprot.writeString(_iter147.getKey());
+              oprot.writeString(_iter147.getValue());
             }
             oprot.writeMapEnd();
           }
@@ -938,9 +938,9 @@ public class KsDef implements org.apache.thrift.TBase<KsDef, KsDef._Fields>, jav
         oprot.writeFieldBegin(CF_DEFS_FIELD_DESC);
         {
           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.cf_defs.size()));
-          for (CfDef _iter136 : struct.cf_defs)
+          for (CfDef _iter148 : struct.cf_defs)
           {
-            _iter136.write(oprot);
+            _iter148.write(oprot);
           }
           oprot.writeListEnd();
         }
@@ -972,9 +972,9 @@ public class KsDef implements org.apache.thrift.TBase<KsDef, KsDef._Fields>, jav
       oprot.writeString(struct.strategy_class);
       {
         oprot.writeI32(struct.cf_defs.size());
-        for (CfDef _iter137 : struct.cf_defs)
+        for (CfDef _iter149 : struct.cf_defs)
         {
-          _iter137.write(oprot);
+          _iter149.write(oprot);
         }
       }
       BitSet optionals = new BitSet();
@@ -991,10 +991,10 @@ public class KsDef implements org.apache.thrift.TBase<KsDef, KsDef._Fields>, jav
       if (struct.isSetStrategy_options()) {
         {
           oprot.writeI32(struct.strategy_options.size());
-          for (Map.Entry<String, String> _iter138 : struct.strategy_options.entrySet())
+          for (Map.Entry<String, String> _iter150 : struct.strategy_options.entrySet())
           {
-            oprot.writeString(_iter138.getKey());
-            oprot.writeString(_iter138.getValue());
+            oprot.writeString(_iter150.getKey());
+            oprot.writeString(_iter150.getValue());
           }
         }
       }
@@ -1014,29 +1014,29 @@ public class KsDef implements org.apache.thrift.TBase<KsDef, KsDef._Fields>, jav
       struct.strategy_class = iprot.readString();
       struct.setStrategy_classIsSet(true);
       {
-        org.apache.thrift.protocol.TList _list139 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-        struct.cf_defs = new ArrayList<CfDef>(_list139.size);
-        for (int _i140 = 0; _i140 < _list139.size; ++_i140)
+        org.apache.thrift.protocol.TList _list151 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+        struct.cf_defs = new ArrayList<CfDef>(_list151.size);
+        for (int _i152 = 0; _i152 < _list151.size; ++_i152)
         {
-          CfDef _elem141; // optional
-          _elem141 = new CfDef();
-          _elem141.read(iprot);
-          struct.cf_defs.add(_elem141);
+          CfDef _elem153; // optional
+          _elem153 = new CfDef();
+          _elem153.read(iprot);
+          struct.cf_defs.add(_elem153);
         }
       }
       struct.setCf_defsIsSet(true);
       BitSet incoming = iprot.readBitSet(3);
       if (incoming.get(0)) {
         {
-          org.apache.thrift.protocol.TMap _map142 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.strategy_options = new HashMap<String,String>(2*_map142.size);
-          for (int _i143 = 0; _i143 < _map142.size; ++_i143)
+          org.apache.thrift.protocol.TMap _map154 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.strategy_options = new HashMap<String,String>(2*_map154.size);
+          for (int _i155 = 0; _i155 < _map154.size; ++_i155)
           {
-            String _key144; // required
-            String _val145; // required
-            _key144 = iprot.readString();
-            _val145 = iprot.readString();
-            struct.strategy_options.put(_key144, _val145);
+            String _key156; // required
+            String _val157; // required
+            _key156 = iprot.readString();
+            _val157 = iprot.readString();
+            struct.strategy_options.put(_key156, _val157);
           }
         }
         struct.setStrategy_optionsIsSet(true);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/src/java/org/apache/cassandra/cli/CliClient.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cli/CliClient.java b/src/java/org/apache/cassandra/cli/CliClient.java
index c27ee2e..80a6211 100644
--- a/src/java/org/apache/cassandra/cli/CliClient.java
+++ b/src/java/org/apache/cassandra/cli/CliClient.java
@@ -27,13 +27,10 @@ import java.nio.ByteBuffer;
 import java.nio.charset.CharacterCodingException;
 import java.util.*;
 
-import com.google.common.base.CharMatcher;
 import com.google.common.base.Charsets;
 import com.google.common.base.Predicate;
-import com.google.common.base.Splitter;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.Iterables;
-import com.google.common.collect.Sets;
 
 import org.apache.commons.lang.StringUtils;
 
@@ -145,7 +142,6 @@ public class CliClient
         DEFAULT_TIME_TO_LIVE,
         SPECULATIVE_RETRY,
         POPULATE_IO_CACHE_ON_FLUSH,
-        TRIGGER_CLASSES
     }
 
     private static final String DEFAULT_PLACEMENT_STRATEGY = "org.apache.cassandra.locator.NetworkTopologyStrategy";
@@ -1359,10 +1355,6 @@ public class CliClient
             case POPULATE_IO_CACHE_ON_FLUSH:
                 cfDef.setPopulate_io_cache_on_flush(Boolean.parseBoolean(mValue));
                 break;
-            case TRIGGER_CLASSES:
-                Iterable<String> tcIt = Splitter.on(',').trimResults(CharMatcher.is('\'')).split(mValue);
-                cfDef.setTrigger_class(Sets.newHashSet(tcIt));
-                break;
             default:
                 //must match one of the above or we'd throw an exception at the valueOf statement above.
                 assert(false);
@@ -1827,9 +1819,6 @@ public class CliClient
 
         if (cfDef.isSetBloom_filter_fp_chance())
             writeAttr(output, false, "bloom_filter_fp_chance", cfDef.bloom_filter_fp_chance);
-        if (cfDef.isSetTrigger_class())
-            writeAttr(output, false, "trigger_class", StringUtils.join(cfDef.trigger_class, ','));
-
         if (!cfDef.compaction_strategy_options.isEmpty())
         {
             StringBuilder cOptions = new StringBuilder();
@@ -2199,9 +2188,6 @@ public class CliClient
         sessionState.out.printf("      Index interval: %s%n", cf_def.isSetIndex_interval() ? cf_def.index_interval : "default");
         sessionState.out.printf("      Speculative Retry: %s%n", cf_def.speculative_retry);
 
-        if (cf_def.trigger_class != null)
-            sessionState.out.printf("      Trigger class: %s%n", cf_def.trigger_class);
-
         // if we have connection to the cfMBean established
         if (cfMBean != null)
             sessionState.out.printf("      Built indexes: %s%n", cfMBean.getBuiltIndexes());

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/src/java/org/apache/cassandra/config/CFMetaData.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/CFMetaData.java b/src/java/org/apache/cassandra/config/CFMetaData.java
index 9d35a70..cfe1090 100644
--- a/src/java/org/apache/cassandra/config/CFMetaData.java
+++ b/src/java/org/apache/cassandra/config/CFMetaData.java
@@ -23,13 +23,12 @@ import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.nio.ByteBuffer;
 import java.util.*;
+import java.util.Map.Entry;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Objects;
-import com.google.common.base.Strings;
 import com.google.common.collect.MapDifference;
 import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
 
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang.StringUtils;
@@ -141,7 +140,6 @@ public final class CFMetaData
                                                                        + "default_write_consistency text,"
                                                                        + "speculative_retry text,"
                                                                        + "populate_io_cache_on_flush boolean,"
-                                                                       + "trigger_class text,"
                                                                        + "dropped_columns map<text, bigint>,"
                                                                        + "PRIMARY KEY (keyspace_name, columnfamily_name)"
                                                                        + ") WITH COMMENT='ColumnFamily definitions' AND gc_grace_seconds=8640");
@@ -159,6 +157,14 @@ public final class CFMetaData
                                                                  + "PRIMARY KEY(keyspace_name, columnfamily_name, column_name)"
                                                                  + ") WITH COMMENT='ColumnFamily column attributes' AND gc_grace_seconds=8640");
 
+    public static final CFMetaData SchemaTriggerCf = compile("CREATE TABLE \"" + SystemTable.SCHEMA_TRIGGERS_CF + "\" ("
+                                                                + "keyspace_name text,"
+                                                                + "column_family text,"
+                                                                + "trigger_name text,"
+                                                                + "trigger_options map<text, text>,"
+                                                                + "PRIMARY KEY (keyspace_name, column_family, trigger_name)"
+                                                                + ") WITH COMMENT='triggers metadata table'");
+
     public static final CFMetaData HintsCf = compile("CREATE TABLE " + SystemTable.HINTS_CF + " ("
                                                      + "target_id uuid,"
                                                      + "hint_id timeuuid,"
@@ -364,7 +370,8 @@ public final class CFMetaData
     private volatile SpeculativeRetry speculativeRetry = DEFAULT_SPECULATIVE_RETRY;
     private volatile boolean populateIoCacheOnFlush = DEFAULT_POPULATE_IO_CACHE_ON_FLUSH;
     private volatile Map<ByteBuffer, Long> droppedColumns = new HashMap<ByteBuffer, Long>();
-    private volatile Set<String> triggerClass = null;
+    private volatile Map<String, Map<String, String>> triggers = new HashMap<>();
+    private volatile Collection<String> cachedTriggers;
 
     /*
      * All CQL3 columns definition are stored in the column_metadata map.
@@ -410,7 +417,7 @@ public final class CFMetaData
     public CFMetaData speculativeRetry(SpeculativeRetry prop) {speculativeRetry = prop; return this;}
     public CFMetaData populateIoCacheOnFlush(boolean prop) {populateIoCacheOnFlush = prop; return this;}
     public CFMetaData droppedColumns(Map<ByteBuffer, Long> cols) {droppedColumns = cols; return this;}
-    public CFMetaData triggerClass(Set<String> prop) {triggerClass = prop; return this;}
+    public CFMetaData triggers(Map<String, Map<String, String>> prop) {triggers = prop; cachedTriggers = TriggerOptions.extractClasses(triggers); return this;}
 
     public CFMetaData(String keyspace, String name, ColumnFamilyType type, AbstractType<?> comp, AbstractType<?> subcc)
     {
@@ -435,6 +442,11 @@ public final class CFMetaData
         updateCfDef(); // init cqlCfDef
     }
 
+    public Map<String, Map<String, String>> getTriggers()
+    {
+        return new HashMap<>(triggers);
+    }
+
     private static CFMetaData compile(String cql, String keyspace)
     {
         return compile(null, cql, keyspace);
@@ -508,7 +520,7 @@ public final class CFMetaData
                              .gcGraceSeconds(0)
                              .caching(indexCaching)
                              .speculativeRetry(parent.speculativeRetry)
-                             .triggerClass(parent.triggerClass)
+                             .triggers(parent.triggers)
                              .compactionStrategyClass(parent.compactionStrategyClass)
                              .compactionStrategyOptions(parent.compactionStrategyOptions)
                              .reloadSecondaryIndexMetadata(parent);
@@ -564,7 +576,7 @@ public final class CFMetaData
                       .memtableFlushPeriod(oldCFMD.memtableFlushPeriod)
                       .populateIoCacheOnFlush(oldCFMD.populateIoCacheOnFlush)
                       .droppedColumns(oldCFMD.droppedColumns)
-                      .triggerClass(oldCFMD.triggerClass);
+                      .triggers(oldCFMD.getTriggers());
     }
 
     /**
@@ -695,9 +707,9 @@ public final class CFMetaData
                : bloomFilterFpChance;
     }
 
-    public Set<String> getTriggerClass()
+    public Collection<String> getTriggerClasses()
     {
-        return triggerClass;
+        return cachedTriggers;
     }
 
     public Caching getCaching()
@@ -769,7 +781,7 @@ public final class CFMetaData
             .append(speculativeRetry, rhs.speculativeRetry)
             .append(populateIoCacheOnFlush, rhs.populateIoCacheOnFlush)
             .append(droppedColumns, rhs.droppedColumns)
-            .append(triggerClass, rhs.triggerClass)
+            .append(triggers, rhs.triggers)
             .isEquals();
     }
 
@@ -802,7 +814,7 @@ public final class CFMetaData
             .append(speculativeRetry)
             .append(populateIoCacheOnFlush)
             .append(droppedColumns)
-            .append(triggerClass)
+            .append(triggers)
             .toHashCode();
     }
 
@@ -892,8 +904,8 @@ public final class CFMetaData
                 newCFMD.speculativeRetry(SpeculativeRetry.fromString(cf_def.speculative_retry));
             if (cf_def.isSetPopulate_io_cache_on_flush())
                 newCFMD.populateIoCacheOnFlush(cf_def.populate_io_cache_on_flush);
-            if (cf_def.isSetTrigger_class())
-                newCFMD.triggerClass(cf_def.trigger_class);
+            if (cf_def.isSetTriggers())
+                newCFMD.triggers(cf_def.triggers);
 
             CompressionParameters cp = CompressionParameters.create(cf_def.compression_options);
 
@@ -975,8 +987,6 @@ public final class CFMetaData
         speculativeRetry = cfm.speculativeRetry;
         populateIoCacheOnFlush = cfm.populateIoCacheOnFlush;
 
-        if (cfm.triggerClass != null)
-            triggerClass = cfm.triggerClass;
         if (!cfm.droppedColumns.isEmpty())
             droppedColumns = cfm.droppedColumns;
 
@@ -995,6 +1005,7 @@ public final class CFMetaData
             oldDef.apply(def, getColumnDefinitionComparator(oldDef));
         }
 
+        triggers(new HashMap<>(cfm.triggers)); // update trigger as an unit.
         compactionStrategyClass = cfm.compactionStrategyClass;
         compactionStrategyOptions = cfm.compactionStrategyOptions;
 
@@ -1137,8 +1148,7 @@ public final class CFMetaData
         def.setCaching(caching.toString());
         def.setDefault_time_to_live(defaultTimeToLive);
         def.setSpeculative_retry(speculativeRetry.toString());
-        if (triggerClass != null)
-            def.setTrigger_class(new HashSet<String>(triggerClass));
+        def.setTriggers(triggers);
         return def;
     }
 
@@ -1430,6 +1440,12 @@ public final class CFMetaData
             cd.toSchema(rm, cfName, getColumnDefinitionComparator(cd), modificationTimestamp);
         }
 
+        MapDifference<String, Map<String, String>> tdiffrence = Maps.difference(triggers, newState.triggers);
+        for (Entry<String, Map<String, String>> tentry : tdiffrence.entriesOnlyOnLeft().entrySet())
+            TriggerOptions.deleteColumns(rm, cfName, tentry, modificationTimestamp);
+        for (Entry<String, Map<String, String>> tentry : tdiffrence.entriesOnlyOnRight().entrySet())
+            TriggerOptions.addColumns(rm, cfName, tentry, modificationTimestamp);
+
         return rm;
     }
 
@@ -1450,6 +1466,11 @@ public final class CFMetaData
         builder.add(ByteBufferUtil.bytes(cfName));
         cf.addAtom(new RangeTombstone(builder.build(), builder.buildAsEndOfRange(), timestamp, ldt));
 
+        ColumnFamily tcf = rm.addOrGet(SystemTable.SCHEMA_TRIGGERS_CF);
+        ColumnNameBuilder tbuilder = SchemaTriggerCf.getCfDef().getColumnNameBuilder();
+        tbuilder.add(ByteBufferUtil.bytes(cfName));
+        tcf.addAtom(new RangeTombstone(tbuilder.build(), tbuilder.buildAsEndOfRange(), timestamp, ldt));
+
         for (ColumnDefinition cd : column_metadata.values())
             cd.deleteFromSchema(rm, cfName, getColumnDefinitionComparator(cd), timestamp);
 
@@ -1509,8 +1530,6 @@ public final class CFMetaData
         cf.addColumn(Column.create(json(compactionStrategyOptions), timestamp, cfName, "compaction_strategy_options"));
         cf.addColumn(Column.create(indexInterval, timestamp, cfName, "index_interval"));
         cf.addColumn(Column.create(speculativeRetry.toString(), timestamp, cfName, "speculative_retry"));
-        cf.addColumn(triggerClass == null ? DeletedColumn.create(ldt, timestamp, cfName, "trigger_class")
-                                          : Column.create(StringUtils.join(triggerClass, ','), timestamp, cfName, "trigger_class"));
 
         for (Map.Entry<ByteBuffer, Long> entry : droppedColumns.entrySet())
             cf.addColumn(new Column(makeDroppedColumnName(entry.getKey()), LongType.instance.decompose(entry.getValue()), timestamp));
@@ -1560,8 +1579,6 @@ public final class CFMetaData
                 cfm.indexInterval(result.getInt("index_interval"));
             if (result.has("populate_io_cache_on_flush"))
                 cfm.populateIoCacheOnFlush(result.getBoolean("populate_io_cache_on_flush"));
-            if (result.has("trigger_class") && !Strings.isNullOrEmpty(result.getString("trigger_class")))
-                cfm.triggerClass(Sets.newHashSet(StringUtils.split(result.getString("trigger_class"), ',')));
 
             /*
              * The info previously hold by key_alias(es), column_alias and value_alias is now stored in column_metadata (because 1) this
@@ -1626,6 +1643,9 @@ public final class CFMetaData
     {
         CFMetaData cfDef = fromSchemaNoColumns(result);
 
+        // read triggers.
+        cfDef.triggers(TriggerOptions.getAllTriggers(cfDef.ksName, cfDef.cfName));
+
         Row serializedColumnDefinitions = ColumnDefinition.readSchema(cfDef.ksName, cfDef.cfName);
         return addColumnDefinitionSchema(cfDef, serializedColumnDefinitions);
     }
@@ -1984,7 +2004,7 @@ public final class CFMetaData
             .append("indexInterval", indexInterval)
             .append("populateIoCacheOnFlush", populateIoCacheOnFlush)
             .append("droppedColumns", droppedColumns)
-            .append("trigger_class", triggerClass)
+            .append("triggers", triggers)
             .toString();
     }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/src/java/org/apache/cassandra/config/KSMetaData.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/KSMetaData.java b/src/java/org/apache/cassandra/config/KSMetaData.java
index db08da8..f188134 100644
--- a/src/java/org/apache/cassandra/config/KSMetaData.java
+++ b/src/java/org/apache/cassandra/config/KSMetaData.java
@@ -84,6 +84,7 @@ public final class KSMetaData
                                                 CFMetaData.PeerEventsCf,
                                                 CFMetaData.HintsCf,
                                                 CFMetaData.IndexCf,
+                                                CFMetaData.SchemaTriggerCf,
                                                 CFMetaData.CounterIdCf,
                                                 CFMetaData.SchemaKeyspacesCf,
                                                 CFMetaData.SchemaColumnFamiliesCf,
@@ -228,6 +229,7 @@ public final class KSMetaData
         rm.delete(SystemTable.SCHEMA_KEYSPACES_CF, timestamp);
         rm.delete(SystemTable.SCHEMA_COLUMNFAMILIES_CF, timestamp);
         rm.delete(SystemTable.SCHEMA_COLUMNS_CF, timestamp);
+        rm.delete(SystemTable.SCHEMA_TRIGGERS_CF, timestamp);
 
         return rm;
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/src/java/org/apache/cassandra/config/TriggerOptions.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/TriggerOptions.java b/src/java/org/apache/cassandra/config/TriggerOptions.java
new file mode 100644
index 0000000..3ab5f86
--- /dev/null
+++ b/src/java/org/apache/cassandra/config/TriggerOptions.java
@@ -0,0 +1,93 @@
+package org.apache.cassandra.config;
+
+import static org.apache.cassandra.cql3.QueryProcessor.processInternal;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.cassandra.cql3.ColumnNameBuilder;
+import org.apache.cassandra.cql3.UntypedResultSet;
+import org.apache.cassandra.cql3.UntypedResultSet.Row;
+import org.apache.cassandra.db.ColumnFamily;
+import org.apache.cassandra.db.RangeTombstone;
+import org.apache.cassandra.db.RowMutation;
+import org.apache.cassandra.db.SystemTable;
+import org.apache.cassandra.db.marshal.UTF8Type;
+import org.apache.cassandra.utils.ByteBufferUtil;
+
+public class TriggerOptions
+{
+    private static final String CLASS_KEY = "class";
+    private static final String OPTIONS_KEY = "trigger_options";
+
+    public static Map<String, Map<String, String>> getAllTriggers(String ksName, String cfName)
+    {
+        String req = "SELECT * FROM system.%s WHERE keyspace_name='%s' AND column_family='%s'";
+        UntypedResultSet result = processInternal(String.format(req, SystemTable.SCHEMA_TRIGGERS_CF, ksName, cfName));
+        Map<String, Map<String, String>> triggers = new HashMap<>();
+        if (result.isEmpty())
+            return triggers;
+        for (Row row : result)
+            triggers.put(row.getString("trigger_name"), row.getMap(OPTIONS_KEY, UTF8Type.instance, UTF8Type.instance));
+        return triggers;
+    }
+
+    public static void addColumns(RowMutation rm, String cfName, Entry<String, Map<String, String>> tentry, long modificationTimestamp)
+    {
+        ColumnFamily cf = rm.addOrGet(SystemTable.SCHEMA_TRIGGERS_CF);
+        assert tentry.getValue().get(CLASS_KEY) != null;
+        ColumnNameBuilder builder = CFMetaData.SchemaTriggerCf.getCfDef().getColumnNameBuilder();
+        builder.add(ByteBufferUtil.bytes(cfName)).add(ByteBufferUtil.bytes(tentry.getKey())).add(ByteBufferUtil.bytes(OPTIONS_KEY));
+        for (Entry<String, String> entry : tentry.getValue().entrySet())
+        {
+            ColumnNameBuilder builderCopy = builder.copy();
+            builderCopy.add(ByteBufferUtil.bytes(entry.getKey()));
+            cf.addColumn(builderCopy.build(), ByteBufferUtil.bytes(entry.getValue()), modificationTimestamp);
+        }
+    }
+
+    public static void deleteColumns(RowMutation rm, String cfName, Entry<String, Map<String, String>> tentry, long modificationTimestamp)
+    {
+        ColumnFamily cf = rm.addOrGet(SystemTable.SCHEMA_TRIGGERS_CF);
+        int ldt = (int) (System.currentTimeMillis() / 1000);
+        ColumnNameBuilder builder = CFMetaData.SchemaTriggerCf.getCfDef().getColumnNameBuilder();
+        builder.add(ByteBufferUtil.bytes(cfName)).add(ByteBufferUtil.bytes(tentry.getKey()));
+        cf.addAtom(new RangeTombstone(builder.build(), builder.buildAsEndOfRange(), modificationTimestamp, ldt));
+    }
+
+    public static void update(CFMetaData cfm, String triggerName, String clazz)
+    {
+        Map<String, Map<String, String>> existingTriggers = cfm.getTriggers();
+        assert existingTriggers.get(triggerName) == null;
+        Map<String, String> triggerUnit = new HashMap<>();
+        triggerUnit.put(CLASS_KEY, clazz);
+        existingTriggers.put(triggerName, triggerUnit);
+        cfm.triggers(existingTriggers);
+    }
+
+    public static void remove(CFMetaData cfm, String triggerName)
+    {
+        Map<String, Map<String, String>> existingTriggers = cfm.getTriggers(); // have a copy of the triggers
+        existingTriggers.remove(triggerName);
+        cfm.triggers(existingTriggers);
+    }
+
+    public static boolean hasTrigger(CFMetaData cfm, String triggerName)
+    {
+        return cfm.getTriggers().get(triggerName) != null;
+    }
+
+    public static Collection<String> extractClasses(Map<String, Map<String, String>> triggers)
+    {
+        List<String> classes = new ArrayList<>();
+        if (triggers.isEmpty())
+            return null;
+        for (Map<String, String> options : triggers.values())
+            classes.add(options.get(CLASS_KEY));
+        return classes;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/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 951b1bb..662d889 100644
--- a/src/java/org/apache/cassandra/cql/AlterTableStatement.java
+++ b/src/java/org/apache/cassandra/cql/AlterTableStatement.java
@@ -186,7 +186,6 @@ public class AlterTableStatement
         cfm.populateIoCacheOnFlush(cfProps.getPropertyBoolean(CFPropDefs.KW_POPULATE_IO_CACHE_ON_FLUSH, cfm.populateIoCacheOnFlush()));
         cfm.bloomFilterFpChance(cfProps.getPropertyDouble(CFPropDefs.KW_BF_FP_CHANCE, cfm.getBloomFilterFpChance()));
         cfm.memtableFlushPeriod(cfProps.getPropertyInt(CFPropDefs.KW_MEMTABLE_FLUSH_PERIOD, cfm.getMemtableFlushPeriod()));
-        cfm.triggerClass(cfProps.getPropertySet(CFPropDefs.KW_TRIGGER_CLASS, cfm.getTriggerClass()));
 
         if (!cfProps.compactionStrategyOptions.isEmpty())
         {

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/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 e8b73ef..dd56387 100644
--- a/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java
+++ b/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java
@@ -202,8 +202,7 @@ public class CreateColumnFamilyStatement
                    .bloomFilterFpChance(getPropertyDouble(CFPropDefs.KW_BF_FP_CHANCE, null))
                    .memtableFlushPeriod(getPropertyInt(CFPropDefs.KW_MEMTABLE_FLUSH_PERIOD, 0))
                    .defaultTimeToLive(getPropertyInt(CFPropDefs.KW_DEFAULT_TIME_TO_LIVE, CFMetaData.DEFAULT_DEFAULT_TIME_TO_LIVE))
-                   .populateIoCacheOnFlush(getPropertyBoolean(CFPropDefs.KW_POPULATE_IO_CACHE_ON_FLUSH, CFMetaData.DEFAULT_POPULATE_IO_CACHE_ON_FLUSH))
-                   .triggerClass(getPropertySet(CFPropDefs.KW_TRIGGER_CLASS, null));
+                   .populateIoCacheOnFlush(getPropertyBoolean(CFPropDefs.KW_POPULATE_IO_CACHE_ON_FLUSH, CFMetaData.DEFAULT_POPULATE_IO_CACHE_ON_FLUSH));
 
             // CQL2 can have null keyAliases
             if (keyAlias != null)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/src/java/org/apache/cassandra/cql3/CFPropDefs.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/CFPropDefs.java b/src/java/org/apache/cassandra/cql3/CFPropDefs.java
index 2c0ad0d..3167c9e 100644
--- a/src/java/org/apache/cassandra/cql3/CFPropDefs.java
+++ b/src/java/org/apache/cassandra/cql3/CFPropDefs.java
@@ -152,8 +152,6 @@ public class CFPropDefs extends PropertyDefinitions
         cfm.speculativeRetry(CFMetaData.SpeculativeRetry.fromString(getString(KW_SPECULATIVE_RETRY, cfm.getSpeculativeRetry().toString())));
         cfm.memtableFlushPeriod(getInt(KW_MEMTABLE_FLUSH_PERIOD, cfm.getMemtableFlushPeriod()));
         cfm.populateIoCacheOnFlush(getBoolean(KW_POPULATE_IO_CACHE_ON_FLUSH, cfm.populateIoCacheOnFlush()));
-        if (hasProperty(KW_TRIGGER_CLASS))
-            cfm.triggerClass(getSet(KW_TRIGGER_CLASS, cfm.getTriggerClass()));
 
         if (compactionStrategyClass != null)
         {

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/src/java/org/apache/cassandra/cql3/Cql.g
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/Cql.g b/src/java/org/apache/cassandra/cql3/Cql.g
index 913f6ea..71c6ae3 100644
--- a/src/java/org/apache/cassandra/cql3/Cql.g
+++ b/src/java/org/apache/cassandra/cql3/Cql.g
@@ -193,6 +193,8 @@ cqlStatement returns [ParsedStatement stmt]
     | st20=alterUserStatement          { $stmt = st20; }
     | st21=dropUserStatement           { $stmt = st21; }
     | st22=listUsersStatement          { $stmt = st22; }
+    | st23=createTriggerStatement      { $stmt = st23; }
+    | st24=dropTriggerStatement      { $stmt = st24; }
     ;
 
 /*
@@ -488,6 +490,22 @@ createIndexStatement returns [CreateIndexStatement expr]
     ;
 
 /**
+ * CREATE TRIGGER [triggerName] ON columnFamily (columnName) EXECUTE (class, class);
+ */
+createTriggerStatement returns [CreateTriggerStatement expr]
+    : K_CREATE K_TRIGGER (tn=IDENT) K_ON cf=columnFamilyName K_USING tc1=STRING_LITERAL
+      { $expr = new CreateTriggerStatement(cf, $tn.text, $tc1.text); }
+    ;
+
+/**
+ * DROP TRIGGER [triggerName] ON columnFamily (columnName);
+ */
+dropTriggerStatement returns [DropTriggerStatement expr]
+    : K_DROP K_TRIGGER (tn=IDENT) K_ON cf=columnFamilyName
+      { $expr = new DropTriggerStatement(cf, $tn.text); }
+    ;
+
+/**
  * ALTER KEYSPACE <KS> WITH <property> = <value>;
  */
 alterKeyspaceStatement returns [AlterKeyspaceStatement expr]
@@ -911,6 +929,7 @@ unreserved_function_keyword returns [String str]
         | K_PASSWORD
         | K_EXISTS
         | K_CUSTOM
+        | K_TRIGGER
         ) { $str = $k.text; }
     | t=native_type { $str = t.toString(); }
     ;
@@ -1010,6 +1029,8 @@ K_EXISTS:      E X I S T S;
 K_MAP:         M A P;
 K_LIST:        L I S T;
 
+K_TRIGGER:     T R I G G E R;
+
 // Case-insensitive alpha characters
 fragment A: ('a'|'A');
 fragment B: ('b'|'B');

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bf6e155/src/java/org/apache/cassandra/cql3/PropertyDefinitions.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/PropertyDefinitions.java b/src/java/org/apache/cassandra/cql3/PropertyDefinitions.java
index 82a1b82..ba83e45 100644
--- a/src/java/org/apache/cassandra/cql3/PropertyDefinitions.java
+++ b/src/java/org/apache/cassandra/cql3/PropertyDefinitions.java
@@ -76,16 +76,6 @@ public class PropertyDefinitions
         return (Map<String, String>)val;
     }
 
-    protected Set<String> getSet(String name, Set<String> defaultValue) throws SyntaxException
-    {
-        Object val = properties.get(name);
-        if (val == null)
-            return defaultValue;
-        if (!(val instanceof Set))
-            throw new SyntaxException(String.format("Invalid value for property '%s'", name));
-        return (Set<String>) val;
-    }
-
     public Boolean hasProperty(String name)
     {
         return properties.containsKey(name);