Skip to content

v0.4.0

Compare
Choose a tag to compare
@psarna psarna released this 26 Jan 14:58
· 1869 commits to main since this release

The Scylla team is pleased to announce Scylla Rust Driver 0.4.0,
an asynchronous CQL driver for Rust, optimized for Scylla, but also compatible with Apache Cassandra!

We're also excited to shamelessly brag about:

  • over 10k downloads on crates;
  • over 200 GitHub stars!

=== Notable changes ===

Non-standard partitioners used to cause the driver to fail - it's no longer the case, a fallback token policy will be used.

Maps and sets based on B-Trees can now be used as the source of their corresponding CQL types: map and set.

Getting column specification is now also possible for iterator-based queries.

It's now possible to inspect current schema information directly from the driver. The metadata includes tables, their columns, types, column kinds (regular, static, clustering/partition key), ordering of partition key and clustering columns, UDTs, partitioner, etc. Fetching schemas can be optionally disabled when building a session.

Request ids orphaned by timeouts are now accounted for and managed. When a request times out, its request id cannot be immediately reused in order to avoid matching responses with incorrect requests (e.g. see an interesting bug lately discovered in Python CQL driver: scylladb/python-driver#106). Scylla Rust Driver now properly tracks which requests got orphaned and returns them to the pool only once it's safe to do so.

Batched requests used to fail when one or more statements turned out to be not prepared on the server side. The new heuristics tries to reprepare all missing statements and retry the execution.

Named bind markers are now supported. It's still recommended to use unnamed markers for binding variables in statements (?) since they induce less overhead, but the named syntax (:name) is now also accepted.

A visibility bug in the load balancing layer made it impossible to actually implement custom load balancing policies. It's now fixed, and custom policies can be coded by implementing the LoadBalancingPolicy trait.

A number of convenience functions were added in order to make it more ergonomic to manage query results: rows_num, rows, rows_typed, result_not_rows, rows_or_empty, rows_typed_or_empty, first_row, first_row_typed, maybe_first_row, maybe_first_row_typed, single_row, single_row_typed.

Also, as usual, many fixes, smaller amendments, examples and doc updates were applied.

Congrats to all contributors and thanks everyone for using our driver!

=======================

The source code of the driver can be found here:

The official crates.io registry entry is here:

Thank you for your attention, please do not hesitate to contact us if you have any questions, issues, feature requests, or are simply interested in our driver!

Contributors since last release:
commits|author
24 Piotr Sarna
16 Jan Ciolek
12 Piotr Dulikowski
8 Marcin Mazurek
6 Michał Sala
3 nemosupremo
3 Maciej Herdon
2 Jan Ciołek
1 Ultrabug
1 guy9
1 Creston Bunch
1 Adam Boguszewski