krishiv-sql 0.1.0-nightly.202607020205

Krishiv — hybrid batch and streaming compute engine
Documentation
[package]
name = "krishiv-sql"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
documentation.workspace = true
description.workspace = true
readme = "README.md"

[dependencies]
arrow = { workspace = true }
async-trait = { workspace = true }
chrono = { workspace = true }
dashmap = { workspace = true }
thiserror = { workspace = true }
datafusion = { workspace = true }
# Baseline connectors: parquet (default) + kafka + s3 + lakehouse. `lakehouse`
# carries the Delta/Hudi table readers and the AS-OF time-travel types that this
# crate's `lakehouse` module uses unconditionally (it is light — no Iceberg).
# The heavyweight Iceberg tree (iceberg, iceberg-datafusion, datafusion-iceberg)
# is NOT pulled here; it is enabled on demand by this crate's `iceberg` /
# `iceberg-datafusion` / `*-catalog` features so lean builds (embedded) omit it.
krishiv-connectors = { path = "../krishiv-connectors", version = "=0.1.0-nightly.202607020205", features = ["kafka", "s3", "lakehouse"] }
krishiv-common = { path = "../krishiv-common", version = "=0.1.0-nightly.202607020205" }
krishiv-plan = { path = "../krishiv-plan", version = "=0.1.0-nightly.202607020205" }
regex = { workspace = true }
reqwest = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
sqlparser = { workspace = true }
tracing = { workspace = true }
url = { workspace = true }
uuid = { workspace = true }
futures.workspace = true
object_store = { workspace = true, features = ["aws"] }
tokio.workspace = true
tokio-stream.workspace = true

# Optional Iceberg catalog dependencies (J1-J4).
iceberg = { workspace = true, optional = true }
iceberg-catalog-rest = { workspace = true, optional = true }
iceberg-datafusion = { workspace = true, optional = true }
sqlx = { workspace = true, optional = true }

[features]
# Lean default: no Iceberg. The heavy Iceberg tree is opt-in via the features
# below so embedded builds stay lean. Enable `iceberg` (or a `*-catalog`
# backend) to compile the lakehouse + DataFusion catalog integration.
default = []
iceberg = ["krishiv-connectors/iceberg", "dep:iceberg"]
delta = ["krishiv-connectors/delta"]
hudi = ["krishiv-connectors/hudi"]
# J1-J4 unified catalog backends.
local-catalog = ["dep:iceberg"]
postgres-catalog = ["dep:sqlx", "dep:iceberg"]
rest-catalog = ["dep:iceberg-catalog-rest", "dep:iceberg"]
# The DataFusion catalog DML interception calls krishiv_connectors::lakehouse,
# so this backend must pull the connector's iceberg implementation.
iceberg-datafusion = [
    "dep:iceberg-datafusion",
    "dep:iceberg",
    "local-catalog",
    "krishiv-connectors/iceberg",
]
# Unity Catalog backend (uses UC's built-in Iceberg REST endpoint).
unity-catalog = ["rest-catalog"]
# AWS Glue catalog backend (uses Glue's built-in Iceberg REST endpoint).
glue-catalog = ["rest-catalog"]

[dev-dependencies]
tokio = { workspace = true }
wiremock = { workspace = true }
tempfile = { workspace = true }

[lib]
path = "src/lib.rs"

[lints]
workspace = true