Cassaforte is a Clojure client for
Apache Cassandra 1.2+. It is built around CQL 3 and focuses on ease
of use. You will likely find that using Cassandra from Clojure has
never been so easy.
1.3.0-beta5 is a milestone release that upgrades Cassandra Java driver
and introduces a minor feature.
Changes between 1.3.0-beta2 and 1.3.0-beta5
Cassandra Java Driver Update
Cassandra Java driver has been updated to 2.0.0-rc2.
UUID Generation Helpers
clojurewerkz.cassaforte.uuids is a new namespace that provides UUID
generation helpers:
1.3.0 is a minor feature and usability release. We recommend all users to upgrade to it.
We recommend all users to upgrade to 1.3.0 as soon as possible.
Changes between Elastisch 1.2.0 and 1.3.0
:sort Option Can Be a SortBuilder
:sort option can now be a com.elasticsearch.search.sort.SortBuilder instance
and not just a string.
Contributed by Mark Wong-VanHaren.
ElasticSearch Native Client Upgrade
Elastisch now depends on ElasticSearch native client version 0.90.7.
Bulk Indexing Fix
Elastisch no longer erroneously inserts _index and _type fields
into documents inserted via bulk API.
Contributed by Max Barnash.
Result Scrolling as Lazy Sequences
clojurewerkz.elastisch.native.document/scroll-seq and
clojurewerkz.elastisch.rest.document/scroll-seq
are new functions that accept a search query response
and return a lazy sequence of paginated search results.
This makes working with result sets that require pagination
much more natural:
Date histogram in the native client now includes :total field.
Contributed by Jim Dunn.
Fields in Search Hit Results in Native Client
Native client now returns the same value in :fields and :_fields
keys in search hits. This makes it both backwards compatible with
earlier versions and the format ElasticSearch HTTP API uses.
Bulk Index and Delete Operations Support More Options
Bulk index and delete operations support _parent and _routing
keys.
Contributed by Baptiste Fontaine.
Clojure 1.3 Support Dropped
Elastisch now requires Clojure 1.4.
Cheshire Update
Cheshire dependency has been upgraded to version 5.2.0.
Buffy is a Clojure library to working with binary data, writing complete
binary protocol implementations in Clojure, storing complex data
structures in an off-heap cache, reading binary files and doing everything
you would usually do with byte buffers.
Buffy is built on top of Netty byte buffers, which addresses many of the issues
with java.util.ByteBuffer.
Main features
Buffy enables you to access buffers in the similar way you work with
the regular Clojure data structures. You can get and set fields separately from one
another, give names to different parts of binary representation and so on:
partial deserialization (read and deserialise parts of a byte buffer)
named access (access parts of your buffer by names)
composing/decomposing from key/value pairs
pretty hexdump
many useful default types that you can combine and extend easily
Data Types
Data types used in Buffy buffers include:
primitives, such as int32, boolean, byte, short, medium, float, and long
2.0.0-beta1 is a development release
of 2.0 that has breaking API changes and introduces an important bug fix, dependency updates
and support for Riak 1.4 counters.
Changes between Welle 1.5.0 and 2.0
Welle 2.0 has breaking API changes in clojurewerkz.welle.kv functions.
Changes in K/V Function Return Values
This is a breaking API change.
Welle 2.0 changes how Riak responses are represented as Clojure maps.
Welle now will correctly preserve all vector clocks associated with multiple
siblings in the response and the response itself.
This means that welle.kv/modify will work correctly and won’t make sibling
explosions worse.
The most important part of the change is how responses are represented:
every response is an immutable map that has :result key as well as other
metadata keys (:has-value?, :has-siblings?, :modified?, :content-type and so on).
This contrasts with earlier versions, where results were returned directly by functions
such as welle.kv/fetch, it is now possible to destructure the response in order to
obtain the returned value:
1234
(require'[clojurewerkz.welle.kv:askv])(let [{:keys[result]:asm}(kv/fetchbucket-namek:r1)](comment "Do something with the result"))
Here are the keys that clojurewerkz.welle.kv/fetch returns now for every response:
:result: one or more objects returned by Riak
:vclock: vector clock of the response
:has-siblings?: true if response has siblings
:has-value?: true if response is non-empty
:modified?: false when conditional GET returned a non-modified response
:deleted?: true if this object has been deleted but there is a vclock for it
Clojure 1.3 Support Dropped
Welle no longer supports Clojure 1.3.
Counters Support (Riak 1.4+)
clojurewerkz.welle.counters is a new namespace that provides operations on Riak counters:
While creating a protocol buffer cluster client you can now provide
hosts and ports separated by a colon, e.g. “127.0.0.1:10017”. If a port is not
provided, the default port will be used.
Optional Keywordization of Keys With JSON Serialization
Automatic JSON serialization previously unconditionally converted keys to keywords.
This may be a problem for some projects, because keywords are not garbage collected.
clojurewerkz.welle.conversion/*convert-json-keys-to-keywords* is a new dynamic var that
controls this behavior. When bound to false, automatic JSON serialization won’t convert
keys to keywords.
1.3.0-rc1 is a release candidate that is compatible with 1.2.0.
Changes between Elastisch 1.3.0-beta5 and 1.3.0-rc1
Bulk Indexing Fix
Elastisch no longer erroneously inserts _index and _type fields
into documents inserted via bulk API.
Contributed by Max Barnash.
Result Scrolling as Lazy Sequences
clojurewerkz.elastisch.native.document/scroll-seq and
clojurewerkz.elastisch.rest.document/scroll-seq
are new functions that accept a search query response
and return a lazy sequence of paginated search results.
This makes working with result sets that require pagination
much more natural:
2.0.0 is a major release that targets Neo4J 2.0. It is backwards
compatible with 1.1. Note that Neo4J 2.0 contains some breaking
Cypher syntax changes.
Neocons documentation has been updated to cover the new features in Neocons 2 and Neo4J.
A group of Cypher statements can be executed in a transaction
that will be committed automatically upon success. Any error
during the execution will trigger a rollback.
clojurewerkz.neocons.rest.transaction/commit and
clojurewerkz.neocons.rest.transaction/rollback commit
and roll a transaction back, respectively.
Macro for working with a transaction
If you want a more fine grained control of working in a transaction without manually
committing or checking for exceptions, you can use the
clojurewerkz.neocons.rest.transaction/with-transaction macro.
If there any errors while processing, the transaction is rolled back.
The first argument is the variable which holds the transaction
information. The second argument to the macro is commit-on-success,
which commits the transaction there are no errors.
Constraints Support (Neo4J 2.0 Only)
clojurewerkz.neocons.rest.constraints is a new namespace that
implements Neo4J 2.0 constraints.
12345678910
(require'[clojurewerkz.neocons.rest.constraints:ascts]);; create a uniqueness constraint(cts/create-unique"Person":name);; get constraint info(cts/get-unique"Person":name);; drop a constraint(cts/drop"Person":name)
Labels Support (Neo4J 2.0 Only)
clojurewerkz.neocons.rest.labels is a new namespace that provides
support for labels in Neo4J 2.0.
It is possible to add, replace, remove and retrieve labels to/from a node.
To add labels to a node, use clojurewerkz.neocons.rest.labels/add:
clojurewerkz.neocons.rest.labels/get-all-labels is the function that lists
either all labels in the database (w/o arguments) or on a specific node
(1-arity):
123456
(require'[clojurewerkz.neocons.rest.labels:asnl])(nl/get-all-labelsnode);= [all labels](nl/get-all-labelsnode);= [labels on node]
Clojure 1.6 Compatibility Fixes
Neocons 2.0 is compatible with recent
releases of Clojure 1.6 (master).
Clojure 1.3 Support Dropped
Neocons no longer supports Clojure 1.3.
Documentation Updates
Neocons documentation has been updated to cover the new features in Neocons 2 and Neo4J: