Files
Ethan Urbanski ef405d80ef refactor: use BatchAdapterFactory for scan adaptation (#4195)
# Description
Follow up to the DF 52 upgrade. Replaces custom scan batch casting logic
with DataFusion's `BatchAdapterFactory` via
`datafusion-physical-expr-adapter`.

Adds hardening tests for schema evolution and DV scan behavior

Keeps DF default behavior with no custom compatibility mode

# Related Issue(s)
<!---
For example:

- closes #106
--->

# Documentation

<!---
Share links to useful documentation
--->

---------

Signed-off-by: Ethan Urbanski <ethan@urbanskitech.com>
2026-02-13 13:50:50 +09:00

159 lines
5.0 KiB
TOML

[workspace]
members = ["crates/*", "python"]
exclude = []
resolver = "3"
[workspace.package]
authors = ["Qingping Hou <dave2008713@gmail.com>", "R Tyler Croy <rtyler@brokenco.de>"]
rust-version = "1.88"
keywords = ["deltalake", "delta", "datalake"]
readme = "README.md"
edition = "2024"
description = "Native Delta Lake implementation in Rust"
homepage = "https://github.com/delta-io/delta.rs"
license = "Apache-2.0"
documentation = "https://docs.rs/deltalake"
repository = "https://github.com/delta-io/delta.rs"
[workspace.dependencies]
delta_kernel = { version = "0.19.0", features = [
"arrow-57",
"default-engine-rustls",
"internal-api",
] }
# arrow
arrow = { version = "57" }
arrow-arith = { version = "57" }
arrow-array = { version = "57", features = ["chrono-tz"] }
arrow-buffer = { version = "57" }
arrow-cast = { version = "57" }
arrow-ipc = { version = "57" }
arrow-json = { version = "57" }
arrow-ord = { version = "57" }
arrow-row = { version = "57" }
arrow-schema = { version = "57" }
arrow-select = { version = "57" }
object_store = { version = "0.12.1" }
parquet = { version = "57" }
# datafusion 52.1
datafusion = { version = "52.1.0" }
datafusion-datasource = { version = "52.1.0" }
datafusion-physical-expr-adapter = { version = "52.1.0" }
datafusion-ffi = { version = "52.1.0" }
datafusion-proto = { version = "52.1.0" }
# serde
serde = { version = "1.0.194", features = ["derive"] }
serde_json = "1"
strum = { version = "0.27" }
# "stdlib"
bytes = { version = "1" }
chrono = { version = "0.4.40", default-features = false, features = ["clock"] }
tracing = { version = "0.1", features = ["log"] }
regex = { version = "1" }
thiserror = { version = "2" }
url = { version = "2" }
percent-encoding-rfc3986 = { version = "0.1.3" }
tempfile = { version = "3" }
uuid = { version = "1" }
# runtime / async
async-trait = { version = "0.1" }
futures = { version = "0.3" }
tokio = { version = "1" }
typed-builder = { version = "0.23.0" }
# opentelemetry
tracing-opentelemetry = { version = "0.32" }
opentelemetry = { version = "0.31" }
opentelemetry-otlp = { version = "0.31", features = ["http-proto"] }
opentelemetry_sdk = { version = "0.31", features = ["rt-tokio"] }
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
num_cpus = { version = "1" }
[workspace.metadata.typos]
files.extend-exclude = ["CHANGELOG.md", "crates/benchmarks/queries/tpcds/*.sql"]
default.extend-ignore-re = [
# Custom ignore regex patterns: https://github.com/crate-ci/typos/blob/master/docs/reference.md#example-configurations
"(?s)//\\s*spellchecker:ignore-next-line[^\\n]*\\n[^\\n]*",
# Line block with # spellchecker:<on|off>
"(?s)(#|//|<\\!--)\\s*spellchecker:off.*?\\n\\s*(#|//|<\\!--)\\s*spellchecker:on",
"(?Rm)^.*(#|//)\\s*spellchecker:disable-line$",
# workaround for: https://github.com/crate-ci/typos/issues/850
"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}",
]
[workspace.metadata.typos.default.extend-words]
arro = "arro"
Arro = "Arro"
arro3 = "arro3"
Arro3 = "Arro3"
AKS = "AKS"
# to avoid using 'type' as a field name.
tpe = "tpe"
# ============================================================================
# Profile Configuration
# ============================================================================
# Profiles for different use cases:
# - dev: Fast local development with good debug experience (Cargo defaults)
# - test: test builds with minimal debug info to save disk/RAM (custom)
# - release: Production Rust crates - maximum performance (Cargo defaults)
# - bench: For benchmarking with flamegraphs (cargo bench)
# - profiling: For performance profiling with release opts + debug info
# - ci: CI/CD optimized - fast builds, release-like performance
# - python-release: Python wheel builds - portable, reproducible (PyPI releases)
# ============================================================================
# Test profile - reduced debug info to save disk/RAM
# Usage: cargo test (automatic)
# <https://github.com/delta-io/delta-rs/issues/1550>
[profile.test]
debug = "line-tables-only"
# Benchmark profile with debug symbols for flamegraphs
# Usage: cargo bench (automatic)
[profile.bench]
debug = true
# Profiling profile with release optimizations + debug info
# Usage: cargo build --profile=profiling
[profile.profiling]
inherits = "release"
debug = true
# CI profile - optimized for Continuous Integration
# Usage: cargo build --profile=ci
[profile.ci]
inherits = "dev"
debug = false
incremental = false
[profile.ci.package."*"]
opt-level = 3
debug = false
debug-assertions = false
strip = "debuginfo"
incremental = false
# Python wheel release profile - for PyPI distribution
# Usage: maturin build --profile python-release (via .github/workflows/python_release.yml)
[profile.python-release]
inherits = "release"
opt-level = 3
codegen-units = 1
lto = "fat"
# Python wheel release profile ARM - for PyPI distribution
# Usage: maturin build --profile python-release-arm (via .github/workflows/python_release.yml)
[profile.python-release-arm]
inherits = "release"
opt-level = 3
codegen-units = 1
lto = "thin"