!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-InferedA (ServerName, Port) tuple ,A round-robin pool of cassandra connections .A localhost server with default configuration 5A single localhost server with default configuration =Create a pool of connections to a cluster of Cassandra boxes IEach box in the cluster will get up to n connections. The pool will send L queries in round-robin fashion to balance load on each box in the cluster. "Open underlying thrift connection List of servers to connect to Number of stripes to maintain Max connections per stripe -Kill each connection after this many seconds (Each pool operates on a single KeySpace       None @Use the Single wrapper when you want to refer only to the first $ coolumn of a CompositeType column. =Exclusive tag for composite column. You may tag the end of a D composite range with this to make the range exclusive. See pycassa % documentation for more information. @This typeclass defines and maps to haskell types that Cassandra E natively knows about and uses in sorting and potentially validating  column key values. CAll column keys are eventually sent to and received from Cassandra C in binary form. This typeclass allows us to map some Haskell type @ definitions to their binary representation. The correct binary 5 serialization is handled for you behind the scenes. DFor simplest cases, just use one of the string-like instances, e.g.  ,  or !. Please keep in mind that these ' are just mapped to untyped BytesType. 0Remember that for special column types, such as   , to have @ any effect, your ColumnFamily must have been created with that ' comparator or validator. Otherwise you're just encoding/ decoding = integer values without any Cassandra support for sorting or  correctness. EThe Python library pycassa has a pretty good tutorial to learn more. >Tuple instances support fixed ComponentType columns. Example: P insert "testCF" "row1" [packCol ((TLong 124, TAscii "Hello"), "some content")] >Composite types - see Cassandra or pycassa docs to understand Use the 0 wrapper when querying only with the first of a " two or more field CompositeType. Encode and decode as Utf8  <Pack as an 8 byte unsigned number; negative signs are lost. #Pack as an 8 byte number - same as   Pack as a 4 byte number 3 !"#$%&'()*+,-./01234 !"#$%&'()*+,-./01234234/01,-.&'()*+#$% !" !"#$%&'()*+,-./01234 Safe-Infered5IA typeclass to enable using any string-like type for row and column keys B+A full row is simply a sequence of columns CDA Column is either a single key-value pair or a SuperColumn with an % arbitrary number of key-value pairs G6Last update timestamp; will be overridden during write/ update ops H2A TTL after which Cassandra will erase the column NOrder in a range query QA column selector/filter statement for queries. CRemember that SuperColumns are always fully deserialized, so we don't offer " a way to filter columns within a I. >Column names and ranges are specified by any type that can be * packed into a Cassandra column using the  typeclass. R,Return a range of columns or super-columns. W1When deleting specific columns in a super column X:Return specific columns or super-columns depending on the M YReturn everything in B Z5Encodes the Key vs. Token options in the thrift API. \0 ranges are just plain intuitive range queries.  [; ranges are also inclusive, but they wrap around the ring. ]A L range selector to use with getMulti. ^GA range of keys to get. Remember that RandomPartitioner ranges may not 3 mean much as keys are randomly assigned to nodes. _Just a list of keys to get a#A default starting point for range Q. Use this so you  don'8t run into ambiguous type variables when using Nothing. X range = Range (Nothing :: Maybe ByteString) (Nothing :: Maybe ByteString) Regular 1024 f$A short-hand for creating key-value C values. This is , pretty low level; you probably want to use packCol. kFCassandra is VERY sensitive to its timestamp values. As a convention, ' timestamps are always in microseconds l#Raise an error if conversion fails AFor easy composite keys, just serialize your data type to a list  of bytestrings, we'/ll concat them and turn them into column keys. A56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl856789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl8]_^Z\[`QYXWRSTUVabcNPOdeMLKJCIDEFGHBfghij8A@?>=<;:9k567l"5678 A@?>=<;:9BCIDEFGHJKLMNPOQYXWRSTUVZ\[]_^`abcdefghijklNone n0All Cassy operations are designed to run inside n  context. We provide a default concrete m datatype, but you can simply 1 make your own application monads an instance of n 8 for conveniently using all operations of this package. <Please keep in mind that all Cassandra operations may raise  8s at any point in time. pBMain running function when using the ad-hoc Cas monad. Just write # your cassandra actions within the m monad and supply them with  a  to execute. qGet a single key-column value. r(An arbitrary get operation - slice with Q s Do multiple rs in one DB hit t"Insert an entire row into the db. AThis will do as many round-trips as necessary to insert the full C row. Please keep in mind that each column and each column of each 0 super-column is sent to the server one by one. L insert "testCF" "row1" ONE [packCol ("column key", "some column content")] uPack key-value pair into C' form ready to be written to Cassandra vUnpack a Cassandra C# into a more convenient (k,v) form wAPack a column key into binary, ready for submission to Cassandra xHDelete an entire row, specific columns or a specific sub-set of columns  within a SuperColumn. y:Wrap exceptions of the underlying thrift library into the  exception types defined here. zMake exceptions implicit. mnopqRow key Column/SuperColumn key; see  for what it can be. Use  ByteString in the simple case.  Read quorum rin ColumnFamily Row key to get Slice columns with selector s(A selection of rows to fetch in one hit &Subject to column selector conditions A Map from Row keys to Bs is returned tRow key *best way to make these columns is through packCol uvwxIn M Key to be deleted Columns to be deleted yzj !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_aefklmnopqrstuvwxyzjnompqrstxQYXWRSTUVaNPOe]_^Z\[8A@?>=<;:9kzyMLKJCIDEFGHfuvwB567l234/01,-.&'()*+#$% !"mnopqrstuvwxyz Safe-Infered(Possible outcomes of a modify operation HA modify function that will fetch a specific column, apply modification 4 function on it and save results back to Cassandra. A b7 side value is returned for computational convenience. CThis is intended to be a workhorse function, in that you should be D able to do all kinds of relatively straightforward operations just  using this function. This method may throw a 8 for all exceptions other than  A. Same as " but does not offer a side value. This method may throw a 8 for all exceptions other than  A. (An arbitrary get operation - slice with Q. @Internally based on Basic.get. Table is assumed to be a regular A ColumnFamily and contents of returned columns are cast into the  target type.  A version of / that discards the column names for the common D scenario. Useful because you would otherwise be forced to manually * supply type signatures to get rid of the  ambiguity. =Get a slice of columns from multiple rows at once. Note that E since we are auto-serializing from JSON, all the columns must be of  the same data type. &Get a single column from a single row  Same as the  in the  module, except that A it throws an exception rather than returning an explicit Either  value. {|}~!Column name; anything in CasType  Read quorum  Write quorum #Modification function. Called with  the value if present,   otherwise. Return the decided  and its execution outcome !Column name; anything in CasType  Read quorum  Write quorum #Modification function. Called with  the value if present,   otherwise. Column name. See  for what you can use here. Content A slice selector List of key-value pairs. See ! for what key types you can use. A slice selector Column name; anything in  In M Key to be deleted Columns to be deleted a !"#$%&'()*+,-./0123456789:;<=>?@AKMNOPQRSTUVWXYZ[\aelmnop{|}~anomp~KM8A@?>=<;:9QYXWRSTUVaNPOe{}|Z\[567l234/01,-.&'()*+#$% !" {}|~               !!"#$%%&''())*++,--.//011233456789:;<=>?@ABCCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy\]^z{|}~qrpw cassy-0.4Database.Cassandra.BasicDatabase.Cassandra.PoolDatabase.Cassandra.PackDatabase.Cassandra.TypesDatabase.Cassandra.JSON CassandraBasiccassandra-thrift-0.8.5)Database.Cassandra.Thrift.Cassandra_TypesONEQUORUM LOCAL_QUORUM EACH_QUORUMALLANYTWOTHREEConsistencyLevelresource-pool-0.2.1.0 Data.Pool withResourcecHandlecFramedcProtoKeySpaceServerCPool defServer defServerscreateCassandraPool openThriftSingle ExclusiveCasType encodeCas decodeCasTUtf8getUtf8TLonggetLongTUUIDgetUUIDTIntgetIntTInt32getInt32TCounter getCounterTBytes getTBytesTAsciigetAsciiCKeytoColKey fromColKeyCassandraExceptionOperationNotSupportedConversionExceptionSchemaDisagreementExceptionAuthorizationExceptionAuthenticationExceptionTimedOutExceptionUnavailableExceptionInvalidRequestExceptionNotFoundExceptionRowColumncolKeycolValcolTScolTTL SuperColumnValue ColumnNameKey ColumnFamilyOrderReversedRegularSelectorRange rangeStartrangeEnd rangeOrder rangeLimitSupNamesColNamesAll KeyRangeType WrapAroundInclusiveRange KeySelectorKeyRangeKeys mkKeyRangerangeshowCas mkPredicate renderOrd reverseOrdercol mkThriftCol castColumncastCol castSuperColgetTime fromColKey'CasMonadCassandragetCassandraPoolrunCasgetColgetgetMultiinsertpackCol unpackColpackKeydelete wrapExceptionthrowingRowKeyModifyOperation DoNothingDeleteUpdatemodifymodify_ insertColget_bytestring-0.9.2.1Data.ByteString.Lazy.Internal ByteStringbaseGHC.BaseString text-0.11.2.3Data.Text.InternalText $fCasType(,)0$fCasTypeSingle$fCasTypeTUtf8$fCasTypeTLong $fCasTypeTInt$fCasTypeTInt32$fCasType(,,,) $fCasType(,,) $fCasType(,)$fCasType(,,,)0$fCasType(,,)0 $fCasTypeInt$fCasTypeTCounter$fCasTypeTBytes$fCasTypeTAscii$fCasTypeByteString $fCasTypeText$fCasTypeText0 $fCasType[]$fCasTypeByteString0 $fCKey[]0$fCKeyByteString$fCKeyByteString0 $fCKeyText $fCKeyText0$fCKey[]$fExceptionCassandraException$fShowSelector$fDefaultSelector$fMonadCassandraReaderT Data.MaybeJustNothing