[package]
name = "cubestore"
version = "1.7.35"
authors = ["Cube Dev, Inc."]
edition = "2021"
license = "Apache-2.0"
description = "Cube.js pre-aggregation storage layer"
documentation = "https://cube.dev/docs"
homepage = "https://cube.dev"
repository = "https://github.com/cube-js/cube.js"

[target.'cfg(not(target_os = "windows"))'.dependencies]
ipc-channel = { version = "0.18.0" }
libc = { version = "0.2.97", optional = true }

[dependencies]
base64 = "0.13.0"
tokio = { version = "1", features = ["full", "rt"] }
warp = { version = "0.3.6" }
sqlparser = { git = "https://github.com/cube-js/sqlparser-rs.git", branch = "cube-46.0.1" }
serde_derive = "1.0.115"
serde = "1.0.115"
serde_repr = "0.1"
serde_bytes = "0.11.5"
cuberockstore = { path = "../cuberockstore" }
cubehll = { path = "../cubehll" }
cubezetasketch = { path = "../cubezetasketch" }
cubedatasketches = { path = "../cubedatasketches" }
cubeshared = { path = "../../cube/cubeshared" }
cuberpc = { path = "../cuberpc" }
datafusion = { git = "https://github.com/cube-js/arrow-datafusion", branch = "cube-46.0.1", features = ["serde"] }
datafusion-datasource = { git = "https://github.com/cube-js/arrow-datafusion", branch = "cube-46.0.1" }
datafusion-proto = { git = "https://github.com/cube-js/arrow-datafusion", branch = "cube-46.0.1" }
datafusion-proto-common = { git = "https://github.com/cube-js/arrow-datafusion", branch = "cube-46.0.1" }
csv = "1.1.3"
bytes = "1.6.0"
serde_json = "1.0.56"
futures = "0.3.26"
smallvec = "1.11.0"
flexbuffers = { version = "0.2.2", features = ["deserialize_human_readable", "serialize_human_readable"] }
byteorder = "1.3.4"
# `kv` unlocks Record::to_builder, previously enabled transitively via async-std.
log = { version = "0.4.21", features = ["kv"] }
simple_logger = { version = "2.3.0" }
async-trait = "0.1.80"
actix-rt = "2.7.0"
regex = "1.3.9"
uuid = { version = "0.8", features = ["serde", "v4"] }
num = "0.3.0"
enum_primitive = "0.1.1"
msql-srv = { git = 'https://github.com/cube-js/msql-srv', version = '0.9.2' }
bincode = "1.3.1"
chrono = "0.4.38"
chrono-tz = "0.8.2"
lazy_static = "1.4.0"
mockall = "0.8.1"
async-stream = "0.3.6"
indexmap = "2.10.0"
itertools = "0.14.0"
bigdecimal = { version = "0.2.0", features = ["serde"] }
# Right now, it's not possible to use the 0.33 release because it has bugs
# At the same time, 0.34-rc has a problem with large files uploading because it doesn't control number of parallels put(s)
# Tracking PR with backports: https://github.com/cube-js/rust-s3/pull/1
# The fork also includes a fix for AWS_STS_REGIONAL_ENDPOINTS
# See https://github.com/cube-js/rust-s3/pull/1/commits for more details
# rev = cubestore-0.32.3-backport tip incl. per-operation SSE header (https://github.com/cube-js/rust-s3/pull/2)
rust-s3 = { git = "https://github.com/cube-js/rust-s3.git", rev = "9deb3475c7963deaa6c30de59771e61af5b15b8f", default-features = false, features = ["tokio", "tokio-native-tls"] }
deadqueue = "0.2.4"
reqwest = { version = "0.12.5", features = ["json", "rustls-tls", "stream", "http2"], default-features = false }
nanoid = "0.3.0"
rand = "0.8.0"
parquet-format = "=2.6.1"
hex = "0.4.2"
cloud-storage = "0.7.0"
tokio-util = { version = "0.7.10", features = ["compat"] }
futures-timer = "3.0.2"
tokio-stream = { version = "0.1.15", features = ["io-util"] }
scopeguard = "1.1.0"
async-compression = { version = "0.3.7", features = ["gzip", "tokio"] }
tempfile = "3.10.1"
pin-project-lite = "0.2.4"
paste = "1.0.4"
memchr = "2"
http-auth-basic = "0.1.2"
tracing = "0.1.25"
tracing-futures = { version = "0.2.5" }
tracing-opentelemetry = "0.27.0"
opentelemetry = "0.26.0"
# opentelemetry_sdk v0.27 build fails because of Nightly in our toolchain (channel = "nightly-2024-01-29")
opentelemetry_sdk = { version = "0.26.0", features = ["rt-tokio"] }
opentelemetry-otlp = { version = "0.26.0", default-features = false, features = [
    "trace", "metrics", "logs", "http-proto", "http-json", "reqwest-client", "tokio"
] }
opentelemetry-http = { version = "0.26.0", features = ["reqwest"] }
lru = "0.18.2"
moka = { version = "0.10.1", features = ["future"] }
# Already in the tree transitively at this version; used for a timed lock.
parking_lot = "0.12"
ctor = "0.1.20"
json = "0.12.4"
futures-util = "0.3.17"
url = "2.2.2"
pin-project = "1.0.8"
tokio-tungstenite = { version = "0.20.1", features = ["native-tls"] }
deflate = "1.0.0"
indoc = "1.0"
parse-size = "1.0.0"
humansize = "2.1.3"
deepsize = "0.2.0"
anyhow = "1.0"
arc-swap = "1.7.1"
object_store = "0.11.1"
prost = "0.13.1"
comfy-table = "7.2.2"

[target.'cfg(target_os = "linux")'.dependencies]
rdkafka = { version = "0.29.0", features = ["ssl", "gssapi", "cmake-build"] }
sasl2-sys = { version = "0.1.6", features = ["vendored"] }

# TODO support ssl for windows
[target.'cfg(target_os = "windows")'.dependencies]
rdkafka = { version = "0.29.0", features = ["cmake-build"] }

[target.'cfg(target_os = "macos")'.dependencies]
rdkafka = { version = "0.29.0", features = ["ssl", "gssapi"] }
sasl2-sys = { version = "0.1.6", features = ["vendored"] }

[dev-dependencies]
pretty_assertions = "0.7.1"
criterion = { version = "0.5.1", features = ["async_tokio", "html_reports"] }
md5 = "0.8.0"
insta = "1.34"

[[bench]]
name = "cachestore_queue"
harness = false

[[bench]]
name = "metastore"
harness = false

[features]
# When enabled, child processes will die whenever parent process exits.
# Highly recomended for production, available only on Linux with prctl system call.
process-cleanup = ["libc"]
