Skip to content

Latest commit

 

History

History
247 lines (203 loc) · 10.7 KB

CHANGELOG.md

File metadata and controls

247 lines (203 loc) · 10.7 KB

Changelog

All notable changes to this project will be documented in this file.

This file's format is based on Keep a Changelog and this project adheres to Semantic Versioning. The version number is tracked in the file VERSION.

Changed

Added

Fixed

0.17.1 - 2022-01-24

Changed

  • Move GitHub build to GitHub Actions (was previously Travis).

Fixed

  • Removed unused decimal dependency.

0.17.0 - 2021-05-17

Changed

  • Changed Session::execute_batch and Session::execute_batch_with_payloads to take only a reference to Batch rather than consuming it.

    This is a breaking change; to update your code, simply change batch to &batch in your argument list. If this causes an error future cannot be sent between threads safely because &Batch is used across an await, you need to introduce a let before the await as follows:

    let fut = session.execute_batch(&batch);
    let result = fut.await?

0.16.0 - 2021-03-10

Added

  • Exposes separate setters for collection types on Tuple and UserType. As such, the respective set_collection and set_collection_by_name on both types have been removed. set_collection becomes set_set and set_collection_by_name becomes set_set_by_name.
  • Added Cluster::set_token_aware_routing_shuffle_replicas.
  • ConstDataType::new_user_type has been added, to allow the creation of a user data type from an existing data type.
  • Added Session::execute_with_payloads and Session::execute_batch_with_payloads to allow getting custom payloads from query and batch executions.

Breaking changes

  • Extended the lifetime of a CassResult into a Row. This is a breaking change, and may require reworking the code to satisfy the lifetime requirement that the CassResult must live longer than the Row.
  • CassCollection::new has been renamed to CassCollection::with_capacity, and CassCollection::new has been created, that no longer requires a capacity. This closely mirrors the API that the standard library collections expose, and that the item_count passed to new is merely a capacity hint for the purpose of optimization.
  • time::Duration has been replaced with std::time::Duration.

Changed

  • Change various functions to avoid the extra overhead using an intermediate CString object.
  • Switched to using parking_lot::Mutex instead of std::sync::Mutex for CassFuture coordination.
  • Implemented size_hint on ResultIterator.
  • Bumped versions of various dependencies.

Fixed

  • CassResult::set_paging_state_token was implemented incorrectly, namely, it did nothing, and has instead been replaced with CassResult::paging_state_token.
  • Statement::set_paging_state_token has been changed to take a &[u8] instead of a &str, as a paging state token isn't necessarily utf8 encoded.

0.15.1 - 2020-06-02

Added

  • Conversion functions between uuid::Uuid and this library's Uuid.

Changed

  • PreparedStatement is now considered Sync, and can be shared across threads.

Fixed

  • Remove unnecessary build.rs, making it easier to build the crate.

0.15.0 - 2020-01-28

Changed

  • Drop support for futures 0.1, and implement std::future instead, allowing you to use this this library inside async functions, allowing anything that returns a CassFuture to be awaited. This is a breaking change, and will require you to update your call-sites to either use std::future, or wrap them with a compatibility shim (e.g., futures::compat).

Added

  • Adds a new method, Cluster.connect_async that returns a future, allowing you to connect to the cluster without blocking the event loop.

[0.14.1] - 2019-11-07

Changed

  • Add code example for SSL.
  • Updated error-chain to 0.12.1 to avoid Error deprecation warnings.

Fixed

  • Provide missing doc comment, fix unused doc comment warnings.
  • Fix type signature on set_load_balance_dc_aware so it can be used.

0.14.0 - 2019-01-22

Added

  • Clone, Copy and PartialEq traits in Inet
  • Fields name and value support for UserTypeIterator (support for UDT)
  • Extra bindings for Row::get_by_name and Statement::bind_by_name

Changed

  • Debug implementation for Inet now uses its ToString implementation

Fixed

  • Value::get_inet which would always return a zeroed Inet
  • Dropping futures early could cause a segfault when using the system allocator (in Rust 1.32.0 or later).

0.13.2 - 2019-01-15

  • Avoid possible segfaults, by returning None where possible, otherwise panicking. In particular, a collection field set to NULL now returns None rather than faulting.
  • Make SchemaMeta::get_keyspace_by_name work (fix string handling bug).
  • Allow using the SetIterator for lists and tuples. Previously these could not be enumerated at all!
  • For convenience, support bind() for Lists.

