diff --git a/Database/Cassandra/Thrift/Cassandra.hs b/Database/Cassandra/Thrift/Cassandra.hs
--- a/Database/Cassandra/Thrift/Cassandra.hs
+++ b/Database/Cassandra/Thrift/Cassandra.hs
@@ -11,7 +11,8 @@
 import Control.Exception
 import qualified Data.Map as Map
 import qualified Data.Set as Set
-import Data.Int
+import Data.Int;
+import Prelude ((==), String, Eq, Show, Ord, Maybe(..), (&&), (||), return, IO, Enum, fromEnum, toEnum, Bool(..), (++), ($), Double, (-), length)
 import Database.Cassandra.Thrift.Cassandra_Types
 import qualified Database.Cassandra.Thrift.Cassandra_Iface as Iface
 -- HELPER FUNCTIONS AND STRUCTURES --
@@ -1734,6 +1735,52 @@
   rec <- read_Describe_ring_result_fields iprot (Describe_ring_result{f_Describe_ring_result_success=Nothing,f_Describe_ring_result_ire=Nothing})
   readStructEnd iprot
   return rec
+data Describe_partitioner_args = Describe_partitioner_args deriving (Show,Eq,Ord,Typeable)
+write_Describe_partitioner_args oprot rec = do
+  writeStructBegin oprot "Describe_partitioner_args"
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Describe_partitioner_args_fields iprot rec = do
+  (_,_t410,_id411) <- readFieldBegin iprot
+  if _t410 == T_STOP then return rec else
+    case _id411 of 
+      _ -> do
+        skip iprot _t410
+        readFieldEnd iprot
+        read_Describe_partitioner_args_fields iprot rec
+read_Describe_partitioner_args iprot = do
+  readStructBegin iprot
+  rec <- read_Describe_partitioner_args_fields iprot (Describe_partitioner_args{})
+  readStructEnd iprot
+  return rec
+data Describe_partitioner_result = Describe_partitioner_result{f_Describe_partitioner_result_success :: Maybe String} deriving (Show,Eq,Ord,Typeable)
+write_Describe_partitioner_result oprot rec = do
+  writeStructBegin oprot "Describe_partitioner_result"
+  case f_Describe_partitioner_result_success rec of {Nothing -> return (); Just _v -> do
+    writeFieldBegin oprot ("success",T_STRING,0)
+    writeString oprot _v
+    writeFieldEnd oprot}
+  writeFieldStop oprot
+  writeStructEnd oprot
+read_Describe_partitioner_result_fields iprot rec = do
+  (_,_t415,_id416) <- readFieldBegin iprot
+  if _t415 == T_STOP then return rec else
+    case _id416 of 
+      0 -> if _t415 == T_STRING then do
+        s <- readString iprot
+        read_Describe_partitioner_result_fields iprot rec{f_Describe_partitioner_result_success=Just s}
+        else do
+          skip iprot _t415
+          read_Describe_partitioner_result_fields iprot rec
+      _ -> do
+        skip iprot _t415
+        readFieldEnd iprot
+        read_Describe_partitioner_result_fields iprot rec
+read_Describe_partitioner_result iprot = do
+  readStructBegin iprot
+  rec <- read_Describe_partitioner_result_fields iprot (Describe_partitioner_result{f_Describe_partitioner_result_success=Nothing})
+  readStructEnd iprot
+  return rec
 data Describe_keyspace_args = Describe_keyspace_args{f_Describe_keyspace_args_keyspace :: Maybe String} deriving (Show,Eq,Ord,Typeable)
 write_Describe_keyspace_args oprot rec = do
   writeStructBegin oprot "Describe_keyspace_args"
@@ -1744,17 +1791,17 @@
   writeFieldStop oprot
   writeStructEnd oprot
 read_Describe_keyspace_args_fields iprot rec = do
-  (_,_t410,_id411) <- readFieldBegin iprot
-  if _t410 == T_STOP then return rec else
-    case _id411 of 
-      1 -> if _t410 == T_STRING then do
+  (_,_t420,_id421) <- readFieldBegin iprot
+  if _t420 == T_STOP then return rec else
+    case _id421 of 
+      1 -> if _t420 == T_STRING then do
         s <- readString iprot
         read_Describe_keyspace_args_fields iprot rec{f_Describe_keyspace_args_keyspace=Just s}
         else do
