[package]
name = "datafusion"
description = "DataFusion is an in-memory query engine that uses Apache Arrow as the memory model"
keywords = ["arrow", "query", "sql"]
include = ["benches/*.rs", "src/**/*.rs", "Cargo.toml"]
version = { workspace = true }
edition = { workspace = true }
readme = { workspace = true }
homepage = { workspace = true }
repository = { workspace = true }
license = { workspace = true }
authors = { workspace = true }
rust-version = "1.70"
[lib]
name = "datafusion"
path = "src/lib.rs"
[features]
avro = ["apache-avro", "num-traits", "datafusion-common/avro"]
compression = ["xz2", "bzip2", "flate2", "zstd", "async-compression"]
crypto_expressions = ["datafusion-physical-expr/crypto_expressions", "datafusion-optimizer/crypto_expressions"]
default = ["crypto_expressions", "encoding__expressions", "regex_expressions", "unicode_expressions", "compression"]
dictionary_expressions = ["datafusion-physical-expr/dictionary_expressions", "datafusion-optimizer/dictionary_expressions"]
encoding__expressions = ["datafusion-physical-expr/encoding_expressions"]
force_hash_collisions = []
pyarrow = ["datafusion-common/pyarrow"]
regex_expressions = ["datafusion-physical-expr/regex_expressions", "datafusion-optimizer/regex_expressions"]
simd = ["arrow/simd"]
unicode_expressions = ["datafusion-physical-expr/unicode_expressions", "datafusion-optimizer/unicode_expressions", "datafusion-sql/unicode_expressions"]
[dependencies]
ahash = { version = "0.8", default-features = false, features = ["runtime-rng"] }
apache-avro = { version = "0.15", optional = true }
arrow = { workspace = true }
arrow-array = { workspace = true }
arrow-schema = { workspace = true }
async-compression = { version = "0.4.0", features = ["bzip2", "gzip", "xz", "zstd", "futures-io", "tokio"], optional = true }
async-trait = "0.1.41"
bytes = "1.4"
bzip2 = { version = "0.4.3", optional = true }
chrono = { version = "0.4.27", default-features = false }
dashmap = "5.4.0"
datafusion-common = { path = "../common", version = "31.0.0", features = ["parquet", "object_store"] }
datafusion-execution = { path = "../execution", version = "31.0.0" }
datafusion-expr = { path = "../expr", version = "31.0.0" }
datafusion-optimizer = { path = "../optimizer", version = "31.0.0", default-features = false }
datafusion-physical-expr = { path = "../physical-expr", version = "31.0.0", default-features = false }
datafusion-sql = { path = "../sql", version = "31.0.0" }
flate2 = { version = "1.0.24", optional = true }
futures = "0.3"
glob = "0.3.0"
half = { version = "2.1", default-features = false }
hashbrown = { version = "0.14", features = ["raw"] }
indexmap = "2.0.0"
itertools = "0.11"
log = "^0.4"
num-traits = { version = "0.2", optional = true }
num_cpus = "1.13.0"
object_store = "0.7.0"
parking_lot = "0.12"
parquet = { workspace = true }
percent-encoding = "2.2.0"
pin-project-lite = "^0.2.7"
rand = "0.8"
sqlparser = { workspace = true }
tempfile = "3"
tokio = { version = "1.28", features = ["macros", "rt", "rt-multi-thread", "sync", "fs", "parking_lot"] }
tokio-util = { version = "0.7.4", features = ["io"] }
url = "2.2"
uuid = { version = "1.0", features = ["v4"] }
xz2 = { version = "0.1", optional = true }
zstd = { version = "0.12", optional = true, default-features = false }
[dev-dependencies]
async-trait = "0.1.53"
bigdecimal = "0.4.1"
criterion = { version = "0.5", features = ["async_tokio"] }
csv = "1.1.6"
ctor = "0.2.0"
doc-comment = "0.3"
env_logger = "0.10"
half = "2.2.1"
postgres-protocol = "0.6.4"
postgres-types = { version = "0.2.4", features = ["derive", "with-chrono-0_4"] }
regex = "1.5.4"
rstest = "0.18.0"
rust_decimal = { version = "1.27.0", features = ["tokio-pg"] }
test-utils = { path = "../../test-utils" }
thiserror = "1.0.37"
tokio-postgres = "0.7.7"
[target.'cfg(not(target_os = "windows"))'.dev-dependencies]
nix = "0.26.1"
[[bench]]
harness = false
name = "aggregate_query_sql"
[[bench]]
harness = false
name = "sort_limit_query_sql"
[[bench]]
harness = false
name = "math_query_sql"
[[bench]]
harness = false
name = "filter_query_sql"
[[bench]]
harness = false
name = "window_query_sql"
[[bench]]
harness = false
name = "scalar"
[[bench]]
harness = false
name = "physical_plan"
[[bench]]
harness = false
name = "parquet_query_sql"
[[bench]]
harness = false
name = "sql_planner"
[[bench]]
harness = false
name = "sql_query_with_io"
[[bench]]
harness = false
name = "sort"