0.13.1 - 2019-01-08

  • Fix stmt!() not working if Statement was not imported.

0.13.0 - 2018-12-04

  • Added new set_local_address function using the function Datastax added in cassandra-cpp-driver version 2.10.0

0.12.0 - 2018-12-04

Fixed

  • No longer leaks all CassResults.

Changed

  • Updated cassandra-cpp-sys to 0.12.
  • Updated cassandra-cpp-driver to 2.10.0
  • cql protocol version 2 is no longer supported.
  • Breaking changes: The Cassandra WriteType UKNOWN is now called UNKNOWN There is a new Cassandra error code LIB_EXECUTION_PROFILE_INVALID There is a new Cassandra value type: DURATION
  • ResultIterator now has a lifetime parameter. The underlying CassResult must live for at least as long as the iterator.
  • CassResult is no longer IntoIterator; instead &CassResult is. You must change code like for row in result to for row in &result and ensure result lives long enough.

0.11.0 - 2018-04-26

  • Remove the AsInet and FromInet traits, replacing them with suitable implementations of From.
  • Fixed buggy IPv6 conversions.
  • Inet::cass_inet_init_v4 and Inet::cass_inet_init_v6 no longer consume their arguments.
  • Tuple::set_inet() now takes an IpAddr rather than a SocketAddr.
  • Added wrapper for cass_statement_set_request_timeout.

0.10.2 - 2017-09-11

  • Move to latest (0.11) version of cassandra-cpp-sys crate.

    There should be no external impact.

0.10.1 - 2017-08-30

  • Remove unnecessary dependency on ip crate.
  • Add Copy, Clone, Hash impls for all nullary enums.
  • Specify correct Send and Sync markers for all C* types.

0.10.0 - 2017-08-03

The API changed significantly in version 0.10. Here is a summary of the main changes. (Version 0.9 was skipped, for consistency with the cassandra-cpp-sys version number.)

Errors:

  • The internal module errors and the underlying cassandra-cpp-sys crate are no longer exposed in the API. All necessary types are defined in this crate's root module.
  • All errors are now reported consistently using a single newly-defined Error type.
    • The crate makes every effort to return an error rather than panicking.
    • CassError, CassErrorResult, and others are replaced by Error and CassErrorCode.
    • Several return types have changed from T to Result<T, Error>.

Futures:

  • There is only a single future type, CassFuture, and it implements the Rust/Tokio futures API. It interoperates smoothly with existing futures code.
    • Future, CloseFuture, ResultFuture, PreparedFuture, SessionFuture are all subsumed.
    • wait is replaced with Future::wait; other methods have standard analogues as well. See the futures documentation for details.
    • Callbacks can no longer be set explicitly on a future; instead the normal futures mechanisms (e.g., and_then) should be used.

Values:

  • The Column type is retired; instead use Value.
  • Some Value getters have new names for consistency, e.g., get_flt and get_dbl are now get_f32 and get_f64 respectively.
  • Value::get_string now gets a String, not a &str; you can get a &str with get_str.
  • The "magic" auto-converting Row getters get_col and get_col_by_name are renamed to get and get_by_name respectively. This is to avoid confusion with get_column, which is something else entirely (it gets a Value from a Row).
  • Values have a new is_null method to allow retrieving null values.
  • UUIDs now support Eq and Ord.

Miscellaneous types:

  • Several types which wrapped cassandra-cpp-sys types now have enums of their own, complete with implementations of Debug, Eq, PartialEq, Display, and FromStr. This includes BatchType, CassErrorCode, Consistency, LogLevel, SslVerifyFlag, and ValueType.
  • CqlProtocol is now simply an alias for an integer.
  • Contact points are now expressed as a simple string in the driver's preferred format. ContactPoints is retired.

Other:

  • Logging uses the slog crate. It is no longer possible to set your own logging callback, but you can set the slog logger.
  • Internally, the code is cleaner and smaller and some tests have been added.

0.8.2 - 2017-06-29

First release of https://github.com/Metaswitch/cassandra-rs

  • Fork package.
  • Move examples to examples directory, then make several into Rust tests.
  • Resolve all warnings.
  • Fix various panics.
  • Add Eq and Ord for Uuid.
  • Add is_null support.

0.8.1 - 2016-12-13

Last release of https://github.com/tupshin/cassandra-rs