| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| [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 = { workspace = true } |
| |
| [lib] |
| name = "datafusion" |
| path = "src/lib.rs" |
| |
| [features] |
| # Used to enable the avro format |
| 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", "regex_expressions", "unicode_expressions", "compression"] |
| # Enables support for non-scalar, binary operations on dictionaries |
| # Note: this results in significant additional codegen |
| dictionary_expressions = ["datafusion-physical-expr/dictionary_expressions", "datafusion-optimizer/dictionary_expressions"] |
| # Used for testing ONLY: causes all values to hash to the same value (test for collisions) |
| 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.14", 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.23", default-features = false } |
| dashmap = "5.4.0" |
| datafusion-common = { path = "../common", version = "26.0.0", features = ["parquet", "object_store"] } |
| datafusion-execution = { path = "../execution", version = "26.0.0" } |
| datafusion-expr = { path = "../expr", version = "26.0.0" } |
| datafusion-optimizer = { path = "../optimizer", version = "26.0.0", default-features = false } |
| datafusion-physical-expr = { path = "../physical-expr", version = "26.0.0", default-features = false } |
| datafusion-row = { path = "../row", version = "26.0.0" } |
| datafusion-sql = { path = "../sql", version = "26.0.0" } |
| flate2 = { version = "1.0.24", optional = true } |
| futures = "0.3" |
| glob = "0.3.0" |
| hashbrown = { version = "0.14", features = ["raw"] } |
| indexmap = "2.0.0" |
| itertools = "0.11" |
| lazy_static = { version = "^1.4.0" } |
| log = "^0.4" |
| num-traits = { version = "0.2", optional = true } |
| num_cpus = "1.13.0" |
| object_store = "0.6.1" |
| parking_lot = "0.12" |
| parquet = { workspace = true } |
| percent-encoding = "2.2.0" |
| pin-project-lite = "^0.2.7" |
| rand = "0.8" |
| smallvec = { version = "1.6", features = ["union"] } |
| sqlparser = { workspace = true } |
| tempfile = "3" |
| tokio = { version = "1.0", 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.3.0" |
| 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"] } |
| rstest = "0.17.0" |
| rust_decimal = { version = "1.27.0", features = ["tokio-pg"] } |
| sqllogictest = "0.14.0" |
| 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" |
| |
| [[test]] |
| harness = false |
| name = "sqllogictests" |
| path = "tests/sqllogictests/src/main.rs" |