All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased - ReleaseDate
- query/cursor: add
RowCursor::{decoded_bytes,received_bytes}methods (#169).
- query/cursor: improve performance of
RowCursor::next()(#169).
- mock: work with the advanced time via
tokio::time::advance()(#165).
0.13.0 - 2024-09-27
- query: add
Query::sql_display()(#155). - client: add
Client::with_product_info()(#135). - client: add the
User-Agentheader to all requests (#135).
- MSRV is now 1.70 due to changes in hyper-rustls v0.27.3.
- tls: revise HTTPS-related features, see README for details (#140,#141,#156).
- query: support
??for escaping the?symbol in SQL (#154).
0.12.2 - 2024-08-20
- Now this crate is pure Rust, no more C/C++ dependencies.
- insert: increase max size of frames to improve throughput (#130).
- compression: replace
lz4sys binding withlz4-flex(pure Rust). - compression: replace
clickhouse-rs-cityhash-syssys binding withcityhash-rs(pure Rust) (#107).
- compression:
Compression::Lz4Hcis deprecated and becomes an alias toCompression::Lz4.
0.12.1 - 2024-08-07
- query/bind: support
Optioninquery.bind(arg)(#119, #120). - client:
Client::with_header()to provide custom headers (#98, #108). - query: added
Query::with_option()similar toClient::with_option()(#123). - insert: added
Insert::with_option()similar toClient::with_option()(#123). - inserter: added
Inserter::with_option()similar toClient::with_option()(#123).
- insert: the outgoing request is now created after the first
Insert::writecall instead ofInsert::new(#123).
0.12.0 - 2024-07-16
- derive: support
serde::skip_deserializing(#83). - insert: apply options set on the client (#90).
- inserter: can be limited by size, see
Inserter::with_max_bytes(). - inserter:
Inserter::pending()to get stats about still being inserted data. - inserter:
Inserter::force_commit()to commit and insert immediately. - mock: impl
Defaultinstance forMock.
- BREAKING bump MSRV to 1.67.
- BREAKING replace the
tlsfeature withnative-tlsandrustls-tlsthat must be enabled explicitly now. - BREAKING http:
HttpClientAPI is changed due to moving to hyper v1. - BREAKING inserter: move under the
inserterfeature. - BREAKING inserter: there is no default limits anymore.
- BREAKING inserter:
Inserter::writeis synchronous now. - BREAKING inserter: rename
entriestorows. - BREAKING drop the
wa-37420feature. - BREAKING remove deprecated items.
- BREAKING mock:
provide(),watch()andwatch_only_events()now accept iterators instead of streams. - inserter: improve performance of time measurements by using
quanta. - inserter: improve performance if the time limit isn't used.
- derive: move to syn v2.
- mock: return a request if no handler is installed (#89, #91).
- watch: support a new syntax.
- uuid: possible unsoundness.
- query: avoid panics during
Query::bind()calls (#103).
0.11.6 - 2023-09-27
- client: accept HTTPs urls if
tlsfeature is enabled (#58).
0.11.5 - 2023-06-12
0.11.4 - 2023-05-14
- query:
Query::fetch_optional().
- query: increase performance up to 40%.
0.11.3 - 2023-02-19
- client: support HTTPS (#54).
- query: improve throughput (~8%).
- cursor: handle errors sent at the end of a response (#56).
0.11.2 - 2023-01-03
- insert:
with_timeoutsto manage timeouts. - inserter:
with_timeoutsandset_timeoutsto manage timeouts.
- insert: improve throughput (~30%).
- inserter: set a default value of
max_entriesto 500_000.
0.11.1 - 2022-11-25
- ipv4:
serde::ipv4for ser/de theIPv4type to/fromIpv4Addr. Note thatIPv6requires no annotations. - time:
serde::time::datetime(64)for ser/de thetime::OffsetDateTimetype to/fromDateTimeandDateTime64. - time:
serde::time::date(32)for ser/de thetime::Datetype to/fromDateandDate32. - serde: add
::optionvariants to supportOption<_>.
- uuid: move to the
serdesubmodule.
0.11.0 - 2022-11-10
- compression: implement Lz4/Lz4Hc compression modes for
INSERTs (#39). - insert: the
wa-37420feature to avoid ClickHouse#37420. - inserter: new method
Inserter::time_left(). - uuid: the
uuidfeature and a corresponding module to ser/deuuid::Uuid(#26).
- BREAKING decompression: HTTP compression (gzip, zlib and brotli) isn't available anymore, only Lz4.
- inserter: skip timer ticks if
INSERTis too long (#20).
0.10.0 - 2022-01-18
- client:
Client::with_http_clientto use customhyper::Client, e.g. for https (#27).
- watch: run
WATCHqueries withmax_execution_time=0. - bind: implement
Bindfor allSerializeinstances (#33).
- Implement
Primitiveforf64(#31).
0.9.3 - 2021-12-21
- Implement
Primitiveforf64andf32(#29).
- Reset quantities on errors to support reusing
Inserterafter errors (#30).
0.9.2 - 2021-11-01
- HTTP Keep-alive timeout is restricted to 2s explicitly.
- watch: make a cursor cancellation safe.
0.9.1 - 2021-10-25
- mock: add
record_ddlhandler to test DDL queries. - mock: add
watchandwatch_only_eventshandlers to test WATCH queries.
0.9.0 - 2021-10-25
- query: support borrowed long strings (#22).
- query: read the whole response of DDL queries.
- BREAKING: watch: require the
watchfeature. - BREAKING: watch: only struct rows are allowed because JSON requires names.
- query: queries with invalid URLs fail with
Error::InvalidParams. - watch: use
JSONEachRowWithProgressbecause of ClickHouse#22996 (#23).
0.8.1 - 2021-08-26
0.8.0 - 2021-07-28
RowBinarySerializer::is_human_readable()returnsfalse.
0.7.2 - 2021-05-07
Watch::refresh()to specifyREFRESHclause.
derive(Row): handle raw identifiers.
0.7.1 - 2021-06-29
- Get rid of "socket is not connected" errors.
- Set TCP keepalive to 60 seconds.
0.7.0 - 2021-05-31
- Replace
reflection::Reflectionwithclickhouse::Row. It's enough to implementRowfor top-levelstructs only.
#[derive(Row)]
0.6.8 - 2021-05-28
- docs: enable the
doc_cfgfeature.
0.6.7 - 2021-05-28
- docs: show features on docs.rs.
- Now
test-utilimplieshyper/server.
0.6.6 - 2021-05-28
testmodule (available with thetest-utilfeature).#[must_use]forQuery,Watch,InsertandInserter.
0.6.5 - 2021-05-24
&Stringvalues binding to SQL queries.
0.6.4 - 2021-05-14
- Depend explicitly on
tokio/macros.
0.6.3 - 2021-05-11
- Support for
boolvalues storage (#9). arrays' binding to SQL queries — useful atINoperators, etc (#9).Stringvalues binding to SQL queries (#9).Query::fetch_all()sql::Identifier
- Expose
query::Bind(#11). - Deprecate
Compression::encoding().
0.6.2 - 2021-04-12
- watch: bind fileds of the type param.
0.6.1 - 2021-04-09
- compression: decompress error messages (#7).
0.6.0 - 2021-03-24
- Use tokio v1, hyper v0.14, bytes v1.
0.5.1 - 2020-11-22
- decompression: lz4.
0.5.0 - 2020-11-19
- decompression: gzip, zlib and brotli.
0.4.0 - 2020-11-17
Query::fetch_one(),Watch::fetch_one().Query::fetch()as a replacement forQuery::rows().Watch::fetch()as a replacement forWatch::rows().Watch::only_events().fetch()as a replacement forWatch::events().
ErrorisStdError + Send + Sync + 'staticnow.
0.3.0 - 2020-10-28
- Expose cursors (
query::RowCursor,watch::{RowCursor, EventCursor}).
0.2.0 - 2020-10-14
Client::inserter()for infinite inserting into tables.Client::watch()forLIVE VIEWrelated queries.
- Renamed
Query::fetch()toQuery::rows(). - Use
GETrequests forSELECTstatements.
0.1.0 - 2020-10-14
- Support basic types.
Client::insert()for inserting into tables.Client::query()for selecting from tables and DDL statements.