Skip to content

zystem-io/klickhouse

This branch is up to date with Protryon/klickhouse:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

916c698 · Feb 25, 2025
Mar 31, 2024
Feb 25, 2025
Feb 19, 2025
Sep 29, 2022
Dec 28, 2024
Jan 5, 2024
Jul 29, 2022
Jul 29, 2022
Jan 15, 2024

Repository files navigation

Klickhouse

Klickhouse is a pure Rust SDK for working with Clickhouse with the native protocol in async environments with minimal boilerplate and maximal performance.

Example Usage

See example usage.

Unsupported Features

  • Clickhouse Enum8 and Enum16 types -- use LowCardinality instead.

Running the tests

A Clickhouse server is required to run the integration tests. One can be started easily in a Docker container:

$ docker run  --rm --name clickhouse -p 19000:9000 --ulimit nofile=262144:262144 clickhouse
$ export KLICKHOUSE_TEST_ADDR=127.0.0.1:19000
$ # export KLICKHOUSE_TEST_USER=default
$ # export KLICKHOUSE_TEST_PASSWORD=default
$ # export KLICKHOUSE_TEST_DATABASE=default
$ cargo nextest run

(running the tests simultaneously with cargo test is currently not suported, due to loggers initializations.)

Feature flags

  • derive: Enable [klickhouse_derive], providing a derive macro for the [Row] trait. Default.
  • compression: lz4 compression for client/server communication. Default.
  • serde: Derivation of [serde::Serialize] and [serde::Deserialize] on various objects, and JSON support. Default.
  • tls: TLS support via tokio-rustls.
  • refinery: Migrations via refinery.
  • geo-types: Conversion of geo types to/from the geo-types crate.
  • bb8: Enables a ConnectionManager managed by bb8

Credit

klickhouse_derive was made by copy/paste/simplify of serde_derive to get maximal functionality and performance at lowest time-cost. In a prototype, serde was directly used, but this was abandoned due to lock-in of serde's data model.

About

Rust crate for accessing Clickhouse

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%