diff --git a/Cargo.lock b/Cargo.lock index bc86e7def..2ce6c8136 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5305,6 +5305,7 @@ dependencies = [ "anyhow", "arrow", "arrow-array", + "arrow-buffer", "arrow-cast", "arrow-data", "arrow-ipc", diff --git a/Cargo.toml b/Cargo.toml index 0d639e42d..f335f0b6a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,6 +31,7 @@ ahash = "0.8" # Note that this one does not include pyarrow arrow = { version = "58.0.0", optional = false } arrow-array = "58.0.0" +arrow-buffer = "58.0.0" arrow-data = "58.0.0" arrow-ipc = "58.0.0" arrow-ord = "58.0.0" diff --git a/rust/lancedb/Cargo.toml b/rust/lancedb/Cargo.toml index 378185293..f1d1eed0b 100644 --- a/rust/lancedb/Cargo.toml +++ b/rust/lancedb/Cargo.toml @@ -14,6 +14,7 @@ rust-version.workspace = true ahash = { workspace = true } arrow = { workspace = true } arrow-array = { workspace = true } +arrow-buffer = { workspace = true } arrow-data = { workspace = true } arrow-schema = { workspace = true } arrow-select = { workspace = true } diff --git a/rust/lancedb/src/arrow.rs b/rust/lancedb/src/arrow.rs index d4e7c2c8c..c40459b40 100644 --- a/rust/lancedb/src/arrow.rs +++ b/rust/lancedb/src/arrow.rs @@ -3,7 +3,19 @@ use std::{pin::Pin, sync::Arc}; +// Re-export the arrow crates we depend on so downstream consumers can build +// `RecordBatch`/arrays/builders against the exact same arrow line lancedb was +// compiled against, instead of declaring their own (potentially mismatched) +// direct arrow dependencies. See https://github.com/lancedb/lancedb/issues/3575. +pub use arrow; +pub use arrow_array; +pub use arrow_buffer; +pub use arrow_cast; +pub use arrow_data; +pub use arrow_ipc; +pub use arrow_ord; pub use arrow_schema; +pub use arrow_select; use datafusion_common::DataFusionError; use datafusion_physical_plan::stream::RecordBatchStreamAdapter; use futures::{Stream, StreamExt, TryStreamExt}; diff --git a/rust/lancedb/src/lib.rs b/rust/lancedb/src/lib.rs index 2ccbf5817..2aa4ab77c 100644 --- a/rust/lancedb/src/lib.rs +++ b/rust/lancedb/src/lib.rs @@ -342,3 +342,9 @@ pub use connection::connect_namespace; /// Re-export Lance Session and ObjectStoreRegistry for custom session creation pub use lance::session::Session; pub use lance_io::object_store::ObjectStoreRegistry; + +/// Re-export DataFusion so consumers can build the `Expr` values that public +/// query/merge APIs (e.g. [`query::QueryBase::only_if_expr`]) accept without +/// declaring their own (potentially mismatched) direct `datafusion` dependency. +/// See . +pub use datafusion;