1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
//! Rust bindings for [clickhouse-c].
//!
//! Crate reads and writes ClickHouse Native blocks and implements native TCP
//! protocol. API has three layers:
//!
//! 1. [`sys`] exposes unsafe C API.
//! 2. [`BlockReader`], [`BlockBuilder`], [`Client`], and related types provide
//! safe block and protocol operations.
//! 3. [`PosixIo`], [`AsyncClient`], and [`tls`] provide transport adapters.
//!
//! # Entry points
//!
//! * Use [`BlockReader`] and [`BlockBuilder`] for Native block streams over
//! any [`Io`] implementation.
//! * Use [`Client`] for blocking native TCP protocol.
//! * Use [`IolessClient`] to process protocol bytes with caller-managed I/O.
//! * Enable `tokio` feature and use [`AsyncClient`] for asynchronous TCP.
//! * Enable `tls` feature and use [`tls::TlsIo`] or
//! [`AsyncClient::connect_tls`] for rustls connections.
//!
//! # Safety model
//!
//! Safe API depends on invariants documented by bundled clickhouse-c revision,
//! available as [`UPSTREAM_REVISION`]. Slice lengths are bounded by owning C
//! values.
//!
//! Decoding does not automatically validate relationships between nested
//! columns. Call [`Block::validate`] before using offsets or dictionary keys
//! from untrusted input as indexes.
//!
//! Types containing self-references, including [`PosixIo`], [`Codec`], and
//! `tls::TlsIo`, return `Pin<Box<Self>>`. Owning handles implement `Send`.
//! Connection handles do not implement `Sync`.
//!
//! [clickhouse-c]: https://github.com/ClickHouse/clickhouse-c
// Keep C function signatures visible in FFI wrappers
/// Bundled [clickhouse-c] revision from `clickhouse-c/UPSTREAM`.
///
/// [clickhouse-c]: https://github.com/ClickHouse/clickhouse-c
pub const UPSTREAM_REVISION: &str = env!;
pub use Allocator;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;