[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" }