Files
rs/Cargo.toml
zeekay 17f5ed7236 Carry the types crate, so callers stop taking it from upstream
Upstream split the type and decoder half of the client into its own crate after
this fork was taken, which is why `datastore` is renamed here but every consumer
of `clickhouse-types` still had to name upstream to get it. insights/funnel-udf
is one: it reads `datastore_types::{Column, DataTypeNode}` out of a crate called
clickhouse-types, so the last upstream name in that repo was not one anybody had
missed -- it was one nothing in our tree provided.

Taken from upstream at 0.1.2, the version already in use, with the same two
dependencies and the sources rebranded. Five files.

Fields are spelled out rather than inherited. Upstream declares them
`authors.workspace = true`, which needs a `[workspace.package]` block at the
root; this fork's root is a plain package, and restructuring the whole manifest
to satisfy a five-file crate buys nothing.

`types` IS added as a workspace member, for a reason worth stating: cargo
resolves a git dependency by scanning the repo's workspace, so a directory no
manifest mentions cannot be found by one. Without that line the crate would be
present in the tree and unreachable to the only kind of dependency that can use
it -- `publish = false` here for the same reason as the root, since
`datastore-types` on crates.io is not ours either.

Verified: cargo check -p datastore-types builds it, and cargo check -p datastore
confirms the added workspace section leaves the root crate alone.
2026-08-13 12:44:16 -07:00

155 lines
4.2 KiB
TOML

# `types` is a member so a git dependency can find it: cargo resolves a git
# dependency by scanning the repo's workspace, and a directory no manifest
# mentions is invisible to it. `derive` needs no entry -- a path dependency of
# the root is already a member.
[workspace]
members = ["types"]
[package]
name = "datastore"
version = "0.13.3"
description = "Rust client for Hanzo Datastore"
keywords = ["datastore", "database", "driver", "tokio", "hyper"]
authors = ["Hanzo AI"]
repository = "https://github.com/hanzo-ds/rs"
homepage = "https://docs.hanzo.ai/datastore"
# The `datastore` name on crates.io belongs to an unrelated crate.
# Consume this fork as a git dependency, pinned to a tag.
publish = false
license = "MIT OR Apache-2.0"
readme = "README.md"
edition = "2021"
# update `derive/Cargo.toml` and CI if changed
# TODO: after bumping to v1.80, remove `--precise` in the "msrv" CI job
rust-version = "1.73.0"
[lints.rust]
rust_2018_idioms = { level = "warn", priority = -1 }
unreachable_pub = "warn"
# TODO: missing_docs = "warn"
unexpected_cfgs = "allow" # for `docsrs`
[lints.clippy]
undocumented_unsafe_blocks = "warn"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[[bench]]
name = "select_numbers"
harness = false
[[bench]]
name = "insert"
harness = false
[[bench]]
name = "select"
harness = false
[[example]]
name = "inserter"
required-features = ["inserter"]
[[example]]
name = "mock"
required-features = ["test-util"]
[[example]]
name = "datastore_cloud"
required-features = ["rustls-tls"]
[[example]]
name = "data_types_derive_simple"
required-features = ["time", "uuid", "chrono"]
[[example]]
name = "data_types_variant"
required-features = ["time"]
[profile.release]
debug = true
[features]
default = ["lz4"]
test-util = ["hyper/server"]
inserter = ["dep:quanta"]
watch = ["dep:sha-1", "dep:serde_json", "serde/derive"]
uuid = ["dep:uuid"]
time = ["dep:time"]
lz4 = ["dep:lz4_flex", "dep:cityhash-rs"]
chrono = ["dep:chrono"]
futures03 = []
## TLS
native-tls = ["dep:hyper-tls"]
# ext: native-tls-alpn
# ext: native-tls-vendored
rustls-tls = ["rustls-tls-aws-lc", "rustls-tls-webpki-roots"]
rustls-tls-aws-lc = [
"dep:rustls",
"dep:hyper-rustls",
"hyper-rustls?/aws-lc-rs",
]
rustls-tls-ring = ["dep:rustls", "dep:hyper-rustls", "hyper-rustls?/ring"]
rustls-tls-webpki-roots = [
"dep:rustls",
"dep:hyper-rustls",
"hyper-rustls?/webpki-tokio",
]
rustls-tls-native-roots = [
"dep:rustls",
"dep:hyper-rustls",
"hyper-rustls?/native-tokio",
]
[dependencies]
datastore-derive = { version = "0.2.0", path = "derive" }
thiserror = "1.0.16"
serde = "1.0.106"
bytes = "1.5.0"
tokio = { version = "1.0.1", features = ["rt", "macros"] }
http-body-util = "0.1.2"
hyper = "1.4"
hyper-util = { version = "0.1.6", features = ["client-legacy", "http1"] }
hyper-tls = { version = "0.6.0", optional = true }
rustls = { version = "0.23", default-features = false, optional = true }
hyper-rustls = { version = "0.27.3", default-features = false, features = [
"http1",
"tls12",
], optional = true }
url = "2.1.1"
futures = "0.3.5"
futures-channel = "0.3.30"
static_assertions = "1.1"
sealed = "0.6"
sha-1 = { version = "0.10", optional = true }
serde_json = { version = "1.0.68", optional = true }
lz4_flex = { version = "0.11.3", default-features = false, features = [
"std",
], optional = true }
cityhash-rs = { version = "=1.0.1", optional = true } # exact version for safety
uuid = { version = "1", optional = true }
time = { version = "0.3", optional = true }
chrono = { version = "0.4", optional = true, features = ["serde"] }
bstr = { version = "1.11.0", default-features = false }
quanta = { version = "0.12", optional = true }
replace_with = { version = "0.1.7" }
[dev-dependencies]
criterion = "0.5.0"
serde = { version = "1.0.106", features = ["derive"] }
tokio = { version = "1.0.1", features = ["full", "test-util"] }
hyper = { version = "1.1", features = ["server"] }
serde_bytes = "0.11.4"
serde_json = "1"
serde_repr = "0.1.7"
uuid = { version = "1", features = ["v4", "serde"] }
time = { version = "0.3.17", features = ["macros", "rand"] }
fixnum = { version = "0.9.2", features = ["serde", "i32", "i64", "i128"] }
rand = { version = "0.8.5", features = ["small_rng"] }