-          skip iprot _t410
+          skip iprot _t420
           read_Describe_keyspace_args_fields iprot rec
       _ -> do
-        skip iprot _t410
+        skip iprot _t420
         readFieldEnd iprot
         read_Describe_keyspace_args_fields iprot rec
 read_Describe_keyspace_args iprot = do
@@ -1767,7 +1814,7 @@
   writeStructBegin oprot "Describe_keyspace_result"
   case f_Describe_keyspace_result_success rec of {Nothing -> return (); Just _v -> do
     writeFieldBegin oprot ("success",T_MAP,0)
-    (let {f [] = return (); f ((_kiter414,_viter415):t) = do {do {writeString oprot _kiter414;(let {f [] = return (); f ((_kiter416,_viter417):t) = do {do {writeString oprot _kiter416;writeString oprot _viter417};f t}} in do {writeMapBegin oprot (T_STRING,T_STRING,Map.size _viter415); f (Map.toList _viter415);writeMapEnd oprot})};f t}} in do {writeMapBegin oprot (T_STRING,T_MAP,Map.size _v); f (Map.toList _v);writeMapEnd oprot})
+    (let {f [] = return (); f ((_kiter424,_viter425):t) = do {do {writeString oprot _kiter424;(let {f [] = return (); f ((_kiter426,_viter427):t) = do {do {writeString oprot _kiter426;writeString oprot _viter427};f t}} in do {writeMapBegin oprot (T_STRING,T_STRING,Map.size _viter425); f (Map.toList _viter425);writeMapEnd oprot})};f t}} in do {writeMapBegin oprot (T_STRING,T_MAP,Map.size _v); f (Map.toList _v);writeMapEnd oprot})
     writeFieldEnd oprot}
   case f_Describe_keyspace_result_nfe rec of {Nothing -> return (); Just _v -> do
     writeFieldBegin oprot ("nfe",T_STRUCT,1)
@@ -1776,23 +1823,23 @@
   writeFieldStop oprot
   writeStructEnd oprot
 read_Describe_keyspace_result_fields iprot rec = do
-  (_,_t419,_id420) <- readFieldBegin iprot
-  if _t419 == T_STOP then return rec else
-    case _id420 of 
-      0 -> if _t419 == T_MAP then do
-        s <- (let {f 0 = return []; f n = do {k <- readString iprot; v <- (let {f 0 = return []; f n = do {k <- readString iprot; v <- readString iprot;r <- f (n-1); return $ (k,v):r}} in do {(_ktype427,_vtype428,_size426) <- readMapBegin iprot; l <- f _size426; return $ Map.fromList l});r <- f (n-1); return $ (k,v):r}} in do {(_ktype422,_vtype423,_size421) <- readMapBegin iprot; l <- f _size421; return $ Map.fromList l})
+  (_,_t429,_id430) <- readFieldBegin iprot
+  if _t429 == T_STOP then return rec else
+    case _id430 of 
+      0 -> if _t429 == T_MAP then do
+        s <- (let {f 0 = return []; f n = do {k <- readString iprot; v <- (let {f 0 = return []; f n = do {k <- readString iprot; v <- readString iprot;r <- f (n-1); return $ (k,v):r}} in do {(_ktype437,_vtype438,_size436) <- readMapBegin iprot; l <- f _size436; return $ Map.fromList l});r <- f (n-1); return $ (k,v):r}} in do {(_ktype432,_vtype433,_size431) <- readMapBegin iprot; l <- f _size431; return $ Map.fromList l})
         read_Describe_keyspace_result_fields iprot rec{f_Describe_keyspace_result_success=Just s}
         else do
-          skip iprot _t419
+          skip iprot _t429
           read_Describe_keyspace_result_fields iprot rec
-      1 -> if _t419 == T_STRUCT then do
+      1 -> if _t429 == T_STRUCT then do
         s <- (read_NotFoundException iprot)
         read_Describe_keyspace_result_fields iprot rec{f_Describe_keyspace_result_nfe=Just s}
         else do
-          skip iprot _t419
+          skip iprot _t429
           read_Describe_keyspace_result_fields iprot rec
       _ -> do
-        skip iprot _t419
+        skip iprot _t429
         readFieldEnd iprot
         read_Describe_keyspace_result_fields iprot rec
 read_Describe_keyspace_result iprot = do
@@ -1818,29 +1865,29 @@
   writeFieldStop oprot
   writeStructEnd oprot
 read_Describe_splits_args_fields iprot rec = do
-  (_,_t434,_id435) <- readFieldBegin iprot
-  if _t434 == T_STOP then return rec else
-    case _id435 of 
-      1 -> if _t434 == T_STRING then do
+  (_,_t444,_id445) <- readFieldBegin iprot
+  if _t444 == T_STOP then return rec else
+    case _id445 of 
+      1 -> if _t444 == T_STRING then do
         s <- readString iprot
         read_Describe_splits_args_fields iprot rec{f_Describe_splits_args_start_token=Just s}
         else do
-          skip iprot _t434
+          skip iprot _t444
           read_Describe_splits_args_fields iprot rec
-      2 -> if _t434 == T_STRING then do
+      2 -> if _t444 == T_STRING then do
         s <- readString iprot
         read_Describe_splits_args_fields iprot rec{f_Describe_splits_args_end_token=Just s}
         else do
-          skip iprot _t434
+          skip iprot _t444
           read_Describe_splits_args_fields iprot rec
-      3 -> if _t434 == T_I32 then do
+      3 -> if _t444 == T_I32 then do
         s <- readI32 iprot
         read_Describe_splits_args_fields iprot rec{f_Describe_splits_args_keys_per_split=Just s}
         else do
-          skip iprot _t434
+          skip iprot _t444
           read_Describe_splits_args_fields iprot rec
       _ -> do
-        skip iprot _t434
+        skip iprot _t444
         readFieldEnd iprot
         read_Describe_splits_args_fields iprot rec
 read_Describe_splits_args iprot = do
@@ -1853,22 +1900,22 @@
   writeStructBegin oprot "Describe_splits_result"
   case f_Describe_splits_result_success rec of {Nothing -> return (); Just _v -> do
     writeFieldBegin oprot ("success",T_LIST,0)
-    (let {f [] = return (); f (_viter438:t) = do {writeString oprot _viter438;f t}} in do {writeListBegin oprot (T_STRING,length _v); f _v;writeListEnd oprot})
+    (let {f [] = return (); f (_viter448:t) = do {writeString oprot _viter448;f t}} in do {writeListBegin oprot (T_STRING,length _v); f _v;writeListEnd oprot})
     writeFieldEnd oprot}
   writeFieldStop oprot
   writeStructEnd oprot
 read_Describe_splits_result_fields iprot rec = do
-  (_,_t440,_id441) <- readFieldBegin iprot
-  if _t440 == T_STOP then return rec else
-    case _id441 of 
-      0 -> if _t440 == T_LIST then do
-        s <- (let {f 0 = return []; f n = do {v <- readString iprot;r <- f (n-1); return $ v:r}} in do {(_etype445,_size442) <- readListBegin iprot; f _size442})
+  (_,_t450,_id451) <- readFieldBegin iprot
+  if _t450 == T_STOP then return rec else
+    case _id451 of 
+      0 -> if _t450 == T_LIST then do
+        s <- (let {f 0 = return []; f n = do {v <- readString iprot;r <- f (n-1); return $ v:r}} in do {(_etype455,_size452) <- readListBegin iprot; f _size452})
         read_Describe_splits_result_fields iprot rec{f_Describe_splits_result_success=Just s}
         else do
-          skip iprot _t440
+          skip iprot _t450
           read_Describe_splits_result_fields iprot rec
       _ -> do
-        skip iprot _t440
+        skip iprot _t450
         readFieldEnd iprot
         read_Describe_splits_result_fields iprot rec
 read_Describe_splits_result iprot = do
@@ -2185,6 +2232,17 @@
   write_Describe_ring_result oprot res
   writeMessageEnd oprot
   tFlush (getTransport oprot)
+process_describe_partitioner (seqid, iprot, oprot, handler) = do
+  args <- read_Describe_partitioner_args iprot
+  readMessageEnd iprot
+  rs <- return (Describe_partitioner_result Nothing)
+  res <- (do
+    res <- Iface.describe_partitioner handler
+    return rs{f_Describe_partitioner_result_success= Just res})
+  writeMessageBegin oprot ("describe_partitioner", M_REPLY, seqid);
+  write_Describe_partitioner_result oprot res
+  writeMessageEnd oprot
+  tFlush (getTransport oprot)
 process_describe_keyspace (seqid, iprot, oprot, handler) = do
   args <- read_Describe_keyspace_args iprot
   readMessageEnd iprot
@@ -2229,6 +2287,7 @@
   "describe_cluster_name" -> process_describe_cluster_name (seqid,iprot,oprot,handler)
   "describe_version" -> process_describe_version (seqid,iprot,oprot,handler)
   "describe_ring" -> process_describe_ring (seqid,iprot,oprot,handler)
+  "describe_partitioner" -> process_describe_partitioner (seqid,iprot,oprot,handler)
   "describe_keyspace" -> process_describe_keyspace (seqid,iprot,oprot,handler)
   "describe_splits" -> process_describe_splits (seqid,iprot,oprot,handler)
   _ -> do
diff --git a/Database/Cassandra/Thrift/Cassandra_Client.hs b/Database/Cassandra/Thrift/Cassandra_Client.hs
--- a/Database/Cassandra/Thrift/Cassandra_Client.hs
+++ b/Database/Cassandra/Thrift/Cassandra_Client.hs
@@ -1,12 +1,13 @@
 {-# LANGUAGE DeriveDataTypeable #-}
-module Database.Cassandra.Thrift.Cassandra_Client(login,get,get_slice,multiget,multiget_slice,get_count,get_range_slice,get_range_slices,insert,batch_insert,remove,batch_mutate,get_string_property,get_string_list_property,describe_keyspaces,describe_cluster_name,describe_version,describe_ring,describe_keyspace,describe_splits) where
+module Database.Cassandra.Thrift.Cassandra_Client(login,get,get_slice,multiget,multiget_slice,get_count,get_range_slice,get_range_slices,insert,batch_insert,remove,batch_mutate,get_string_property,get_string_list_property,describe_keyspaces,describe_cluster_name,describe_version,describe_ring,describe_partitioner,describe_keyspace,describe_splits) where
 import Data.IORef
 import Thrift
 import Data.Typeable ( Typeable )
 import Control.Exception
 import qualified Data.Map as Map
 import qualified Data.Set as Set
-import Data.Int
+import Data.Int;
+import Prelude ((==), String, Eq, Show, Ord, Maybe(..), (&&), (||), return, IO, Enum, fromEnum, toEnum, Bool(..), (++), ($), Double, (-))
 import Database.Cassandra.Thrift.Cassandra_Types
 import Database.Cassandra.Thrift.Cassandra 
 seqid = newIORef 0
@@ -520,6 +521,29 @@
         Nothing -> return ()
         Just _v -> throw _v
       throw (AppExn AE_MISSING_RESULT "describe_ring failed: unknown result")
+describe_partitioner (ip,op) = do
+  send_describe_partitioner op
+  recv_describe_partitioner ip
+send_describe_partitioner op = do
+  seq <- seqid
+  seqn <- readIORef seq
+  writeMessageBegin op ("describe_partitioner", M_CALL, seqn)
+  write_Describe_partitioner_args op (Describe_partitioner_args{})
+  writeMessageEnd op
+  tFlush (getTransport op)
+recv_describe_partitioner ip = do
+  (fname, mtype, rseqid) <- readMessageBegin ip
+  if mtype == M_EXCEPTION then do
+    x <- readAppExn ip
+    readMessageEnd ip
+    throw x
+    else return ()
+  res <- read_Describe_partitioner_result ip
+  readMessageEnd ip
+  case f_Describe_partitioner_result_success res of
+    Just v -> return v
+    Nothing -> do
+      throw (AppExn AE_MISSING_RESULT "describe_partitioner failed: unknown result")
 describe_keyspace (ip,op) arg_keyspace = do
   send_describe_keyspace op arg_keyspace
   recv_describe_keyspace ip
diff --git a/Database/Cassandra/Thrift/Cassandra_Consts.hs b/Database/Cassandra/Thrift/Cassandra_Consts.hs
--- a/Database/Cassandra/Thrift/Cassandra_Consts.hs
+++ b/Database/Cassandra/Thrift/Cassandra_Consts.hs
@@ -11,8 +11,9 @@
 import Control.Exception
 import qualified Data.Map as Map
 import qualified Data.Set as Set
-import Data.Int
+import Data.Int;
+import Prelude ((==), String, Eq, Show, Ord, Maybe(..), (&&), (||), return, IO, Enum, fromEnum, toEnum, Bool(..), (++), ($), Double, (-))
 import Database.Cassandra.Thrift.Cassandra_Types
 vERSION :: String
-vERSION = "2.1.0"
+vERSION = "2.2.0"
 
diff --git a/Database/Cassandra/Thrift/Cassandra_Iface.hs b/Database/Cassandra/Thrift/Cassandra_Iface.hs
--- a/Database/Cassandra/Thrift/Cassandra_Iface.hs
+++ b/Database/Cassandra/Thrift/Cassandra_Iface.hs
@@ -5,7 +5,8 @@
 import Control.Exception
 import qualified Data.Map as Map
 import qualified Data.Set as Set
-import Data.Int
+import Data.Int;
+import Prelude ((==), String, Eq, Show, Ord, Maybe(..), (&&), (||), return, IO, Enum, fromEnum, toEnum, Bool(..), (++), ($), Double, (-))
 import Database.Cassandra.Thrift.Cassandra_Types
 
 class Cassandra_Iface a where
@@ -27,5 +28,6 @@
   describe_cluster_name :: a -> IO String
   describe_version :: a -> IO String
   describe_ring :: a -> Maybe String -> IO [TokenRange]
+  describe_partitioner :: a -> IO String
   describe_keyspace :: a -> Maybe String -> IO (Map.Map String (Map.Map String String))
   describe_splits :: a -> Maybe String -> Maybe String -> Maybe Int -> IO [String]
diff --git a/Database/Cassandra/Thrift/Cassandra_Types.hs b/Database/Cassandra/Thrift/Cassandra_Types.hs
--- a/Database/Cassandra/Thrift/Cassandra_Types.hs
+++ b/Database/Cassandra/Thrift/Cassandra_Types.hs
@@ -11,7 +11,8 @@
 import Control.Exception
 import qualified Data.Map as Map
 import qualified Data.Set as Set
-import Data.Int
+import Data.Int;
+import Prelude ((==), String, Eq, Show, Ord, Maybe(..), (&&), (||), return, IO, Enum, fromEnum, toEnum, Bool(..), (++), ($), Double, (-), length)
 data ConsistencyLevel = ZERO|ONE|QUORUM|DCQUORUM|DCQUORUMSYNC|ALL|ANY  deriving (Show,Eq, Typeable, Ord)
 instance Enum ConsistencyLevel where
   fromEnum t = case t of
diff --git a/cassandra-thrift.cabal b/cassandra-thrift.cabal
--- a/cassandra-thrift.cabal
+++ b/cassandra-thrift.cabal
@@ -1,13 +1,13 @@
 name: cassandra-thrift 
-version: 0.0.4
+version: 0.0.5
 license: OtherLicense 
 cabal-version: >= 1.4
-author: Thrift v.0.2.0 
+author: Thrift v.0.3.0 
 maintainer: kirk@glyphsoftware.com 
 stability: alpha
 synopsis: thrift bindings to the cassandra database 
 description:
-  The Cassandra (v.0.6.3) database bindings, generated using the Thrift (v.0.2) compliler, Released under the Apache 2.0 license. 
+  The Cassandra (v.0.6.4) database bindings, generated using the Thrift (v.0.3) compliler, Released under the Apache 2.0 license. 
     
 category: Database 
 build-type: Simple
