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
- Variant data type support (#170).
- query/cursor: return
NotEnoughData
if a row is unparsed when the stream ends (#185).
0.13.1 - 2024-10-21
- 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-Agent
header 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
lz4
sys binding withlz4-flex
(pure Rust). - compression: replace
clickhouse-rs-cityhash-sys
sys binding withcityhash-rs
(pure Rust) (#107).
- compression:
Compression::Lz4Hc
is deprecated and becomes an alias toCompression::Lz4
.
0.12.1 - 2024-08-07
- query/bind: support
Option
inquery.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::write
call 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
Default
instance forMock
.
- BREAKING bump MSRV to 1.67.
- BREAKING replace the
tls
feature withnative-tls
andrustls-tls
that must be enabled explicitly now. - BREAKING http:
HttpClient
API is changed due to moving to hyper v1. - BREAKING inserter: move under the
inserter
feature. - BREAKING inserter: there is no default limits anymore.
- BREAKING inserter:
Inserter::write
is synchronous now. - BREAKING inserter: rename
entries
torows
. - BREAKING drop the
wa-37420
feature. - 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
tls
feature 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_timeouts
to manage timeouts. - inserter:
with_timeouts
andset_timeouts
to manage timeouts.
- insert: improve throughput (~30%).
- inserter: set a default value of
max_entries
to 500_000.
0.11.1 - 2022-11-25
- ipv4:
serde::ipv4
for ser/de theIPv4
type to/fromIpv4Addr
. Note thatIPv6
requires no annotations. - time:
serde::time::datetime(64)
for ser/de thetime::OffsetDateTime
type to/fromDateTime
andDateTime64
. - time:
serde::time::date(32)
for ser/de thetime::Date
type to/fromDate
andDate32
. - serde: add
::option
variants to supportOption<_>
.
- uuid: move to the
serde
submodule.
0.11.0 - 2022-11-10
- compression: implement Lz4/Lz4Hc compression modes for
INSERT
s (#39). - insert: the
wa-37420
feature to avoid ClickHouse#37420. - inserter: new method
Inserter::time_left()
. - uuid: the
uuid
feature 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
INSERT
is too long (#20).
0.10.0 - 2022-01-18
- client:
Client::with_http_client
to use customhyper::Client
, e.g. for https (#27).
- watch: run
WATCH
queries withmax_execution_time=0
. - bind: implement
Bind
for allSerialize
instances (#33).
- Implement
Primitive
forf64
(#31).
0.9.3 - 2021-12-21
- Implement
Primitive
forf64
andf32
(#29).
- Reset quantities on errors to support reusing
Inserter
after 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_ddl
handler to test DDL queries. - mock: add
watch
andwatch_only_events
handlers 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
watch
feature. - BREAKING: watch: only struct rows are allowed because JSON requires names.
- query: queries with invalid URLs fail with
Error::InvalidParams
. - watch: use
JSONEachRowWithProgress
because 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 specifyREFRESH
clause.
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::Reflection
withclickhouse::Row
. It's enough to implementRow
for top-levelstruct
s only.
#[derive(Row)]
0.6.8 - 2021-05-28
- docs: enable the
doc_cfg
feature.
0.6.7 - 2021-05-28
- docs: show features on docs.rs.
- Now
test-util
implieshyper/server
.
0.6.6 - 2021-05-28
test
module (available with thetest-util
feature).#[must_use]
forQuery
,Watch
,Insert
andInserter
.
0.6.5 - 2021-05-24
&String
values binding to SQL queries.
0.6.4 - 2021-05-14
- Depend explicitly on
tokio/macros
.
0.6.3 - 2021-05-11
- Support for
bool
values storage (#9). array
s' binding to SQL queries — useful atIN
operators, etc (#9).String
values 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()
.
Error
isStdError + Send + Sync + 'static
now.
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 VIEW
related queries.
- Renamed
Query::fetch()
toQuery::rows()
. - Use
GET
requests forSELECT
statements.
0.1.0 - 2020-10-14
- Support basic types.
Client::insert()
for inserting into tables.Client::query()
for selecting from tables and DDL statements.