Overview of ClickHouse Rust client usage scenarios
mainThe clickhouse-rs repository provides examples covering several categories of usage:
General Usage
- Basic Operations: Creating tables (DDL), inserting data, and selecting rows (
usage.rs). - Testing: Writing tests using the
mockfeature (mock.rs). - Batching:
- Client-side batching via the
inserterfeature (inserter.rs). - Server-side batching using ClickHouse's asynchronous inserts (
async_insert.rs).
- Client-side batching via the
- Cloud & Settings:
- Connecting to ClickHouse Cloud with specific settings like
wait_end_of_queryandselect_sequential_consistency(clickhouse_cloud.rs). - Applying query-level ClickHouse settings (
clickhouse_settings.rs).
- Connecting to ClickHouse Cloud with specific settings like
- Parameters: Using parametrized queries with server-side parameters (
server_side_params.rs).
Data Types
- Deriving Types: Using macros to derive ClickHouse data types in structs, including simple types (
data_types_derive_simple.rs), container types likeArray,Tuple,Map,Nested, andGeo(data_types_derive_containers.rs), and theVarianttype (data_types_variant.rs). - JSON: Working with the new ClickHouse
JSONdata type as aString(data_types_new_json.rs).
Special Cases
- Apache Arrow: Reading and writing
RecordBatches via theclickhouse-ext-arrowcrate (arrow.rs). - HTTP Customization: Using a custom Hyper client with tuned connection pools (
custom_http_client.rs) or setting/overriding HTTP headers (custom_http_headers.rs). - Observability: Integrating with
tracingand the OpenTelemetry Rust SDK (opentelemetry.rs). - Query Control: Setting a specific
query_id(query_id.rs) or using session contexts with temporary tables (session_id.rs). - Streaming: Streaming query results as raw bytes to a file (
stream_into_file.rs) or streaming rows in an arbitrary format (stream_arbitrary_format_rows.rs).