Changelog of @hackage/cql-io 2.0.0

2.0.0

  • Support multiple control connections with an upper limit and policy-controlled priority.
  • Cabal file improvements: bounds, version, etc.
  • Switch from unmaintained cryptonite to crypton
  • Add sufficient API tools for token-routing aware policy:
    • Accessors to lookup the replication for a keyspace, and to get the replicas for a given prepared query and its query values.
  • Pass prepared query and values to policy when selecting host
  • Track replication information for keyspaces and nodes
  • Better handling of prepared queries: Prevent re-prepare if the user has eagerly prepared a query.
  • Better code sharing between default policies.
  • Host events to pass Hosts, not addresses. This allows policies to better handle ups and downs, as well as re-numbering. It makes it easier to write a policy that prefers a given DC.
  • Track peers more carefully, and track them via UUID, not address.
  • Allow connection upgrading via min-max protocol version. Instead of setting a fixed protocol version, allow setting a min and max, and upgrade when possible.

Breaking Changes:

  • Policy has a new priority function
  • Policy Events now have Hosts instead of addresses, except for the new AddrDown for the case of a HostDown CQL event where the Host in question can't be found.
  • Policy select function accepts an additional argument with token-based routing information if it is available.
  • Settings has _minProtoVer and _maxProtoVer instead of _protoVersion
  • Settings has an additional field _maxControlConnections

Porting Guide: If using one of the included policies, the only necessary change should be to set a minimum and maximum protocol versions instead of a single version. If not using an included policy, an existing policy can be ported by ignoring the additional argument to select, and by adjusting the event handler to handle Hosts rather than addresses. Hosts have an address field, so porting should be straightforward. However, the changed policy API makes it possible to have a token aware routing policy. It's worth taking a look at that while porting. The improved HostEvent API should make it easier to handle host renumbering more gracefully as well.

1.1.1

  • Compatibility with network >= 3.

1.1.0

  • Improve configuration of retry settings and refactor exceptions (https://gitlab.com/twittner/cql-io/issues/13).
  • Document and export the 'getResult' function alongside the low-level query API.
  • Replace monad-control with unliftio.
  • Remove dependency on tinylog, introducing a minimal logging interface that can be hooked up to any logging library. Tinylog integration has moved to the new cql-io-tinylog library.

1.0.1.1

  • Add more documentation on queries.

1.0.1

  • Address an issue whereby Cassandra 'Error' responses might be mistakenly thrown by the (internal) withRetries function, possibly leading to problems with the automatic (re-)preparation of prepared queries upon 'Unprepared' server responses.

1.0.0

  • Add support for CQL V4 binary protocol.
  • Remove support for CQL V2 binary protocol.
  • Add support for SASL-based authentication handlers.
  • Bugfix: Retries for error responses were not handled correctly.
  • Update and extend test suite.
  • Require cql >= 4.0

0.16.0

  • Update Cabal settings to allow cql >= 3.1

0.15.2

  • Update async dependency

0.15.1

  • Use retry >= 0.7 instead of internal module

0.15.0

  • Add experimental TLS support

0.14.5

  • Add trans to execute "lightweight transactions"

0.14.4

  • Update dependencies

0.14.3

  • Bugfixes

0.14.2

  • Export PrepareStrategy from Database.CQL.IO

0.14.1

  • Support for prepared queries
  • Bugfixes
  • Control.Retry module update to match version 0.6

0.13.2

  • Retry on IOException
  • Update dependencies

0.13.1

  • Support monad-control 1.*

0.13.0

  • Add setMaxRecvBuffer option

0.12.2

  • Update dependencies

0.12.1

  • Update dependencies

0.12.0

  • Remove wait-queue
  • Add more type-class instances

0.10.0

  • Add MonadClient type-class
  • Add retry settings

0.9.7

  • Bugfix release

0.9.6

  • Initial release