Overview
This release adds a new protocol version that brings support for N-dimensional arrays and faster serialization of doubles.
It stabilizes the features first introduced with version 5.0.0-rc1.
Features
- You can now ingest the
ARRAY
datatype when connected to QuestDB 9.0.0 or newer. It uses a newprotocol_version=2
. - This new protocol version is auto-negotiated when using HTTP and needs to be enabled manually for ILP/TCP.
- The new protocol version also serializes doubles (f64) as binary for better performance.
- Updated to the latest snapshot of the https://www.ccadb.org/ root TLS certificates by updating the
webpki-roots
dependency. - Internally, we've upgraded to the latest
ureq
Rust library version 3 to perform HTTP requests.
Bug Fixes
- Fixed a Windows ILP/TCP bug where some rows could be lost when the client shuts down the connection.
Breaking Changes
- Previously, you could peek into the serialized state of a
Buffer
object and it would expose a UTF-8 string.
Since protocol version 2 is now binary, the exposed data is now binary for protocol version 2
while it remains UTF-8 for protocol version 1. The C, C++ and Rust APIs have been changed to return a view into the buffered bytes.
Rust
There are also a few Rust-specific changes.
- Added optional integration with the
ndarray
crate viandarray
feature flag. - Added support for the
aws-lc
cryptographic backend for TLS and TCP auth. You can select it via feature flags. The AWS-LC backend is mutually exclusive with the Ring backend. - You can now also check if a buffer is ready to be sent via the
.check_can_flush()
method (Thank you @ischeinkman). - You can now selectively disable compiling support for ILP/TCP via feature flags.
- Thus, the
ilp-over-http
feature flag is removed: Use thesync-sender-tcp
orsync-sender-http
(or both) feature flags as needed.
Full Changelog: 4.0.5...5.0.0