Cargo.toml
Rama main · réplica de lectura del repositorio original.
[workspace]
# In alphabetical order
members = [
"influxdb3",
"influxdb3_commands",
"influxdb3_authz",
"influxdb3_cache",
"influxdb3_catalog",
"influxdb3_catalog_macros",
"influxdb3_clap_blocks",
"influxdb3_client",
"influxdb3_id",
"influxdb3_internal_api",
"influxdb3_process",
"influxdb3_processing_engine",
"influxdb3_processing_engine_telemetry",
"influxdb3_py_api",
"influxdb3_query_executor",
"influxdb3_server",
"influxdb3_shutdown",
"influxdb3_startup",
"influxdb3_system_tables",
"influxdb3_system_tables_common",
"influxdb3_telemetry",
"influxdb3_test_helpers",
"influxdb3_types",
"influxdb3_wal",
"influxdb3_write",
"cli_types",
"object_store_limit",
"object_store_utils",
"core/arrow_util",
"core/authz",
"core/backoff",
"core/catalog_cache",
"core/client_util",
"core/data_types",
"core/datafusion_util",
"core/dml",
"core/error_reporting",
"core/executor",
"core/flightsql",
"core/futures_test_utils",
"core/generated_types",
"core/influxdb_influxql_parser",
"core/influxdb_iox_client",
"core/influxdb_line_protocol",
"core/influxdb2_client",
"core/ingester_query_grpc",
"core/iox_http",
"core/iox_http_util",
"core/iox_query",
"core/iox_query_influxql",
"core/iox_query_influxql_rewrite",
"core/iox_query_params",
"core/iox_query_udf",
"core/iox_system_tables",
"core/iox_time",
"core/iox_v1_query_api",
"core/jemalloc_pprof_http",
"core/jemalloc_stats",
"core/linear_buffer",
"core/logfmt",
"core/metric",
"core/metric_exporters",
"core/mutable_batch",
"core/mutable_batch_lp",
"core/mutable_batch_pb",
"core/object_store_mem_cache",
"core/object_store_metrics",
"core/object_store_mock",
"core/object_store_size_hinting",
"core/observability_deps",
"core/panic_logging",
"core/parquet_file",
"core/partition",
"core/predicate",
"core/query_functions",
"core/schema",
"core/service_common",
"core/service_grpc_flight",
"core/sharder",
"core/table_batch",
"core/test_helpers",
"core/test_helpers_authz",
"core/tokio_metrics_bridge",
"core/tokio_watchdog",
"core/tower_trailer",
"core/trace",
"core/trace_exporters",
"core/trace_http",
"core/tracker",
"core/trogging",
]
default-members = ["influxdb3"]
resolver = "2"
exclude = [
"*.md",
"*.txt",
".circleci/",
".editorconfig",
".git*",
".github/",
".kodiak.toml",
"LICENSE*",
# Fuzz crates depend on libfuzzer-sys which compiles C++ with
# platform-specific flags that break cross-compilation. They are
# intended to be run separately via `cargo fuzz`.
"core/influxdb_line_protocol/fuzz",
"core/mutable_batch_lp/fuzz",
]
[workspace.package]
# `version` uses a `-nightly` on `main` branch so that snapshot releases cut from main will display
# `-nightly` in the revision information of the running server. Releases cut from a release branch
# will not use `-nightly`.
#
# The version here leads the latest released minor version. So, if the latest release is `3.0.2`,
# then this will be `3.1.0-nightly`. Once `3.1.0` is released, this will be bumped to `3.2.0-nightly`,
# and will remain that regardless of how many `3.1.x` patch releases are done prior to the `3.2.0`
# release.
#
# NOTE(tjh): uses `-oss-nightly` instead of `-nightly` to distinguish dependencies with the same
# package name in the `oss/` workspace from those in `ent/` workspace. Since the `ent/influxdb3`
# package depends on the `oss/influxdb3` package, this is an easy workaround to package name
# collisions in the `ent/Cargo.lock` file.
#
# For porting to the actual OSS repo (influxdb), this would need to change to `-nightly`, i.e., by
# stripping the `-oss`.
version = "3.12.0-nightly"
authors = ["InfluxData OSS Developers"]
edition = "2024"
license = "MIT OR Apache-2.0"
[workspace.dependencies]
ahash = "0.8"
anyhow = "1.0"
arrow = { version = "57.3.0", features = ["prettyprint", "chrono-tz"] }
arrow-array = "57.3.0"
arrow-buffer = { version = "57.3.0" }
arrow-csv = "57.3.0"
arrow-flight = { version = "57.3.0", features = ["flight-sql-experimental"] }
arrow-ipc = { version = "57.3.0" }
arrow-json = "57.3.0"
arrow-schema = { version = "57.3.0" }
assert_cmd = "2.1.1"
async-trait = "0.1"
backon = { version = "1.5.0", features = ["tokio"] }
base64 = "0.21.7"
bimap = "0.6.3"
bincode = { version = "2", default-features = false, features = ["alloc", "derive"] }
bitcode = { version = "0.6.3", features = ["serde"] }
byteorder = "1.3.4"
bytes = "1.11"
chrono = "0.4"
clap = { version = "4", features = ["derive", "env", "string"] }
clap_builder = "4.5.47"
comfy-table = { version = "7.2.2" }
crc32fast = "1.2.0"
criterion = { version = "0.5", features = ["html_reports"] }
cron = "0.15"
csv = "1.3.0"
owo-colors = "4.2.0"
# Use DataFusion fork (see below)
datafusion = { version = "52.5.0" }
datafusion-proto = { version = "52.5.0" }
dashmap = "6.1.0"
dotenvy = "0.15.7"
flate2 = "1.0.27"
futures = "0.3.31"
futures-util = "0.3.31"
hashbrown = { version = "0.14.5", features = ["serde"] }
hex = "0.4.3"
home = "0.5.12"
hostname = "0.4.1"
http = {version = "1"}
http-body = {version = "1"}
http-body-util = {version = "0.1"}
humantime = "2.1.0"
humantime-serde = "1.1.1"
hyper = {version = "1"}
hyper-util = {version = "0.1", features=["server-graceful"]}
insta = { version = "1.46.3", features = ["json", "redactions", "yaml"] }
indexmap = { version = "2.11.0" }
inventory = "0.3"
itertools = "0.13.0"
libc = { version = "0.2" }
mime = "0.3.17"
mockito = { version = "1.4.0", default-features = false }
mockall = { version = "0.13.0" }
non-empty-string = "0.2.5"
num_cpus = "1.16.0"
object_store = { version = "0.12.4", features = ["aws", "azure", "gcp"] }
parking_lot = { version = "0.12.1", features = ["serde"] }
paste = "1.0.15"
parquet = { version = "57.3.0", features = ["object_store"] }
pbjson = "0.9"
pbjson-build = "0.9"
pbjson-types = "0.9"
pretty_assertions = { version = "1.4.0", features = ["unstable"] }
prost = "0.14"
prost-types = "0.14"
proptest = { version = "1", default-features = false, features = ["std"] }
pyo3 = { version = "0.29", features = ["experimental-async"]}
rand = "0.8.5"
rcgen = "0.13.2"
regex = "1.11.1"
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "stream", "json"] }
rstest = "0.26"
rustc-hash = "2.0"
rustls = { version = "0.23", default-features = false, features = ["logging", "ring", "std", "tls12"] }
secrecy = "0.8.0"
serde = { version = "1.0", features = ["derive", "rc"] }
# serde_json is set to 1.0.127 to prevent a conflict with core, if that gets updated upstream, this
# could be changed back to 1.0
serde_json = "1.0.127"
serde_urlencoded = "0.7.0"
serde_with = "3.8.1"
sha2 = "0.10.8"
siphasher = "1.0"
snafu = "0.8"
snap = "1.0.0"
# NOTE(tjh): explicitly add sqlite feature as the `data_types` crate relies on it
sqlx = { version = "0.8.6", features = ["sqlite"] }
sysinfo = { version = "0.39.5", default-features = false, features = ["system", "disk"] }
# `full` is needed for `syn::parse_file`, used by catalog format-stability tests
syn = { version = "2.0", features = ["full"] }
tempfile = "3.14.0"
test-log = { version = "0.2.16", features = ["trace"] }
thiserror = "1.0"
tokio = { version = "1.52.2", features = ["full", "test-util"] }
tokio-rustls = { version = "0.25", default-features = false, features = ["ring", "tls12"] }
tokio-util = { version = "0.7.13", features = ["rt"] }
tonic = { version = "0.14", features = ["tls-native-roots"] }
tonic-prost = "0.14"
tonic-prost-build = "0.14"
tonic-reflection = "0.14"
tower = "0.5"
tracing = { version = "0.1", features = ["log", "max_level_trace"] }
tracing-log = { version = "0.2" }
tracing-subscriber = { version = "0.3", features = ["env-filter", "json", "parking_lot"] }
unicode-segmentation = "1.11.0"
url = "2.5.0"
urlencoding = "1.1"
uuid = { version = "1", features = ["v4", "v7", "serde"] }
walkdir = "2"
num = { version = "0.4.3" }
smallvec = { version = "1.15.1", features = ["union"] }
# core crates
# Technically we could depend on them via path, but this makes syncing `ent` and `oss` code easier
datafusion_util = { path = "core/datafusion_util" }
iox_http_util = { path = "core/iox_http_util" }
iox_query = { path = "core/iox_query" }
iox_query_params = { path = "core/iox_query_params" }
iox_time = { path = "core/iox_time" }
metric = { path = "core/metric" }
observability_deps = { path = "core/observability_deps" }
parquet_file = { path = "core/parquet_file" }
# OSS crates
# Technically we could depend on them via path, but this makes syncing `ent` and `oss` code easier
influxdb3_shutdown = { path = "influxdb3_shutdown" }
# Datafusion UDF WASM hosting for the iox_query_udf crate:
datafusion-udf-wasm-host = { git = "https://github.com/influxdata/datafusion-udf-wasm.git", rev = "9186474d530904e787e8903b61f586c10e97e317", default-features = false }
datafusion-udf-wasm-query = { git = "https://github.com/influxdata/datafusion-udf-wasm.git", rev = "9186474d530904e787e8903b61f586c10e97e317" }
[workspace.lints.rust]
missing_copy_implementations = "deny"
missing_debug_implementations = "deny"
rust_2018_idioms = { level = "deny", priority = -1 }
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tokio_unstable)'] }
unreachable_pub = "deny"
[workspace.lints.clippy]
clone_on_ref_ptr = "deny"
dbg_macro = "deny"
future_not_send = "deny"
todo = "deny"
allow_attributes = "deny"
too_many_arguments = "allow"
[workspace.lints.rustdoc]
bare_urls = "deny"
broken_intra_doc_links = "deny"
# This profile optimizes for runtime performance and small binary size at the expense of longer
# build times. It's most suitable for final release builds.
[profile.release]
lto = "fat"
[profile.bench]
debug = true
# This profile optimizes for short build times at the expense of larger binary size and slower
# runtime performance. It's most suitable for development iterations.
[profile.quick-release]
inherits = "release"
codegen-units = 16
lto = false
incremental = true
debug = "line-tables-only"
# This profile extends the `quick-release` profile with debuginfo turned on in order to
# produce more human friendly symbols for profiling tools
[profile.quick-bench]
inherits = "quick-release"
debug = 1
# Per insta docs: https://insta.rs/docs/quickstart/#optional-faster-runs
[profile.dev.package.insta]
opt-level = 3
[profile.dev.package.similar]
opt-level = 3
[profile.check-fast]
inherits = "dev"
debug = false
# Patching Datafusion
[patch.crates-io]
# Use DataFusion fork
# Pinned to https://github.com/influxdata/arrow-datafusion/tree/upgrade-df-ver5250-d
# See for contents:
# * https://github.com/influxdata/arrow-datafusion/pull/103
# * https://github.com/influxdata/arrow-datafusion/pull/100
# * https://github.com/influxdata/arrow-datafusion/pull/102
#
# NOTE: This is an incomplete list of datafusion dependencies, but enough to get all dependencies to use our forked
# version. Should you ever encounter a `datafusion-*` crate that is duplicated (i.e. `Cargo.lock` lists both the
# crates.io release and our fork), just add it to this list here.
datafusion = { git = "https://github.com/influxdata/arrow-datafusion.git", rev = "e9e2e6d36bf63e39f746f82ee9b33c47feb65361" }
datafusion-common = { git = "https://github.com/influxdata/arrow-datafusion.git", rev = "e9e2e6d36bf63e39f746f82ee9b33c47feb65361" }
datafusion-execution = { git = "https://github.com/influxdata/arrow-datafusion.git", rev = "e9e2e6d36bf63e39f746f82ee9b33c47feb65361" }
datafusion-expr = { git = "https://github.com/influxdata/arrow-datafusion.git", rev = "e9e2e6d36bf63e39f746f82ee9b33c47feb65361" }
datafusion-proto = { git = "https://github.com/influxdata/arrow-datafusion.git", rev = "e9e2e6d36bf63e39f746f82ee9b33c47feb65361" }
datafusion-sql = { git = "https://github.com/influxdata/arrow-datafusion.git", rev = "e9e2e6d36bf63e39f746f82ee9b33c47feb65361" }