diff --git a/Cargo.lock b/Cargo.lock index 4b03ce4ed3..4e9f6a1285 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -950,6 +950,7 @@ dependencies = [ "datafusion-proto", "env_logger", "log", + "object_store", "rstest", "tempfile", "tokio", @@ -1305,7 +1306,7 @@ version = "3.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89ec27229c38ed0eb3c0feee3d2c1d6a4379ae44f418a29a658890e062d8f365" dependencies = [ - "darling 0.23.0", + "darling", "ident_case", "prettyplease", "proc-macro2", @@ -1666,18 +1667,8 @@ version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" dependencies = [ - "darling_core 0.21.3", - "darling_macro 0.21.3", -] - -[[package]] -name = "darling" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" -dependencies = [ - "darling_core 0.23.0", - "darling_macro 0.23.0", + "darling_core", + "darling_macro", ] [[package]] @@ -1694,37 +1685,13 @@ dependencies = [ "syn 2.0.114", ] -[[package]] -name = "darling_core" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" -dependencies = [ - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.114", -] - [[package]] name = "darling_macro" version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ - "darling_core 0.21.3", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "darling_macro" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" -dependencies = [ - "darling_core 0.23.0", + "darling_core", "quote", "syn 2.0.114", ] @@ -3498,7 +3465,7 @@ dependencies = [ "portable-atomic", "portable-atomic-util", "serde_core", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -5266,7 +5233,7 @@ version = "3.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" dependencies = [ - "darling 0.21.3", + "darling", "proc-macro2", "quote", "syn 2.0.114", diff --git a/ballista/client/Cargo.toml b/ballista/client/Cargo.toml index 2005881fa4..a56a4222d7 100644 --- a/ballista/client/Cargo.toml +++ b/ballista/client/Cargo.toml @@ -34,6 +34,7 @@ ballista-executor = { path = "../executor", version = "51.0.0", optional = true ballista-scheduler = { path = "../scheduler", version = "51.0.0", optional = true } datafusion = { workspace = true } log = { workspace = true } +object_store = { workspace = true } tokio = { workspace = true } tonic = { workspace = true } diff --git a/ballista/client/src/builder.rs b/ballista/client/src/builder.rs new file mode 100644 index 0000000000..7a543724b0 --- /dev/null +++ b/ballista/client/src/builder.rs @@ -0,0 +1,291 @@ +// 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. + +//! Builder API for creating Ballista session contexts with custom object stores. +//! +//! This module provides a fluent builder pattern for configuring Ballista sessions, +//! including the ability to register pre-created object stores with custom authentication. +//! +//! # Example +//! +//! ```no_run +//! use ballista::prelude::BallistaBuilder; +//! use object_store::aws::AmazonS3Builder; +//! use std::sync::Arc; +//! +//! # #[tokio::main] +//! # async fn main() -> datafusion::error::Result<()> { +//! // Create an object store with custom authentication +//! let s3_store = AmazonS3Builder::new() +//! .with_bucket_name("my-bucket") +//! .with_region("us-east-1") +//! // Custom authentication bridge +//! .with_access_key_id("my-access-key") +//! .with_secret_access_key("my-secret-key") +//! .build()?; +//! +//! let ctx = BallistaBuilder::new() +//! .add_object_store("s3://my-bucket", Arc::new(s3_store)) +//! .standalone() +//! .await?; +//! # Ok(()) +//! # } +//! ``` + +use crate::extension::SessionContextExt; +use ballista_core::extension::SessionConfigExt; +use datafusion::error::{DataFusionError, Result}; +use datafusion::execution::SessionStateBuilder; +use datafusion::execution::runtime_env::RuntimeEnvBuilder; +use datafusion::prelude::{SessionConfig, SessionContext}; +use object_store::ObjectStore; +use std::sync::Arc; +use url::Url; + +/// A builder for creating Ballista session contexts with custom configuration. +/// +/// This builder provides a fluent API for configuring Ballista sessions, +/// including support for registering pre-created object stores with custom +/// authentication. +/// +/// # Example +/// +/// ```no_run +/// use ballista::prelude::BallistaBuilder; +/// use object_store::aws::AmazonS3Builder; +/// use std::sync::Arc; +/// +/// # #[tokio::main] +/// # async fn main() -> datafusion::error::Result<()> { +/// let s3_store = AmazonS3Builder::new() +/// .with_bucket_name("my-bucket") +/// .with_region("us-east-1") +/// .with_access_key_id("my-access-key") +/// .with_secret_access_key("my-secret-key") +/// .build()?; +/// +/// let ctx = BallistaBuilder::new() +/// .add_object_store("s3://my-bucket", Arc::new(s3_store)) +/// .remote("df://localhost:50050") +/// .await?; +/// # Ok(()) +/// # } +/// ``` +#[derive(Default, Clone)] +pub struct BallistaBuilder { + session_config: SessionConfig, + object_stores: Vec<(Url, Arc)>, +} + +impl BallistaBuilder { + /// Creates a new [`BallistaBuilder`] with default configuration. + pub fn new() -> Self { + Self { + session_config: SessionConfig::new_with_ballista(), + object_stores: Vec::new(), + } + } + + /// Sets the session configuration. + /// + /// This replaces any previously set configuration. + pub fn with_config(mut self, config: SessionConfig) -> Self { + self.session_config = config; + self + } + + /// Sets a configuration option by key-value pair. + /// + /// # Example + /// + /// ```no_run + /// use ballista::prelude::BallistaBuilder; + /// + /// # #[tokio::main] + /// # async fn main() -> datafusion::error::Result<()> { + /// let ctx = BallistaBuilder::new() + /// .config("datafusion.execution.target_partitions", "8")? + /// .standalone() + /// .await?; + /// # Ok(()) + /// # } + /// ``` + pub fn config(mut self, key: &str, value: &str) -> Result { + self.session_config + .options_mut() + .set(key, value) + .map_err(|e| DataFusionError::Configuration(e.to_string()))?; + Ok(self) + } + + /// Registers a pre-created object store for a given URL prefix. + /// + /// This allows you to pass in object stores that have been configured + /// with custom authentication (e.g., via an authentication bridge). + /// + /// The URL should be the base URL for the object store, such as: + /// - `s3://my-bucket` for S3 + /// - `az://my-container` for Azure Blob Storage + /// - `gs://my-bucket` for Google Cloud Storage + /// + /// # Example + /// + /// ```no_run + /// use ballista::prelude::BallistaBuilder; + /// use object_store::aws::AmazonS3Builder; + /// use std::sync::Arc; + /// + /// # #[tokio::main] + /// # async fn main() -> datafusion::error::Result<()> { + /// let s3_store = AmazonS3Builder::new() + /// .with_bucket_name("my-bucket") + /// .with_region("us-east-1") + /// .with_access_key_id("my-access-key") + /// .with_secret_access_key("my-secret-key") + /// .build()?; + /// + /// let ctx = BallistaBuilder::new() + /// .add_object_store("s3://my-bucket", Arc::new(s3_store)) + /// .standalone() + /// .await?; + /// # Ok(()) + /// # } + /// ``` + pub fn add_object_store(mut self, url: &str, store: Arc) -> Self { + // Parse the URL, or store it for later error handling during build + if let Ok(parsed_url) = Url::parse(url) { + self.object_stores.push((parsed_url, store)); + } else { + // We'll handle invalid URLs during build + log::warn!("Invalid object store URL: {url}"); + } + self + } + + /// Registers a pre-created object store for a given URL. + /// + /// This is the same as [`add_object_store`](Self::add_object_store) but takes + /// a pre-parsed [`Url`] instead of a string. + pub fn add_object_store_url(mut self, url: Url, store: Arc) -> Self { + self.object_stores.push((url, store)); + self + } + + /// Sets the Ballista job name. + /// + /// # Example + /// + /// ```no_run + /// use ballista::prelude::BallistaBuilder; + /// + /// # #[tokio::main] + /// # async fn main() -> datafusion::error::Result<()> { + /// let ctx = BallistaBuilder::new() + /// .with_job_name("My Analytics Job") + /// .standalone() + /// .await?; + /// # Ok(()) + /// # } + /// ``` + pub fn with_job_name(mut self, name: &str) -> Self { + self.session_config = self.session_config.with_ballista_job_name(name); + self + } + + /// Sets the target number of partitions for query execution. + pub fn with_target_partitions(mut self, partitions: usize) -> Self { + self.session_config = self.session_config.with_target_partitions(partitions); + self + } + + /// Sets the batch size for query execution. + pub fn with_batch_size(mut self, batch_size: usize) -> Self { + self.session_config = self.session_config.with_batch_size(batch_size); + self + } + + /// Enables or disables the information schema. + pub fn with_information_schema(mut self, enabled: bool) -> Self { + self.session_config = self.session_config.with_information_schema(enabled); + self + } + + /// Builds a [`datafusion::execution::SessionState`] with the configured object stores. + fn build_state(&self) -> Result { + let runtime_env = RuntimeEnvBuilder::new().build()?; + + // Register all object stores + for (url, store) in &self.object_stores { + runtime_env.register_object_store(url, Arc::clone(store)); + } + + let state = SessionStateBuilder::new() + .with_config(self.session_config.clone()) + .with_runtime_env(Arc::new(runtime_env)) + .with_default_features() + .build(); + + Ok(state) + } + + /// Creates a context for executing queries against a remote Ballista scheduler. + /// + /// # Arguments + /// + /// * `url` - The URL of the Ballista scheduler (e.g., "df://localhost:50050") + /// + /// # Example + /// + /// ```no_run + /// use ballista::prelude::BallistaBuilder; + /// + /// # #[tokio::main] + /// # async fn main() -> datafusion::error::Result<()> { + /// let ctx = BallistaBuilder::new() + /// .remote("df://localhost:50050") + /// .await?; + /// # Ok(()) + /// # } + /// ``` + pub async fn remote(self, url: &str) -> Result { + let state = self.build_state()?; + SessionContext::remote_with_state(url, state).await + } + + /// Creates a context for executing queries against a standalone Ballista cluster. + /// + /// This starts a local Ballista cluster with a scheduler and executor in-process. + /// + /// # Example + /// + /// ```no_run + /// use ballista::prelude::BallistaBuilder; + /// + /// # #[tokio::main] + /// # async fn main() -> datafusion::error::Result<()> { + /// let ctx = BallistaBuilder::new() + /// .standalone() + /// .await?; + /// # Ok(()) + /// # } + /// ``` + #[cfg(feature = "standalone")] + pub async fn standalone(self) -> Result { + let state = self.build_state()?; + SessionContext::standalone_with_state(state).await + } +} diff --git a/ballista/client/src/lib.rs b/ballista/client/src/lib.rs index 9f0bcb3825..639d190cbb 100644 --- a/ballista/client/src/lib.rs +++ b/ballista/client/src/lib.rs @@ -18,6 +18,8 @@ #![doc = include_str!("../README.md")] #![warn(missing_docs)] +/// Builder API for creating Ballista session contexts with custom object stores. +pub mod builder; /// Extension traits for integrating DataFusion with Ballista distributed execution. pub mod extension; /// Prelude module providing commonly used imports for Ballista client applications. diff --git a/ballista/client/src/prelude.rs b/ballista/client/src/prelude.rs index ca6860d9ed..7cb1ef92a1 100644 --- a/ballista/client/src/prelude.rs +++ b/ballista/client/src/prelude.rs @@ -22,5 +22,6 @@ // error::{BallistaError, Result}, // }; +pub use crate::builder::BallistaBuilder; pub use crate::extension::{SessionConfigExt, SessionContextExt}; //pub use futures::StreamExt; diff --git a/ballista/core/src/execution_plans/shuffle_reader.rs b/ballista/core/src/execution_plans/shuffle_reader.rs index ad45959fd5..e928a45fdb 100644 --- a/ballista/core/src/execution_plans/shuffle_reader.rs +++ b/ballista/core/src/execution_plans/shuffle_reader.rs @@ -31,6 +31,9 @@ use std::task::{Context, Poll}; use object_store::ObjectStore; use object_store::aws::AmazonS3Builder; use object_store::azure::MicrosoftAzureBuilder; + +use datafusion::execution::object_store::ObjectStoreUrl; +use datafusion::execution::runtime_env::RuntimeEnv; use url::Url; use crate::client::BallistaClient; @@ -209,6 +212,7 @@ impl ExecutionPlan for ShuffleReaderExec { customize_endpoint, use_tls, metrics_callback, + context.runtime_env(), ); let result = RecordBatchStreamAdapter::new( @@ -399,32 +403,41 @@ fn local_remote_read_split( } } -/// Splits partition locations into memory, local disk, and remote categories. -/// Returns (memory_locations, local_locations, remote_locations) +/// Partition locations split into categories for different fetch strategies. +#[derive(Debug, Default)] +struct SplitPartitionLocations { + /// Partitions stored in memory (fastest path) + memory: Vec, + /// Partitions stored on local disk + local: Vec, + /// Partitions stored in object stores (S3, Azure, GCS) + object_store: Vec, + /// Partitions requiring remote fetch via Flight + remote: Vec, +} + +/// Splits partition locations into memory, local disk, object store, and remote categories. fn split_partition_locations( partition_locations: Vec, force_remote_read: bool, -) -> ( - Vec, - Vec, - Vec, -) { - let mut memory_locations = Vec::new(); - let mut local_locations = Vec::new(); - let mut remote_locations = Vec::new(); +) -> SplitPartitionLocations { + let mut result = SplitPartitionLocations::default(); for loc in partition_locations { if check_is_memory_location(&loc) { // Memory locations are always read locally - memory_locations.push(loc); + result.memory.push(loc); + } else if check_is_object_store_location(&loc) { + // Object store locations are handled via the runtime_env's registered object stores + result.object_store.push(loc); } else if !force_remote_read && check_is_local_location(&loc) { - local_locations.push(loc); + result.local.push(loc); } else { - remote_locations.push(loc); + result.remote.push(loc); } } - (memory_locations, local_locations, remote_locations) + result } #[allow(clippy::too_many_arguments)] @@ -437,23 +450,25 @@ fn send_fetch_partitions( customize_endpoint: Option>, use_tls: bool, metrics_callback: Option>, + runtime_env: Arc, ) -> AbortableReceiverStream { let (response_sender, response_receiver) = mpsc::channel(max_request_num); let semaphore = Arc::new(Semaphore::new(max_request_num)); let mut spawned_tasks: Vec> = vec![]; - let (memory_locations, local_locations, remote_locations) = - split_partition_locations(partition_locations, force_remote_read); + let locations = split_partition_locations(partition_locations, force_remote_read); debug!( - "memory shuffle partition count: {}, local shuffle file counts: {}, remote shuffle file count: {}.", - memory_locations.len(), - local_locations.len(), - remote_locations.len() + "memory shuffle partition count: {}, local shuffle file counts: {}, object store shuffle file count: {}, remote shuffle file count: {}.", + locations.memory.len(), + locations.local.len(), + locations.object_store.len(), + locations.remote.len() ); // Read memory partitions first (fastest path) let response_sender_m = response_sender.clone(); + let memory_locations = locations.memory; spawned_tasks.push(SpawnedTask::spawn(async move { for p in memory_locations { let r = PartitionReaderEnum::Memory @@ -469,6 +484,7 @@ fn send_fetch_partitions( let response_sender_c = response_sender.clone(); let customize_endpoint_c = customize_endpoint.clone(); let metrics_callback_c = metrics_callback.clone(); + let local_locations = locations.local; spawned_tasks.push(SpawnedTask::spawn(async move { for p in local_locations { let start_time = std::time::Instant::now(); @@ -506,7 +522,25 @@ fn send_fetch_partitions( } })); - for p in remote_locations.into_iter() { + // Read object store partitions using the RuntimeEnv's registered object stores + let response_sender_os = response_sender.clone(); + let runtime_env_clone = Arc::clone(&runtime_env); + let object_store_locations = locations.object_store; + spawned_tasks.push(SpawnedTask::spawn(async move { + for p in object_store_locations { + let r = fetch_partition_object_store_with_runtime( + &p, + Arc::clone(&runtime_env_clone), + ) + .await; + + if let Err(e) = response_sender_os.send(r).await { + error!("Fail to send response event to the channel due to {e}"); + } + } + })); + + for p in locations.remote.into_iter() { let semaphore = semaphore.clone(); let response_sender = response_sender.clone(); let customize_endpoint_c = customize_endpoint.clone(); @@ -830,11 +864,255 @@ impl RecordBatchStream for InMemoryShuffleStream { } } +/// Fetch partition from object store using the RuntimeEnv's registered object stores. +/// This uses the credentials and configuration from the runtime environment. +/// +/// This implementation streams data from the object store and decodes record batches +/// incrementally using Arrow's `StreamDecoder`, avoiding buffering the entire partition +/// in memory. +async fn fetch_partition_object_store_with_runtime( + location: &PartitionLocation, + runtime_env: Arc, +) -> result::Result { + use object_store::path::Path as ObjectPath; + + let path = &location.path; + let metadata = &location.executor_meta; + let partition_id = &location.partition_id; + + debug!("Fetching shuffle partition from object store using runtime_env: {path}"); + + let url = Url::parse(path).map_err(|e| { + BallistaError::General(format!( + "Failed to parse object store URL '{path}': {e:?}" + )) + })?; + + // Get the object store from the RuntimeEnv's registry + // This uses the credentials configured in the runtime (e.g., SpiceObjectStoreRegistry) + let object_store_url = ObjectStoreUrl::parse(&url).map_err(|e| { + BallistaError::General(format!( + "Failed to parse object store URL '{path}': {e:?}" + )) + })?; + + let store = runtime_env.object_store(&object_store_url).map_err(|e| { + BallistaError::FetchFailed( + metadata.id.clone(), + partition_id.stage_id, + partition_id.partition_id, + format!("Failed to get object store for URL '{path}': {e:?}"), + ) + })?; + + // Extract the object path from the URL + let object_path = ObjectPath::from(url.path().trim_start_matches('/')); + + debug!("Reading object from path: {object_path:?}"); + + let get_result = store.get(&object_path).await.map_err(|e| { + BallistaError::FetchFailed( + metadata.id.clone(), + partition_id.stage_id, + partition_id.partition_id, + format!("Failed to read object from {path}: {e:?}"), + ) + })?; + + // Convert to a streaming byte stream instead of loading all bytes into memory + let byte_stream = get_result.into_stream(); + + // Create the streaming decoder + let stream = ObjectStoreShuffleStream::try_new(byte_stream, path.clone()).await?; + + Ok(Box::pin(stream)) +} + +/// Maximum length of message with schema definition for object store streaming. +const OBJECT_STORE_MAX_SCHEMA_BUFFER_SIZE: usize = 8_388_608; + +/// A streaming reader for Arrow IPC data from object stores. +/// +/// This stream incrementally decodes record batches as data chunks arrive from +/// the object store, avoiding the need to buffer the entire partition in memory. +/// It uses Arrow's `StreamDecoder` to decode IPC messages from the byte stream. +struct ObjectStoreShuffleStream { + /// The Arrow IPC stream decoder + decoder: datafusion::arrow::ipc::reader::StreamDecoder, + /// Buffer holding partially received IPC messages + state_buffer: datafusion::arrow::buffer::Buffer, + /// The underlying byte stream from the object store + byte_stream: Pin> + Send>>, + /// The schema of the data being streamed + schema: SchemaRef, + /// Path for error messages + path: String, +} + +impl ObjectStoreShuffleStream { + /// Creates a new `ObjectStoreShuffleStream` from an object store byte stream. + /// + /// This reads the schema from the stream header and initializes the decoder. + async fn try_new( + byte_stream: impl Stream> + Send + 'static, + path: String, + ) -> result::Result { + use datafusion::arrow::buffer::Buffer; + use datafusion::arrow::ipc::convert::try_schema_from_ipc_buffer; + use datafusion::arrow::ipc::reader::StreamDecoder; + + let mut byte_stream: Pin< + Box> + Send>, + > = Box::pin(byte_stream); + let mut state_buffer = Buffer::default(); + + // Read chunks until we have enough data to parse the schema + loop { + if state_buffer.len() > OBJECT_STORE_MAX_SCHEMA_BUFFER_SIZE { + return Err(BallistaError::General(format!( + "Schema buffer length exceeded maximum buffer size for {path}, \ + expected {} actual: {}", + OBJECT_STORE_MAX_SCHEMA_BUFFER_SIZE, + state_buffer.len() + ))); + } + + match byte_stream.next().await { + Some(Ok(blob)) => { + state_buffer = Self::combine_buffers(&state_buffer, &blob); + + match try_schema_from_ipc_buffer(state_buffer.as_slice()) { + Ok(schema) => { + return Ok(Self { + decoder: StreamDecoder::new(), + state_buffer, + byte_stream, + schema: Arc::new(schema), + path, + }); + } + Err(datafusion::arrow::error::ArrowError::ParseError(_)) => { + // Parse errors are ignored as we may not have received the + // whole message yet, so the schema cannot be extracted + } + Err(e) => { + return Err(BallistaError::General(format!( + "Failed to parse schema from {path}: {e:?}" + ))); + } + } + } + Some(Err(e)) => { + return Err(BallistaError::General(format!( + "Error reading from object store {path}: {e:?}" + ))); + } + None => { + return Err(BallistaError::General(format!( + "Premature end of stream while reading schema from {path}" + ))); + } + } + } + } + + fn combine_buffers( + first: &datafusion::arrow::buffer::Buffer, + second: &bytes::Bytes, + ) -> datafusion::arrow::buffer::Buffer { + use datafusion::arrow::buffer::MutableBuffer; + let mut combined = MutableBuffer::new(first.len() + second.len()); + combined.extend_from_slice(first.as_slice()); + combined.extend_from_slice(second); + combined.into() + } + + fn decode( + &mut self, + ) -> result::Result, datafusion::arrow::error::ArrowError> { + self.decoder.decode(&mut self.state_buffer) + } + + fn extend_bytes(&mut self, blob: bytes::Bytes) { + self.state_buffer = Self::combine_buffers(&self.state_buffer, &blob); + } +} + +impl Stream for ObjectStoreShuffleStream { + type Item = Result; + + fn poll_next( + mut self: Pin<&mut Self>, + cx: &mut Context<'_>, + ) -> Poll> { + // First, try to decode a batch from the current buffer + match self.decode() { + Ok(Some(batch)) => return Poll::Ready(Some(Ok(batch))), + Ok(None) => { + // No complete batch in buffer, need more data + } + Err(e) => { + return Poll::Ready(Some(Err(DataFusionError::ArrowError( + Box::new(e), + None, + )))); + } + } + + // Poll the underlying byte stream for more data + match self.byte_stream.poll_next_unpin(cx) { + Poll::Ready(Some(Ok(blob))) => { + self.extend_bytes(blob); + + // Try to decode again with the new data + match self.decode() { + Ok(Some(batch)) => Poll::Ready(Some(Ok(batch))), + Ok(None) => { + // Still not enough data, wake ourselves to poll again + cx.waker().wake_by_ref(); + Poll::Pending + } + Err(e) => Poll::Ready(Some(Err(DataFusionError::ArrowError( + Box::new(e), + None, + )))), + } + } + Poll::Ready(Some(Err(e))) => { + Poll::Ready(Some(Err(DataFusionError::External( + format!("Error reading from object store {}: {e:?}", self.path) + .into(), + )))) + } + Poll::Ready(None) => { + // End of stream - try one more decode in case there's remaining data + match self.decode() { + Ok(Some(batch)) => Poll::Ready(Some(Ok(batch))), + Ok(None) => Poll::Ready(None), + Err(e) => Poll::Ready(Some(Err(DataFusionError::ArrowError( + Box::new(e), + None, + )))), + } + } + Poll::Pending => Poll::Pending, + } + } +} + +impl RecordBatchStream for ObjectStoreShuffleStream { + fn schema(&self) -> SchemaRef { + self.schema.clone() + } +} + /// Check if the location is an object store path (S3 or Azure). -#[allow(dead_code)] fn check_is_object_store_location(location: &PartitionLocation) -> bool { let path = location.path.as_str(); - path.starts_with("s3://") || path.starts_with("abfs://") || path.starts_with("az://") + path.starts_with("s3://") + || path.starts_with("abfs://") + || path.starts_with("az://") + || path.starts_with("gs://") } async fn fetch_partition_object_store( @@ -846,7 +1124,7 @@ async fn fetch_partition_object_store( let metadata = &location.executor_meta; let partition_id = &location.partition_id; - debug!("Fetching shuffle partition from object store: {}", path); + debug!("Fetching shuffle partition from object store: {path}"); let batches = fetch_partition_object_store_inner(path) .await @@ -862,8 +1140,7 @@ async fn fetch_partition_object_store( if batches.is_empty() { return Err(BallistaError::General(format!( - "No batches found in shuffle partition at {}", - path + "No batches found in shuffle partition at {path}" ))); } @@ -879,8 +1156,7 @@ async fn fetch_partition_object_store_inner( let url = Url::parse(path).map_err(|e| { BallistaError::General(format!( - "Failed to parse object store URL '{}': {:?}", - path, e + "Failed to parse object store URL '{path}': {e:?}" )) })?; @@ -888,44 +1164,42 @@ async fn fetch_partition_object_store_inner( let store: Arc = match scheme { "s3" => { let bucket = url.host_str().ok_or_else(|| { - BallistaError::General(format!("No bucket in S3 URL: {}", path)) + BallistaError::General(format!("No bucket in S3 URL: {path}")) })?; let builder = AmazonS3Builder::from_env().with_bucket_name(bucket); Arc::new(builder.build().map_err(|e| { - BallistaError::General(format!("Failed to create S3 client: {:?}", e)) + BallistaError::General(format!("Failed to create S3 client: {e:?}")) })?) } "abfs" | "az" => { // Parse Azure URL: abfs://container@account.dfs.core.windows.net/path let host = url.host_str().ok_or_else(|| { - BallistaError::General(format!("No host in Azure URL: {}", path)) + BallistaError::General(format!("No host in Azure URL: {path}")) })?; // Extract container from username portion let container = url.username(); if container.is_empty() { return Err(BallistaError::General(format!( - "No container in Azure URL. Expected format: abfs://container@account.dfs.core.windows.net/path. Got: {}", - path + "No container in Azure URL. Expected format: abfs://container@account.dfs.core.windows.net/path. Got: {path}" ))); } // Extract account from host (account.dfs.core.windows.net) let account = host.split('.').next().ok_or_else(|| { - BallistaError::General(format!("No account in Azure URL: {}", path)) + BallistaError::General(format!("No account in Azure URL: {path}")) })?; let builder = MicrosoftAzureBuilder::from_env() .with_account(account) .with_container_name(container); Arc::new(builder.build().map_err(|e| { - BallistaError::General(format!("Failed to create Azure client: {:?}", e)) + BallistaError::General(format!("Failed to create Azure client: {e:?}")) })?) } _ => { return Err(BallistaError::General(format!( - "Unsupported object store scheme: {}. Supported: s3, abfs, az", - scheme + "Unsupported object store scheme: {scheme}. Supported: s3, abfs, az" ))); } }; @@ -933,28 +1207,27 @@ async fn fetch_partition_object_store_inner( // Extract the object path from the URL let object_path = ObjectPath::from(url.path().trim_start_matches('/')); - debug!("Reading object from path: {:?}", object_path); + debug!("Reading object from path: {object_path:?}"); let get_result = store.get(&object_path).await.map_err(|e| { - BallistaError::General(format!("Failed to read object from {}: {:?}", path, e)) + BallistaError::General(format!("Failed to read object from {path}: {e:?}")) })?; let bytes = get_result.bytes().await.map_err(|e| { - BallistaError::General(format!("Failed to read bytes from {}: {:?}", path, e)) + BallistaError::General(format!("Failed to read bytes from {path}: {e:?}")) })?; let cursor = Cursor::new(bytes.to_vec()); let stream_reader = StreamReader::try_new(cursor, None).map_err(|e| { BallistaError::General(format!( - "Failed to create Arrow stream reader for {}: {:?}", - path, e + "Failed to create Arrow stream reader for {path}: {e:?}" )) })?; let mut batches = Vec::new(); for batch_result in stream_reader { batches.push(batch_result.map_err(|e| { - BallistaError::General(format!("Failed to read batch from {}: {:?}", path, e)) + BallistaError::General(format!("Failed to read batch from {path}: {e:?}")) })?); } @@ -1356,6 +1629,7 @@ mod tests { None, false, None, // No metrics callback in tests + Arc::new(RuntimeEnv::default()), ); let stream = RecordBatchStreamAdapter::new( @@ -1428,4 +1702,204 @@ mod tests { Field::new("str", DataType::Utf8, true), ])) } + + /// Test that ObjectStoreShuffleStream correctly decodes Arrow IPC data + /// delivered in chunks, simulating streaming from an object store. + #[tokio::test] + async fn test_object_store_shuffle_stream() { + use bytes::Bytes; + use datafusion::arrow::ipc::writer::StreamWriter; + + // Create test batches + let schema = Arc::new(Schema::new(vec![ + Field::new("a", DataType::Int32, false), + Field::new("b", DataType::Utf8, true), + ])); + + let batch1 = RecordBatch::try_new( + schema.clone(), + vec![ + Arc::new(Int32Array::from(vec![1, 2, 3])), + Arc::new(StringArray::from(vec![Some("a"), Some("b"), Some("c")])), + ], + ) + .unwrap(); + + let batch2 = RecordBatch::try_new( + schema.clone(), + vec![ + Arc::new(Int32Array::from(vec![4, 5, 6])), + Arc::new(StringArray::from(vec![Some("d"), None, Some("f")])), + ], + ) + .unwrap(); + + // Write batches to IPC format in memory + let mut ipc_data = Vec::new(); + { + let mut writer = StreamWriter::try_new(&mut ipc_data, &schema).unwrap(); + writer.write(&batch1).unwrap(); + writer.write(&batch2).unwrap(); + writer.finish().unwrap(); + } + + // Split IPC data into small chunks to simulate streaming + let chunk_size = 64; // Small chunks to test incremental decoding + let chunks: Vec = ipc_data + .chunks(chunk_size) + .map(Bytes::copy_from_slice) + .collect(); + + // Create a stream that yields chunks with small delays to simulate network + let byte_stream = + futures::stream::iter(chunks.into_iter().map(Ok::<_, object_store::Error>)); + + // Create the ObjectStoreShuffleStream + let mut stream = + ObjectStoreShuffleStream::try_new(byte_stream, "test://path".to_string()) + .await + .expect("Failed to create ObjectStoreShuffleStream"); + + // Verify the schema was correctly parsed + assert_eq!(stream.schema().fields().len(), 2); + assert_eq!(stream.schema().field(0).name(), "a"); + assert_eq!(stream.schema().field(1).name(), "b"); + + // Collect all batches from the stream + let mut collected_batches = Vec::new(); + while let Some(result) = stream.next().await { + collected_batches.push(result.expect("Failed to read batch")); + } + + // Verify we got both batches + assert_eq!(collected_batches.len(), 2); + + // Verify batch1 contents + assert_eq!(collected_batches[0].num_rows(), 3); + let col_a = collected_batches[0] + .column(0) + .as_any() + .downcast_ref::() + .unwrap(); + assert_eq!(col_a.values(), &[1, 2, 3]); + + // Verify batch2 contents + assert_eq!(collected_batches[1].num_rows(), 3); + let col_a = collected_batches[1] + .column(0) + .as_any() + .downcast_ref::() + .unwrap(); + assert_eq!(col_a.values(), &[4, 5, 6]); + } + + /// Test ObjectStoreShuffleStream with single-byte chunks (extreme fragmentation) + #[tokio::test] + async fn test_object_store_shuffle_stream_single_byte_chunks() { + use bytes::Bytes; + use datafusion::arrow::ipc::writer::StreamWriter; + + let schema = Arc::new(Schema::new(vec![Field::new("x", DataType::Int32, false)])); + + let batch = RecordBatch::try_new( + schema.clone(), + vec![Arc::new(Int32Array::from(vec![42, 43, 44]))], + ) + .unwrap(); + + // Write to IPC format + let mut ipc_data = Vec::new(); + { + let mut writer = StreamWriter::try_new(&mut ipc_data, &schema).unwrap(); + writer.write(&batch).unwrap(); + writer.finish().unwrap(); + } + + // Split into single-byte chunks (extreme case) + let chunks: Vec = ipc_data.iter().map(|&b| Bytes::from(vec![b])).collect(); + + let byte_stream = + futures::stream::iter(chunks.into_iter().map(Ok::<_, object_store::Error>)); + + let mut stream = + ObjectStoreShuffleStream::try_new(byte_stream, "test://single".to_string()) + .await + .expect("Failed to create stream with single-byte chunks"); + + let mut count = 0; + while let Some(result) = stream.next().await { + result.expect("Failed to read batch"); + count += 1; + } + assert_eq!(count, 1); + } + + /// Test ObjectStoreShuffleStream handles errors from the byte stream + #[tokio::test] + async fn test_object_store_shuffle_stream_error_handling() { + use bytes::Bytes; + use datafusion::arrow::ipc::writer::StreamWriter; + + let schema = Arc::new(Schema::new(vec![Field::new("x", DataType::Int32, false)])); + + let batch = RecordBatch::try_new( + schema.clone(), + vec![Arc::new(Int32Array::from(vec![1, 2, 3]))], + ) + .unwrap(); + + // Write to IPC format + let mut ipc_data = Vec::new(); + { + let mut writer = StreamWriter::try_new(&mut ipc_data, &schema).unwrap(); + writer.write(&batch).unwrap(); + writer.finish().unwrap(); + } + + // Create chunks but inject an error partway through + let chunk_size = 64; + let chunks: Vec<_> = ipc_data.chunks(chunk_size).collect(); + let mid = chunks.len() / 2; + + let items: Vec> = chunks + .iter() + .enumerate() + .map(|(i, c)| { + if i == mid { + Err(object_store::Error::Generic { + store: "test", + source: "simulated error".into(), + }) + } else { + Ok(Bytes::copy_from_slice(c)) + } + }) + .collect(); + + let byte_stream = futures::stream::iter(items); + + // The stream creation might fail if the error occurs before schema is parsed, + // or reading might fail later + let stream_result = + ObjectStoreShuffleStream::try_new(byte_stream, "test://error".to_string()) + .await; + + // Either creation fails or reading fails - both are acceptable + match stream_result { + Err(_) => { + // Error during schema parsing is fine + } + Ok(mut stream) => { + // Error should occur while reading batches + let mut found_error = false; + while let Some(result) = stream.next().await { + if result.is_err() { + found_error = true; + break; + } + } + assert!(found_error, "Expected an error while reading batches"); + } + } + } } diff --git a/ballista/core/src/execution_plans/shuffle_writer.rs b/ballista/core/src/execution_plans/shuffle_writer.rs index 526b2fe049..0fc8ae577d 100644 --- a/ballista/core/src/execution_plans/shuffle_writer.rs +++ b/ballista/core/src/execution_plans/shuffle_writer.rs @@ -864,6 +864,7 @@ fn result_schema() -> SchemaRef { } #[cfg(test)] +#[cfg(not(feature = "force_hash_collisions"))] mod tests { use super::*; use datafusion::arrow::array::{StringArray, StructArray, UInt32Array, UInt64Array}; @@ -875,8 +876,6 @@ mod tests { use tempfile::TempDir; #[tokio::test] - // number of rows in each partition is a function of the hash output, so don't test here - #[cfg(not(feature = "force_hash_collisions"))] async fn test() -> Result<()> { let session_ctx = SessionContext::new(); let task_ctx = session_ctx.task_ctx(); @@ -932,8 +931,6 @@ mod tests { } #[tokio::test] - // number of rows in each partition is a function of the hash output, so don't test here - #[cfg(not(feature = "force_hash_collisions"))] async fn test_partitioned() -> Result<()> { let session_ctx = SessionContext::new(); let task_ctx = session_ctx.task_ctx(); diff --git a/examples/examples/object-store-builder.rs b/examples/examples/object-store-builder.rs new file mode 100644 index 0000000000..9e5bff9d90 --- /dev/null +++ b/examples/examples/object-store-builder.rs @@ -0,0 +1,134 @@ +// 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. + +use ballista::prelude::BallistaBuilder; +use datafusion::error::Result; +use object_store::aws::AmazonS3Builder; +use std::sync::Arc; + +/// Bucket name to be used for this example +const S3_BUCKET: &str = "ballista"; +/// S3 access key +const S3_ACCESS_KEY_ID: &str = "MINIO"; +/// S3 secret key +const S3_SECRET_KEY: &str = "MINIOSECRET"; +/// S3 endpoint +const S3_ENDPOINT: &str = "http://localhost:9000"; + +/// +/// # Using BallistaBuilder with Pre-Created Object Store +/// +/// This example demonstrates how to use the `BallistaBuilder` API to create +/// a Ballista context with a pre-created object store. This is useful when +/// you have custom authentication (e.g., an authentication bridge) that needs +/// to configure the object store before passing it to Ballista. +/// +/// ## Prerequisites +/// +/// Start minio to act as S3 object store: +/// +/// ```bash +/// docker run --rm -p 9000:9000 -p 9001:9001 \ +/// -e "MINIO_ACCESS_KEY=MINIO" \ +/// -e "MINIO_SECRET_KEY=MINIOSECRET" \ +/// quay.io/minio/minio server /data --console-address ":9001" +/// ``` +/// +/// Then run this example: +/// +/// ```bash +/// cargo run --example object-store-builder +/// ``` +/// +/// ## Using the BallistaBuilder +/// +/// The `BallistaBuilder` provides a fluent API for creating Ballista contexts: +/// +/// ```rust,no_run +/// use ballista::prelude::BallistaBuilder; +/// use object_store::aws::AmazonS3Builder; +/// use std::sync::Arc; +/// +/// // Create an object store with your custom authentication +/// let s3_store = AmazonS3Builder::new() +/// .with_bucket_name("my-bucket") +/// .with_region("us-east-1") +/// .with_access_key_id("my-access-key") +/// .with_secret_access_key("my-secret-key") +/// .build() +/// .unwrap(); +/// +/// // Use the builder to create a context with the object store +/// let ctx = BallistaBuilder::new() +/// .with_object_store("s3://my-bucket", Arc::new(s3_store)) +/// .standalone() +/// .await +/// .unwrap(); +/// ``` +#[tokio::main] +async fn main() -> Result<()> { + let test_data = ballista_examples::test_util::examples_test_data(); + + // Create an S3 object store with custom configuration + // This could be configured via an authentication bridge + let s3_store = AmazonS3Builder::new() + .with_bucket_name(S3_BUCKET) + .with_endpoint(S3_ENDPOINT) + .with_access_key_id(S3_ACCESS_KEY_ID) + .with_secret_access_key(S3_SECRET_KEY) + .with_allow_http(true) + .build()?; + + // Use BallistaBuilder to create a context with the pre-created object store + let ctx = BallistaBuilder::new() + .with_job_name("Object Store Builder Example") + .add_object_store(&format!("s3://{S3_BUCKET}"), Arc::new(s3_store)) + .standalone() + .await?; + + // Register a local parquet file + ctx.register_parquet( + "test", + &format!("{test_data}/alltypes_plain.parquet"), + Default::default(), + ) + .await?; + + // Write data to S3 + let write_dir_path = &format!("s3://{S3_BUCKET}/builder_example.parquet"); + ctx.sql("SELECT * FROM test") + .await? + .write_parquet(write_dir_path, Default::default(), Default::default()) + .await?; + + println!("Successfully wrote data to {}", write_dir_path); + + // Read the data back from S3 + ctx.register_parquet("s3_table", write_dir_path, Default::default()) + .await?; + + let result = ctx + .sql("SELECT id, string_col, timestamp_col FROM s3_table WHERE id > 4") + .await? + .collect() + .await?; + + println!("Query results:"); + datafusion::arrow::util::pretty::print_batches(&result)?; + + Ok(()) +} diff --git a/python/Cargo.lock b/python/Cargo.lock index b1c1c4eb22..20bdf0eb27 100644 --- a/python/Cargo.lock +++ b/python/Cargo.lock @@ -56,12 +56,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" -[[package]] -name = "adler32" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" - [[package]] name = "ahash" version = "0.8.11" @@ -106,12 +100,6 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -179,28 +167,28 @@ checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" [[package]] name = "apache-avro" -version = "0.17.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aef82843a0ec9f8b19567445ad2421ceeb1d711514384bdd3d49fe37102ee13" +checksum = "3a033b4ced7c585199fb78ef50fca7fe2f444369ec48080c5fd072efa1a03cc7" dependencies = [ "bigdecimal", - "bzip2 0.4.4", + "bon", + "bzip2 0.6.1", "crc32fast", "digest", - "libflate", "log", + "miniz_oxide", "num-bigint", "quad-rand", - "rand 0.8.5", + "rand 0.9.2", "regex-lite", "serde", "serde_bytes", "serde_json", "snap", - "strum", - "strum_macros", - "thiserror 1.0.69", - "typed-builder", + "strum 0.27.2", + "strum_macros 0.27.2", + "thiserror 2.0.18", "uuid", "xz2", "zstd", @@ -226,79 +214,145 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "arrow" -version = "55.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3f15b4c6b148206ff3a2b35002e08929c2462467b62b9c02036d9c34f9ef994" -dependencies = [ - "arrow-arith", - "arrow-array", - "arrow-buffer", - "arrow-cast", - "arrow-csv", - "arrow-data", - "arrow-ipc", - "arrow-json", - "arrow-ord", +version = "56.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e833808ff2d94ed40d9379848a950d995043c7fb3e81a30b383f4c6033821cc" +dependencies = [ + "arrow-arith 56.2.0", + "arrow-array 56.2.0", + "arrow-buffer 56.2.0", + "arrow-cast 56.2.0", + "arrow-csv 56.2.0", + "arrow-data 56.2.0", + "arrow-ipc 56.2.0", + "arrow-json 56.2.0", + "arrow-ord 56.2.0", "arrow-pyarrow", - "arrow-row", - "arrow-schema", - "arrow-select", - "arrow-string", + "arrow-row 56.2.0", + "arrow-schema 56.2.0", + "arrow-select 56.2.0", + "arrow-string 56.2.0", +] + +[[package]] +name = "arrow" +version = "57.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2b10dcb159faf30d3f81f6d56c1211a5bea2ca424eabe477648a44b993320e" +dependencies = [ + "arrow-arith 57.2.0", + "arrow-array 57.2.0", + "arrow-buffer 57.2.0", + "arrow-cast 57.2.0", + "arrow-csv 57.2.0", + "arrow-data 57.2.0", + "arrow-ipc 57.2.0", + "arrow-json 57.2.0", + "arrow-ord 57.2.0", + "arrow-row 57.2.0", + "arrow-schema 57.2.0", + "arrow-select 57.2.0", + "arrow-string 57.2.0", ] [[package]] name = "arrow-arith" -version = "55.2.0" +version = "56.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30feb679425110209ae35c3fbf82404a39a4c0436bb3ec36164d8bffed2a4ce4" +checksum = "ad08897b81588f60ba983e3ca39bda2b179bdd84dced378e7df81a5313802ef8" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-array 56.2.0", + "arrow-buffer 56.2.0", + "arrow-data 56.2.0", + "arrow-schema 56.2.0", "chrono", "num", ] +[[package]] +name = "arrow-arith" +version = "57.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "288015089e7931843c80ed4032c5274f02b37bcb720c4a42096d50b390e70372" +dependencies = [ + "arrow-array 57.2.0", + "arrow-buffer 57.2.0", + "arrow-data 57.2.0", + "arrow-schema 57.2.0", + "chrono", + "num-traits", +] + [[package]] name = "arrow-array" -version = "55.2.0" +version = "56.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70732f04d285d49054a48b72c54f791bb3424abae92d27aafdf776c98af161c8" +checksum = "8548ca7c070d8db9ce7aa43f37393e4bfcf3f2d3681df278490772fd1673d08d" dependencies = [ "ahash", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-buffer 56.2.0", + "arrow-data 56.2.0", + "arrow-schema 56.2.0", "chrono", "chrono-tz", "half", - "hashbrown 0.15.2", + "hashbrown 0.16.1", "num", ] +[[package]] +name = "arrow-array" +version = "57.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65ca404ea6191e06bf30956394173337fa9c35f445bd447fe6c21ab944e1a23c" +dependencies = [ + "ahash", + "arrow-buffer 57.2.0", + "arrow-data 57.2.0", + "arrow-schema 57.2.0", + "chrono", + "chrono-tz", + "half", + "hashbrown 0.16.1", + "num-complex", + "num-integer", + "num-traits", +] + [[package]] name = "arrow-buffer" -version = "55.2.0" +version = "56.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "169b1d5d6cb390dd92ce582b06b23815c7953e9dfaaea75556e89d890d19993d" +checksum = "e003216336f70446457e280807a73899dd822feaf02087d31febca1363e2fccc" dependencies = [ "bytes", "half", "num", ] +[[package]] +name = "arrow-buffer" +version = "57.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36356383099be0151dacc4245309895f16ba7917d79bdb71a7148659c9206c56" +dependencies = [ + "bytes", + "half", + "num-bigint", + "num-traits", +] + [[package]] name = "arrow-cast" -version = "55.2.0" +version = "56.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4f12eccc3e1c05a766cafb31f6a60a46c2f8efec9b74c6e0648766d30686af8" +checksum = "919418a0681298d3a77d1a315f625916cb5678ad0d74b9c60108eb15fd083023" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", - "arrow-select", + "arrow-array 56.2.0", + "arrow-buffer 56.2.0", + "arrow-data 56.2.0", + "arrow-schema 56.2.0", + "arrow-select 56.2.0", "atoi", "base64", "chrono", @@ -309,15 +363,52 @@ dependencies = [ "ryu", ] +[[package]] +name = "arrow-cast" +version = "57.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8e372ed52bd4ee88cc1e6c3859aa7ecea204158ac640b10e187936e7e87074" +dependencies = [ + "arrow-array 57.2.0", + "arrow-buffer 57.2.0", + "arrow-data 57.2.0", + "arrow-ord 57.2.0", + "arrow-schema 57.2.0", + "arrow-select 57.2.0", + "atoi", + "base64", + "chrono", + "comfy-table", + "half", + "lexical-core", + "num-traits", + "ryu", +] + +[[package]] +name = "arrow-csv" +version = "56.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa9bf02705b5cf762b6f764c65f04ae9082c7cfc4e96e0c33548ee3f67012eb" +dependencies = [ + "arrow-array 56.2.0", + "arrow-cast 56.2.0", + "arrow-schema 56.2.0", + "chrono", + "csv", + "csv-core", + "regex", +] + [[package]] name = "arrow-csv" -version = "55.2.0" +version = "57.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "012c9fef3f4a11573b2c74aec53712ff9fdae4a95f4ce452d1bbf088ee00f06b" +checksum = "8e4100b729fe656f2e4fb32bc5884f14acf9118d4ad532b7b33c1132e4dce896" dependencies = [ - "arrow-array", - "arrow-cast", - "arrow-schema", + "arrow-array 57.2.0", + "arrow-cast 57.2.0", + "arrow-schema 57.2.0", "chrono", "csv", "csv-core", @@ -326,72 +417,103 @@ dependencies = [ [[package]] name = "arrow-data" -version = "55.2.0" +version = "56.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de1ce212d803199684b658fc4ba55fb2d7e87b213de5af415308d2fee3619c2" +checksum = "a5c64fff1d142f833d78897a772f2e5b55b36cb3e6320376f0961ab0db7bd6d0" dependencies = [ - "arrow-buffer", - "arrow-schema", + "arrow-buffer 56.2.0", + "arrow-schema 56.2.0", "half", "num", ] +[[package]] +name = "arrow-data" +version = "57.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf87f4ff5fc13290aa47e499a8b669a82c5977c6a1fedce22c7f542c1fd5a597" +dependencies = [ + "arrow-buffer 57.2.0", + "arrow-schema 57.2.0", + "half", + "num-integer", + "num-traits", +] + [[package]] name = "arrow-flight" -version = "55.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cb3e1d2b441e6d1d5988e3f7c4523c9466b18ef77d7c525d92d36d4cad49fbe" -dependencies = [ - "arrow-arith", - "arrow-array", - "arrow-buffer", - "arrow-cast", - "arrow-data", - "arrow-ipc", - "arrow-ord", - "arrow-row", - "arrow-schema", - "arrow-select", - "arrow-string", +version = "57.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63654f21676be802d446c6c4bc54f6a47e18d55f9ae6f7195a6f6faf2ecdbeb" +dependencies = [ + "arrow-arith 57.2.0", + "arrow-array 57.2.0", + "arrow-buffer 57.2.0", + "arrow-cast 57.2.0", + "arrow-data 57.2.0", + "arrow-ipc 57.2.0", + "arrow-ord 57.2.0", + "arrow-row 57.2.0", + "arrow-schema 57.2.0", + "arrow-select 57.2.0", + "arrow-string 57.2.0", "base64", "bytes", "futures", "once_cell", "paste", - "prost", - "prost-types", + "prost 0.14.3", + "prost-types 0.14.3", "tonic", + "tonic-prost", +] + +[[package]] +name = "arrow-ipc" +version = "56.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d3594dcddccc7f20fd069bc8e9828ce37220372680ff638c5e00dea427d88f5" +dependencies = [ + "arrow-array 56.2.0", + "arrow-buffer 56.2.0", + "arrow-data 56.2.0", + "arrow-schema 56.2.0", + "arrow-select 56.2.0", + "flatbuffers", + "lz4_flex 0.11.3", + "zstd", ] [[package]] name = "arrow-ipc" -version = "55.2.0" +version = "57.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9ea5967e8b2af39aff5d9de2197df16e305f47f404781d3230b2dc672da5d92" +checksum = "eb3ca63edd2073fcb42ba112f8ae165df1de935627ead6e203d07c99445f2081" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-array 57.2.0", + "arrow-buffer 57.2.0", + "arrow-data 57.2.0", + "arrow-schema 57.2.0", + "arrow-select 57.2.0", "flatbuffers", - "lz4_flex", + "lz4_flex 0.12.0", "zstd", ] [[package]] name = "arrow-json" -version = "55.2.0" +version = "56.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5709d974c4ea5be96d900c01576c7c0b99705f4a3eec343648cb1ca863988a9c" +checksum = "88cf36502b64a127dc659e3b305f1d993a544eab0d48cce704424e62074dc04b" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-cast", - "arrow-data", - "arrow-schema", + "arrow-array 56.2.0", + "arrow-buffer 56.2.0", + "arrow-cast 56.2.0", + "arrow-data 56.2.0", + "arrow-schema 56.2.0", "chrono", "half", - "indexmap 2.10.0", + "indexmap", "lexical-core", "memchr", "num", @@ -400,86 +522,177 @@ dependencies = [ "simdutf8", ] +[[package]] +name = "arrow-json" +version = "57.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a36b2332559d3310ebe3e173f75b29989b4412df4029a26a30cc3f7da0869297" +dependencies = [ + "arrow-array 57.2.0", + "arrow-buffer 57.2.0", + "arrow-cast 57.2.0", + "arrow-data 57.2.0", + "arrow-schema 57.2.0", + "chrono", + "half", + "indexmap", + "itoa", + "lexical-core", + "memchr", + "num-traits", + "ryu", + "serde_core", + "serde_json", + "simdutf8", +] + +[[package]] +name = "arrow-ord" +version = "56.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c8f82583eb4f8d84d4ee55fd1cb306720cddead7596edce95b50ee418edf66f" +dependencies = [ + "arrow-array 56.2.0", + "arrow-buffer 56.2.0", + "arrow-data 56.2.0", + "arrow-schema 56.2.0", + "arrow-select 56.2.0", +] + [[package]] name = "arrow-ord" -version = "55.2.0" +version = "57.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6506e3a059e3be23023f587f79c82ef0bcf6d293587e3272d20f2d30b969b5a7" +checksum = "13c4e0530272ca755d6814218dffd04425c5b7854b87fa741d5ff848bf50aa39" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", - "arrow-select", + "arrow-array 57.2.0", + "arrow-buffer 57.2.0", + "arrow-data 57.2.0", + "arrow-schema 57.2.0", + "arrow-select 57.2.0", ] [[package]] name = "arrow-pyarrow" -version = "55.2.0" +version = "56.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e55ecf16b9b61d433f6e63c72fc6afcf2597d7db96583de88ebb887d1822268" +checksum = "7d924b32e96f8bb74d94cd82bd97b313c432fcb0ea331689ef9e7c6b8be4b258" dependencies = [ - "arrow-array", - "arrow-data", - "arrow-schema", + "arrow-array 56.2.0", + "arrow-data 56.2.0", + "arrow-schema 56.2.0", "pyo3", ] [[package]] name = "arrow-row" -version = "55.2.0" +version = "56.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d07ba24522229d9085031df6b94605e0f4b26e099fb7cdeec37abd941a73753" +dependencies = [ + "arrow-array 56.2.0", + "arrow-buffer 56.2.0", + "arrow-data 56.2.0", + "arrow-schema 56.2.0", + "half", +] + +[[package]] +name = "arrow-row" +version = "57.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52bf7393166beaf79b4bed9bfdf19e97472af32ce5b6b48169d321518a08cae2" +checksum = "b07f52788744cc71c4628567ad834cadbaeb9f09026ff1d7a4120f69edf7abd3" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-array 57.2.0", + "arrow-buffer 57.2.0", + "arrow-data 57.2.0", + "arrow-schema 57.2.0", "half", ] [[package]] name = "arrow-schema" -version = "55.2.0" +version = "56.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af7686986a3bf2254c9fb130c623cdcb2f8e1f15763e7c71c310f0834da3d292" +checksum = "b3aa9e59c611ebc291c28582077ef25c97f1975383f1479b12f3b9ffee2ffabe" dependencies = [ "bitflags", "serde", "serde_json", ] +[[package]] +name = "arrow-schema" +version = "57.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb63203e8e0e54b288d0d8043ca8fa1013820822a27692ef1b78a977d879f2c" +dependencies = [ + "serde_core", + "serde_json", +] + [[package]] name = "arrow-select" -version = "55.2.0" +version = "56.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd2b45757d6a2373faa3352d02ff5b54b098f5e21dccebc45a21806bc34501e5" +checksum = "8c41dbbd1e97bfcaee4fcb30e29105fb2c75e4d82ae4de70b792a5d3f66b2e7a" dependencies = [ "ahash", - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-array 56.2.0", + "arrow-buffer 56.2.0", + "arrow-data 56.2.0", + "arrow-schema 56.2.0", "num", ] +[[package]] +name = "arrow-select" +version = "57.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c96d8a1c180b44ecf2e66c9a2f2bbcb8b1b6f14e165ce46ac8bde211a363411b" +dependencies = [ + "ahash", + "arrow-array 57.2.0", + "arrow-buffer 57.2.0", + "arrow-data 57.2.0", + "arrow-schema 57.2.0", + "num-traits", +] + [[package]] name = "arrow-string" -version = "55.2.0" +version = "56.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0377d532850babb4d927a06294314b316e23311503ed580ec6ce6a0158f49d40" +checksum = "53f5183c150fbc619eede22b861ea7c0eebed8eaac0333eaa7f6da5205fd504d" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", - "arrow-select", + "arrow-array 56.2.0", + "arrow-buffer 56.2.0", + "arrow-data 56.2.0", + "arrow-schema 56.2.0", + "arrow-select 56.2.0", "memchr", "num", "regex", "regex-syntax", ] +[[package]] +name = "arrow-string" +version = "57.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8ad6a81add9d3ea30bf8374ee8329992c7fd246ffd8b7e2f48a3cea5aa0cc9a" +dependencies = [ + "arrow-array 57.2.0", + "arrow-buffer 57.2.0", + "arrow-data 57.2.0", + "arrow-schema 57.2.0", + "arrow-select 57.2.0", + "memchr", + "num-traits", + "regex", + "regex-syntax", +] + [[package]] name = "as_derive_utils" version = "0.11.0" @@ -519,25 +732,14 @@ dependencies = [ ] [[package]] -name = "async-stream" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.6" +name = "async-recursion" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -548,7 +750,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -800,7 +1002,7 @@ dependencies = [ "rustls-native-certs", "rustls-pki-types", "tokio", - "tower 0.5.2", + "tower", "tracing", ] @@ -921,13 +1123,13 @@ dependencies = [ [[package]] name = "axum" -version = "0.7.9" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" dependencies = [ - "async-trait", "axum-core", "bytes", + "form_urlencoded", "futures-util", "http 1.2.0", "http-body 1.0.1", @@ -940,14 +1142,13 @@ dependencies = [ "mime", "percent-encoding", "pin-project-lite", - "rustversion", - "serde", + "serde_core", "serde_json", "serde_path_to_error", "serde_urlencoded", "sync_wrapper", "tokio", - "tower 0.5.2", + "tower", "tower-layer", "tower-service", "tracing", @@ -955,19 +1156,17 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.4.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ - "async-trait", "bytes", - "futures-util", + "futures-core", "http 1.2.0", "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", - "rustversion", "sync_wrapper", "tower-layer", "tower-service", @@ -975,69 +1174,81 @@ dependencies = [ ] [[package]] -name = "ballista" -version = "49.0.0" +name = "backoff" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef9898866b4298120bf4aa00514b14f7b67419330bf3db7038eeebccaec150a3" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +dependencies = [ + "getrandom 0.2.15", + "instant", + "rand 0.8.5", +] + +[[package]] +name = "ballista" +version = "51.0.0" dependencies = [ "async-trait", "ballista-core", "ballista-executor", "ballista-scheduler", - "datafusion", + "datafusion 51.0.0", "log", + "object_store", "tokio", + "tonic", "url", ] [[package]] name = "ballista-core" -version = "49.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26c060b4b2759ea2606c7c649b731199ac38b84920d1341075ea46d8b80bb1a" +version = "51.0.0" dependencies = [ "arrow-flight", "async-trait", "aws-config", "aws-credential-types", + "bytes", "chrono", - "clap", - "datafusion", - "datafusion-proto", - "datafusion-proto-common", + "dashmap", + "datafusion 51.0.0", + "datafusion-proto 51.0.0", + "datafusion-proto-common 51.0.0", "futures", "itertools 0.14.0", "log", "md-5", "object_store", "parking_lot", - "prost", - "prost-types", - "rand 0.9.0", + "prost 0.14.3", + "prost-types 0.14.3", + "rand 0.9.2", "rustc_version", "serde", "tokio", "tokio-stream", "tonic", "tonic-build", + "tonic-prost", + "tonic-prost-build", "url", "uuid", ] [[package]] name = "ballista-executor" -version = "49.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8126f1c93125645b20647644c5f94c328c684c3bed89bf570fd399c630106600" +version = "51.0.0" dependencies = [ - "arrow", + "arrow 57.2.0", "arrow-flight", "async-trait", + "backoff", "ballista-core", + "bytes", "clap", "dashmap", - "datafusion", - "datafusion-proto", + "datafusion 51.0.0", + "datafusion-proto 51.0.0", "futures", "libc", "log", @@ -1056,9 +1267,7 @@ dependencies = [ [[package]] name = "ballista-scheduler" -version = "49.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4839bb1418d8c53c41d5a9dbe263aacaee501e380664b3cab14f60cf68102e0" +version = "51.0.0" dependencies = [ "arrow-flight", "async-trait", @@ -1066,21 +1275,23 @@ dependencies = [ "ballista-core", "clap", "dashmap", - "datafusion", - "datafusion-proto", + "datafusion 51.0.0", + "datafusion-proto 51.0.0", + "datafusion-substrait", "futures", "http 1.2.0", "log", "object_store", "parking_lot", - "prost", - "prost-types", - "rand 0.9.0", + "prost 0.14.3", + "prost-types 0.14.3", + "rand 0.9.2", "serde", "tokio", "tokio-stream", "tonic", - "tonic-build", + "tonic-prost", + "tonic-prost-build", "tracing", "tracing-appender", "tracing-subscriber", @@ -1136,7 +1347,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.104", + "syn 2.0.114", "which", ] @@ -1177,6 +1388,31 @@ dependencies = [ "generic-array", ] +[[package]] +name = "bon" +version = "3.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234655ec178edd82b891e262ea7cf71f6584bcd09eff94db786be23f1821825c" +dependencies = [ + "bon-macros", + "rustversion", +] + +[[package]] +name = "bon-macros" +version = "3.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ec27229c38ed0eb3c0feee3d2c1d6a4379ae44f418a29a658890e062d8f365" +dependencies = [ + "darling", + "ident_case", + "prettyplease", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.114", +] + [[package]] name = "brotli" version = "8.0.1" @@ -1226,16 +1462,6 @@ dependencies = [ "either", ] -[[package]] -name = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -dependencies = [ - "bzip2-sys", - "libc", -] - [[package]] name = "bzip2" version = "0.5.2" @@ -1298,15 +1524,14 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.41" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" dependencies = [ - "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-link 0.1.3", + "windows-link", ] [[package]] @@ -1372,7 +1597,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -1398,12 +1623,12 @@ checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "comfy-table" -version = "7.1.3" +version = "7.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f165e7b643266ea80cb858aed492ad9280e3e05ce24d4a99d7d7b889b6a4d9" +checksum = "e0d05af1e006a2407bedef5af410552494ce5be9090444dbbcb57258c1af3d56" dependencies = [ - "strum", - "strum_macros", + "strum 0.26.3", + "strum_macros 0.26.4", "unicode-width", ] @@ -1455,15 +1680,6 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" -[[package]] -name = "core2" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" -dependencies = [ - "memchr", -] - [[package]] name = "core_extensions" version = "1.5.3" @@ -1490,9 +1706,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] @@ -1550,10 +1766,38 @@ dependencies = [ ] [[package]] -name = "dary_heap" -version = "0.3.7" +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.114", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04d2cd9c18b9f454ed67da600630b021a8a80bf33f8c95896ab33aaf1c26b728" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.114", +] [[package]] name = "dashmap" @@ -1571,52 +1815,52 @@ dependencies = [ [[package]] name = "datafusion" -version = "49.0.2" +version = "50.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69dfeda1633bf8ec75b068d9f6c27cdc392ffcf5ff83128d5dbab65b73c1fd02" +checksum = "2af15bb3c6ffa33011ef579f6b0bcbe7c26584688bd6c994f548e44df67f011a" dependencies = [ - "arrow", - "arrow-ipc", - "arrow-schema", + "arrow 56.2.0", + "arrow-ipc 56.2.0", + "arrow-schema 56.2.0", "async-trait", "bytes", "bzip2 0.6.1", "chrono", - "datafusion-catalog", - "datafusion-catalog-listing", - "datafusion-common", - "datafusion-common-runtime", - "datafusion-datasource", + "datafusion-catalog 50.3.0", + "datafusion-catalog-listing 50.3.0", + "datafusion-common 50.3.0", + "datafusion-common-runtime 50.3.0", + "datafusion-datasource 50.3.0", "datafusion-datasource-avro", - "datafusion-datasource-csv", - "datafusion-datasource-json", - "datafusion-datasource-parquet", - "datafusion-execution", - "datafusion-expr", - "datafusion-expr-common", - "datafusion-functions", - "datafusion-functions-aggregate", - "datafusion-functions-nested", - "datafusion-functions-table", - "datafusion-functions-window", - "datafusion-optimizer", - "datafusion-physical-expr", - "datafusion-physical-expr-common", - "datafusion-physical-optimizer", - "datafusion-physical-plan", - "datafusion-session", - "datafusion-sql", + "datafusion-datasource-csv 50.3.0", + "datafusion-datasource-json 50.3.0", + "datafusion-datasource-parquet 50.3.0", + "datafusion-execution 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-expr-common 50.3.0", + "datafusion-functions 50.3.0", + "datafusion-functions-aggregate 50.3.0", + "datafusion-functions-nested 50.3.0", + "datafusion-functions-table 50.3.0", + "datafusion-functions-window 50.3.0", + "datafusion-optimizer 50.3.0", + "datafusion-physical-expr 50.3.0", + "datafusion-physical-expr-adapter 50.3.0", + "datafusion-physical-expr-common 50.3.0", + "datafusion-physical-optimizer 50.3.0", + "datafusion-physical-plan 50.3.0", + "datafusion-session 50.3.0", + "datafusion-sql 50.3.0", "flate2", "futures", - "hex", "itertools 0.14.0", "log", "object_store", "parking_lot", - "parquet", - "rand 0.9.0", + "parquet 56.2.0", + "rand 0.9.2", "regex", - "sqlparser", + "sqlparser 0.58.0", "tempfile", "tokio", "url", @@ -1626,87 +1870,225 @@ dependencies = [ ] [[package]] -name = "datafusion-catalog" -version = "49.0.2" +name = "datafusion" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2848fd1e85e2953116dab9cc2eb109214b0888d7bbd2230e30c07f1794f642c0" +checksum = "8ba7cb113e9c0bedf9e9765926031e132fa05a1b09ba6e93a6d1a4d7044457b8" dependencies = [ - "arrow", + "arrow 57.2.0", + "arrow-schema 57.2.0", "async-trait", - "dashmap", - "datafusion-common", - "datafusion-common-runtime", - "datafusion-datasource", - "datafusion-execution", - "datafusion-expr", - "datafusion-physical-expr", - "datafusion-physical-plan", - "datafusion-session", - "datafusion-sql", + "bytes", + "bzip2 0.6.1", + "chrono", + "datafusion-catalog 51.0.0", + "datafusion-catalog-listing 51.0.0", + "datafusion-common 51.0.0", + "datafusion-common-runtime 51.0.0", + "datafusion-datasource 51.0.0", + "datafusion-datasource-arrow", + "datafusion-datasource-csv 51.0.0", + "datafusion-datasource-json 51.0.0", + "datafusion-datasource-parquet 51.0.0", + "datafusion-execution 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-expr-common 51.0.0", + "datafusion-functions 51.0.0", + "datafusion-functions-aggregate 51.0.0", + "datafusion-functions-nested 51.0.0", + "datafusion-functions-table 51.0.0", + "datafusion-functions-window 51.0.0", + "datafusion-optimizer 51.0.0", + "datafusion-physical-expr 51.0.0", + "datafusion-physical-expr-adapter 51.0.0", + "datafusion-physical-expr-common 51.0.0", + "datafusion-physical-optimizer 51.0.0", + "datafusion-physical-plan 51.0.0", + "datafusion-session 51.0.0", + "datafusion-sql 51.0.0", + "flate2", "futures", "itertools 0.14.0", "log", "object_store", "parking_lot", + "parquet 57.2.0", + "rand 0.9.2", + "regex", + "rstest", + "sqlparser 0.59.0", + "tempfile", "tokio", + "url", + "uuid", + "xz2", + "zstd", ] [[package]] -name = "datafusion-catalog-listing" -version = "49.0.2" +name = "datafusion-catalog" +version = "50.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "051a1634628c2d1296d4e326823e7536640d87a118966cdaff069b68821ad53b" +checksum = "187622262ad8f7d16d3be9202b4c1e0116f1c9aa387e5074245538b755261621" dependencies = [ - "arrow", + "arrow 56.2.0", "async-trait", - "datafusion-catalog", - "datafusion-common", - "datafusion-datasource", - "datafusion-execution", - "datafusion-expr", - "datafusion-physical-expr", - "datafusion-physical-expr-common", - "datafusion-physical-plan", - "datafusion-session", + "dashmap", + "datafusion-common 50.3.0", + "datafusion-common-runtime 50.3.0", + "datafusion-datasource 50.3.0", + "datafusion-execution 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-physical-expr 50.3.0", + "datafusion-physical-plan 50.3.0", + "datafusion-session 50.3.0", + "datafusion-sql 50.3.0", "futures", + "itertools 0.14.0", "log", "object_store", + "parking_lot", "tokio", ] [[package]] -name = "datafusion-common" -version = "49.0.2" +name = "datafusion-catalog" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "765e4ad4ef7a4500e389a3f1e738791b71ff4c29fd00912c2f541d62b25da096" +checksum = "66a3a799f914a59b1ea343906a0486f17061f39509af74e874a866428951130d" dependencies = [ - "ahash", + "arrow 57.2.0", + "async-trait", + "dashmap", + "datafusion-common 51.0.0", + "datafusion-common-runtime 51.0.0", + "datafusion-datasource 51.0.0", + "datafusion-execution 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-physical-expr 51.0.0", + "datafusion-physical-plan 51.0.0", + "datafusion-session 51.0.0", + "futures", + "itertools 0.14.0", + "log", + "object_store", + "parking_lot", + "tokio", +] + +[[package]] +name = "datafusion-catalog-listing" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9657314f0a32efd0382b9a46fdeb2d233273ece64baa68a7c45f5a192daf0f83" +dependencies = [ + "arrow 56.2.0", + "async-trait", + "datafusion-catalog 50.3.0", + "datafusion-common 50.3.0", + "datafusion-datasource 50.3.0", + "datafusion-execution 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-physical-expr 50.3.0", + "datafusion-physical-expr-common 50.3.0", + "datafusion-physical-plan 50.3.0", + "datafusion-session 50.3.0", + "futures", + "log", + "object_store", + "tokio", +] + +[[package]] +name = "datafusion-catalog-listing" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db1b113c80d7a0febcd901476a57aef378e717c54517a163ed51417d87621b0" +dependencies = [ + "arrow 57.2.0", + "async-trait", + "datafusion-catalog 51.0.0", + "datafusion-common 51.0.0", + "datafusion-datasource 51.0.0", + "datafusion-execution 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-physical-expr 51.0.0", + "datafusion-physical-expr-adapter 51.0.0", + "datafusion-physical-expr-common 51.0.0", + "datafusion-physical-plan 51.0.0", + "futures", + "itertools 0.14.0", + "log", + "object_store", + "tokio", +] + +[[package]] +name = "datafusion-common" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a83760d9a13122d025fbdb1d5d5aaf93dd9ada5e90ea229add92aa30898b2d1" +dependencies = [ + "ahash", "apache-avro", - "arrow", - "arrow-ipc", + "arrow 56.2.0", + "arrow-ipc 56.2.0", "base64", "chrono", "half", "hashbrown 0.14.5", - "hex", - "indexmap 2.10.0", + "indexmap", "libc", "log", "object_store", - "parquet", + "parquet 56.2.0", + "paste", + "recursive", + "sqlparser 0.58.0", + "tokio", + "web-time", +] + +[[package]] +name = "datafusion-common" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c10f7659e96127d25e8366be7c8be4109595d6a2c3eac70421f380a7006a1b0" +dependencies = [ + "ahash", + "arrow 57.2.0", + "arrow-ipc 57.2.0", + "chrono", + "half", + "hashbrown 0.14.5", + "indexmap", + "libc", + "log", + "object_store", + "parquet 57.2.0", "paste", - "pyo3", "recursive", - "sqlparser", + "sqlparser 0.59.0", "tokio", "web-time", ] [[package]] name = "datafusion-common-runtime" -version = "49.0.2" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b6234a6c7173fe5db1c6c35c01a12b2aa0f803a3007feee53483218817f8b1e" +dependencies = [ + "futures", + "log", + "tokio", +] + +[[package]] +name = "datafusion-common-runtime" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40a2ae8393051ce25d232a6065c4558ab5a535c9637d5373bacfd464ac88ea12" +checksum = "b92065bbc6532c6651e2f7dd30b55cba0c7a14f860c7e1d15f165c41a1868d95" dependencies = [ "futures", "log", @@ -1715,32 +2097,33 @@ dependencies = [ [[package]] name = "datafusion-datasource" -version = "49.0.2" +version = "50.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90cd841a77f378bc1a5c4a1c37345e1885a9203b008203f9f4b3a769729bf330" +checksum = "7256c9cb27a78709dd42d0c80f0178494637209cac6e29d5c93edd09b6721b86" dependencies = [ - "arrow", + "arrow 56.2.0", "async-compression", "async-trait", "bytes", "bzip2 0.6.1", "chrono", - "datafusion-common", - "datafusion-common-runtime", - "datafusion-execution", - "datafusion-expr", - "datafusion-physical-expr", - "datafusion-physical-expr-common", - "datafusion-physical-plan", - "datafusion-session", + "datafusion-common 50.3.0", + "datafusion-common-runtime 50.3.0", + "datafusion-execution 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-physical-expr 50.3.0", + "datafusion-physical-expr-adapter 50.3.0", + "datafusion-physical-expr-common 50.3.0", + "datafusion-physical-plan 50.3.0", + "datafusion-session 50.3.0", "flate2", "futures", "glob", "itertools 0.14.0", "log", "object_store", - "parquet", - "rand 0.9.0", + "parquet 56.2.0", + "rand 0.9.2", "tempfile", "tokio", "tokio-util", @@ -1749,25 +2132,84 @@ dependencies = [ "zstd", ] +[[package]] +name = "datafusion-datasource" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fde13794244bc7581cd82f6fff217068ed79cdc344cafe4ab2c3a1c3510b38d6" +dependencies = [ + "arrow 57.2.0", + "async-compression", + "async-trait", + "bytes", + "bzip2 0.6.1", + "chrono", + "datafusion-common 51.0.0", + "datafusion-common-runtime 51.0.0", + "datafusion-execution 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-physical-expr 51.0.0", + "datafusion-physical-expr-adapter 51.0.0", + "datafusion-physical-expr-common 51.0.0", + "datafusion-physical-plan 51.0.0", + "datafusion-session 51.0.0", + "flate2", + "futures", + "glob", + "itertools 0.14.0", + "log", + "object_store", + "rand 0.9.2", + "tokio", + "tokio-util", + "url", + "xz2", + "zstd", +] + +[[package]] +name = "datafusion-datasource-arrow" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "804fa9b4ecf3157982021770617200ef7c1b2979d57bec9044748314775a9aea" +dependencies = [ + "arrow 57.2.0", + "arrow-ipc 57.2.0", + "async-trait", + "bytes", + "datafusion-common 51.0.0", + "datafusion-common-runtime 51.0.0", + "datafusion-datasource 51.0.0", + "datafusion-execution 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-physical-expr-common 51.0.0", + "datafusion-physical-plan 51.0.0", + "datafusion-session 51.0.0", + "futures", + "itertools 0.14.0", + "object_store", + "tokio", +] + [[package]] name = "datafusion-datasource-avro" -version = "49.0.2" +version = "50.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cba1696aa919da9517d29164d45f5902d6cc281f718e8d3bfe98bd52cd1142c" +checksum = "10d40b6953ebc9099b37adfd12fde97eb73ff0cee44355c6dea64b8a4537d561" dependencies = [ "apache-avro", - "arrow", + "arrow 56.2.0", "async-trait", "bytes", "chrono", - "datafusion-catalog", - "datafusion-common", - "datafusion-datasource", - "datafusion-execution", - "datafusion-physical-expr", - "datafusion-physical-expr-common", - "datafusion-physical-plan", - "datafusion-session", + "datafusion-catalog 50.3.0", + "datafusion-common 50.3.0", + "datafusion-datasource 50.3.0", + "datafusion-execution 50.3.0", + "datafusion-physical-expr 50.3.0", + "datafusion-physical-expr-common 50.3.0", + "datafusion-physical-plan 50.3.0", + "datafusion-session 50.3.0", "futures", "num-traits", "object_store", @@ -1776,23 +2218,46 @@ dependencies = [ [[package]] name = "datafusion-datasource-csv" -version = "49.0.2" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64533a90f78e1684bfb113d200b540f18f268134622d7c96bbebc91354d04825" +dependencies = [ + "arrow 56.2.0", + "async-trait", + "bytes", + "datafusion-catalog 50.3.0", + "datafusion-common 50.3.0", + "datafusion-common-runtime 50.3.0", + "datafusion-datasource 50.3.0", + "datafusion-execution 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-physical-expr 50.3.0", + "datafusion-physical-expr-common 50.3.0", + "datafusion-physical-plan 50.3.0", + "datafusion-session 50.3.0", + "futures", + "object_store", + "regex", + "tokio", +] + +[[package]] +name = "datafusion-datasource-csv" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77f4a2c64939c6f0dd15b246723a699fa30d59d0133eb36a86e8ff8c6e2a8dc6" +checksum = "61a1641a40b259bab38131c5e6f48fac0717bedb7dc93690e604142a849e0568" dependencies = [ - "arrow", + "arrow 57.2.0", "async-trait", "bytes", - "datafusion-catalog", - "datafusion-common", - "datafusion-common-runtime", - "datafusion-datasource", - "datafusion-execution", - "datafusion-expr", - "datafusion-physical-expr", - "datafusion-physical-expr-common", - "datafusion-physical-plan", - "datafusion-session", + "datafusion-common 51.0.0", + "datafusion-common-runtime 51.0.0", + "datafusion-datasource 51.0.0", + "datafusion-execution 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-physical-expr-common 51.0.0", + "datafusion-physical-plan 51.0.0", + "datafusion-session 51.0.0", "futures", "object_store", "regex", @@ -1801,167 +2266,312 @@ dependencies = [ [[package]] name = "datafusion-datasource-json" -version = "49.0.2" +version = "50.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11387aaf931b2993ad9273c63ddca33f05aef7d02df9b70fb757429b4b71cdae" +checksum = "8d7ebeb12c77df0aacad26f21b0d033aeede423a64b2b352f53048a75bf1d6e6" dependencies = [ - "arrow", + "arrow 56.2.0", "async-trait", "bytes", - "datafusion-catalog", - "datafusion-common", - "datafusion-common-runtime", - "datafusion-datasource", - "datafusion-execution", - "datafusion-expr", - "datafusion-physical-expr", - "datafusion-physical-expr-common", - "datafusion-physical-plan", - "datafusion-session", + "datafusion-catalog 50.3.0", + "datafusion-common 50.3.0", + "datafusion-common-runtime 50.3.0", + "datafusion-datasource 50.3.0", + "datafusion-execution 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-physical-expr 50.3.0", + "datafusion-physical-expr-common 50.3.0", + "datafusion-physical-plan 50.3.0", + "datafusion-session 50.3.0", "futures", "object_store", "serde_json", "tokio", ] +[[package]] +name = "datafusion-datasource-json" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adeacdb00c1d37271176f8fb6a1d8ce096baba16ea7a4b2671840c5c9c64fe85" +dependencies = [ + "arrow 57.2.0", + "async-trait", + "bytes", + "datafusion-common 51.0.0", + "datafusion-common-runtime 51.0.0", + "datafusion-datasource 51.0.0", + "datafusion-execution 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-physical-expr-common 51.0.0", + "datafusion-physical-plan 51.0.0", + "datafusion-session 51.0.0", + "futures", + "object_store", + "tokio", +] + [[package]] name = "datafusion-datasource-parquet" -version = "49.0.2" +version = "50.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "028f430c5185120bf806347848b8d8acd9823f4038875b3820eeefa35f2bb4a2" +checksum = "09e783c4c7d7faa1199af2df4761c68530634521b176a8d1331ddbc5a5c75133" dependencies = [ - "arrow", + "arrow 56.2.0", "async-trait", "bytes", - "datafusion-catalog", - "datafusion-common", - "datafusion-common-runtime", - "datafusion-datasource", - "datafusion-execution", - "datafusion-expr", - "datafusion-functions-aggregate", - "datafusion-physical-expr", - "datafusion-physical-expr-common", - "datafusion-physical-optimizer", - "datafusion-physical-plan", - "datafusion-pruning", - "datafusion-session", + "datafusion-catalog 50.3.0", + "datafusion-common 50.3.0", + "datafusion-common-runtime 50.3.0", + "datafusion-datasource 50.3.0", + "datafusion-execution 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-functions-aggregate 50.3.0", + "datafusion-physical-expr 50.3.0", + "datafusion-physical-expr-adapter 50.3.0", + "datafusion-physical-expr-common 50.3.0", + "datafusion-physical-optimizer 50.3.0", + "datafusion-physical-plan 50.3.0", + "datafusion-pruning 50.3.0", + "datafusion-session 50.3.0", + "futures", + "itertools 0.14.0", + "log", + "object_store", + "parking_lot", + "parquet 56.2.0", + "rand 0.9.2", + "tokio", +] + +[[package]] +name = "datafusion-datasource-parquet" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d0b60ffd66f28bfb026565d62b0a6cbc416da09814766a3797bba7d85a3cd9" +dependencies = [ + "arrow 57.2.0", + "async-trait", + "bytes", + "datafusion-common 51.0.0", + "datafusion-common-runtime 51.0.0", + "datafusion-datasource 51.0.0", + "datafusion-execution 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-functions-aggregate-common 51.0.0", + "datafusion-physical-expr 51.0.0", + "datafusion-physical-expr-adapter 51.0.0", + "datafusion-physical-expr-common 51.0.0", + "datafusion-physical-plan 51.0.0", + "datafusion-pruning 51.0.0", + "datafusion-session 51.0.0", "futures", - "hex", "itertools 0.14.0", "log", "object_store", "parking_lot", - "parquet", - "rand 0.9.0", + "parquet 57.2.0", "tokio", ] [[package]] name = "datafusion-doc" -version = "49.0.2" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99ee6b1d9a80d13f9deb2291f45c07044b8e62fb540dbde2453a18be17a36429" + +[[package]] +name = "datafusion-doc" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ff336d1d755399753a9e4fbab001180e346fc8bfa063a97f1214b82274c00f8" +checksum = "2b99e13947667b36ad713549237362afb054b2d8f8cc447751e23ec61202db07" [[package]] name = "datafusion-execution" -version = "49.0.2" +version = "50.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "042ea192757d1b2d7dcf71643e7ff33f6542c7704f00228d8b85b40003fd8e0f" +checksum = "a4cec0a57653bec7b933fb248d3ffa3fa3ab3bd33bd140dc917f714ac036f531" dependencies = [ - "arrow", + "arrow 56.2.0", + "async-trait", "dashmap", - "datafusion-common", - "datafusion-expr", + "datafusion-common 50.3.0", + "datafusion-expr 50.3.0", "futures", "log", "object_store", "parking_lot", - "rand 0.9.0", + "rand 0.9.2", "tempfile", "url", ] +[[package]] +name = "datafusion-execution" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63695643190679037bc946ad46a263b62016931547bf119859c511f7ff2f5178" +dependencies = [ + "arrow 57.2.0", + "async-trait", + "dashmap", + "datafusion-common 51.0.0", + "datafusion-expr 51.0.0", + "futures", + "log", + "object_store", + "parking_lot", + "rand 0.9.2", + "tempfile", + "url", +] + +[[package]] +name = "datafusion-expr" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef76910bdca909722586389156d0aa4da4020e1631994d50fadd8ad4b1aa05fe" +dependencies = [ + "arrow 56.2.0", + "async-trait", + "chrono", + "datafusion-common 50.3.0", + "datafusion-doc 50.3.0", + "datafusion-expr-common 50.3.0", + "datafusion-functions-aggregate-common 50.3.0", + "datafusion-functions-window-common 50.3.0", + "datafusion-physical-expr-common 50.3.0", + "indexmap", + "paste", + "recursive", + "serde_json", + "sqlparser 0.58.0", +] + [[package]] name = "datafusion-expr" -version = "49.0.2" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "025222545d6d7fab71e2ae2b356526a1df67a2872222cbae7535e557a42abd2e" +checksum = "f9a4787cbf5feb1ab351f789063398f67654a6df75c4d37d7f637dc96f951a91" dependencies = [ - "arrow", + "arrow 57.2.0", "async-trait", "chrono", - "datafusion-common", - "datafusion-doc", - "datafusion-expr-common", - "datafusion-functions-aggregate-common", - "datafusion-functions-window-common", - "datafusion-physical-expr-common", - "indexmap 2.10.0", + "datafusion-common 51.0.0", + "datafusion-doc 51.0.0", + "datafusion-expr-common 51.0.0", + "datafusion-functions-aggregate-common 51.0.0", + "datafusion-functions-window-common 51.0.0", + "datafusion-physical-expr-common 51.0.0", + "indexmap", + "itertools 0.14.0", "paste", "recursive", "serde_json", - "sqlparser", + "sqlparser 0.59.0", +] + +[[package]] +name = "datafusion-expr-common" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d155ccbda29591ca71a1344dd6bed26c65a4438072b400df9db59447f590bb6" +dependencies = [ + "arrow 56.2.0", + "datafusion-common 50.3.0", + "indexmap", + "itertools 0.14.0", + "paste", ] [[package]] name = "datafusion-expr-common" -version = "49.0.2" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5c267104849d5fa6d81cf5ba88f35ecd58727729c5eb84066c25227b644ae2" +checksum = "5ce2fb1b8c15c9ac45b0863c30b268c69dc9ee7a1ee13ecf5d067738338173dc" dependencies = [ - "arrow", - "datafusion-common", - "indexmap 2.10.0", + "arrow 57.2.0", + "datafusion-common 51.0.0", + "indexmap", "itertools 0.14.0", "paste", ] [[package]] name = "datafusion-ffi" -version = "49.0.2" +version = "50.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec21805d9df2d834e4c6ddfbf8a1bed2bd460b89b01686fe0dcd1cee06d0b60f" +checksum = "25ddb7c4e645df080c27dad13a198d191da328dd1c98e198664a7a0f64b335cc" dependencies = [ "abi_stable", - "arrow", - "arrow-schema", + "arrow 56.2.0", + "arrow-schema 56.2.0", "async-ffi", "async-trait", - "datafusion", - "datafusion-functions-aggregate-common", - "datafusion-proto", - "datafusion-proto-common", + "datafusion 50.3.0", + "datafusion-functions-aggregate-common 50.3.0", + "datafusion-proto 50.3.0", + "datafusion-proto-common 50.3.0", "futures", "log", - "prost", + "prost 0.13.4", "semver", "tokio", ] [[package]] name = "datafusion-functions" -version = "49.0.2" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7de2782136bd6014670fd84fe3b0ca3b3e4106c96403c3ae05c0598577139977" +dependencies = [ + "arrow 56.2.0", + "arrow-buffer 56.2.0", + "base64", + "blake2", + "blake3", + "chrono", + "datafusion-common 50.3.0", + "datafusion-doc 50.3.0", + "datafusion-execution 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-expr-common 50.3.0", + "datafusion-macros 50.3.0", + "hex", + "itertools 0.14.0", + "log", + "md-5", + "rand 0.9.2", + "regex", + "sha2", + "unicode-segmentation", + "uuid", +] + +[[package]] +name = "datafusion-functions" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c620d105aa208fcee45c588765483314eb415f5571cfd6c1bae3a59c5b4d15bb" +checksum = "794a9db7f7b96b3346fc007ff25e994f09b8f0511b4cf7dff651fadfe3ebb28f" dependencies = [ - "arrow", - "arrow-buffer", + "arrow 57.2.0", + "arrow-buffer 57.2.0", "base64", "blake2", "blake3", "chrono", - "datafusion-common", - "datafusion-doc", - "datafusion-execution", - "datafusion-expr", - "datafusion-expr-common", - "datafusion-macros", + "datafusion-common 51.0.0", + "datafusion-doc 51.0.0", + "datafusion-execution 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-expr-common 51.0.0", + "datafusion-macros 51.0.0", "hex", "itertools 0.14.0", "log", "md-5", - "rand 0.9.0", + "num-traits", + "rand 0.9.2", "regex", "sha2", "unicode-segmentation", @@ -1970,20 +2580,41 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate" -version = "49.0.2" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07331fc13603a9da97b74fd8a273f4238222943dffdbbed1c4c6f862a30105bf" +dependencies = [ + "ahash", + "arrow 56.2.0", + "datafusion-common 50.3.0", + "datafusion-doc 50.3.0", + "datafusion-execution 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-functions-aggregate-common 50.3.0", + "datafusion-macros 50.3.0", + "datafusion-physical-expr 50.3.0", + "datafusion-physical-expr-common 50.3.0", + "half", + "log", + "paste", +] + +[[package]] +name = "datafusion-functions-aggregate" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35f61d5198a35ed368bf3aacac74f0d0fa33de7a7cb0c57e9f68ab1346d2f952" +checksum = "1c25210520a9dcf9c2b2cbbce31ebd4131ef5af7fc60ee92b266dc7d159cb305" dependencies = [ "ahash", - "arrow", - "datafusion-common", - "datafusion-doc", - "datafusion-execution", - "datafusion-expr", - "datafusion-functions-aggregate-common", - "datafusion-macros", - "datafusion-physical-expr", - "datafusion-physical-expr-common", + "arrow 57.2.0", + "datafusion-common 51.0.0", + "datafusion-doc 51.0.0", + "datafusion-execution 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-functions-aggregate-common 51.0.0", + "datafusion-macros 51.0.0", + "datafusion-physical-expr 51.0.0", + "datafusion-physical-expr-common 51.0.0", "half", "log", "paste", @@ -1991,34 +2622,70 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate-common" -version = "49.0.2" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5951e572a8610b89968a09b5420515a121fbc305c0258651f318dc07c97ab17" +dependencies = [ + "ahash", + "arrow 56.2.0", + "datafusion-common 50.3.0", + "datafusion-expr-common 50.3.0", + "datafusion-physical-expr-common 50.3.0", +] + +[[package]] +name = "datafusion-functions-aggregate-common" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13efdb17362be39b5024f6da0d977ffe49c0212929ec36eec550e07e2bc7812f" +checksum = "62f4a66f3b87300bb70f4124b55434d2ae3fe80455f3574701d0348da040b55d" dependencies = [ "ahash", - "arrow", - "datafusion-common", - "datafusion-expr-common", - "datafusion-physical-expr-common", + "arrow 57.2.0", + "datafusion-common 51.0.0", + "datafusion-expr-common 51.0.0", + "datafusion-physical-expr-common 51.0.0", +] + +[[package]] +name = "datafusion-functions-nested" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdacca9302c3d8fc03f3e94f338767e786a88a33f5ebad6ffc0e7b50364b9ea3" +dependencies = [ + "arrow 56.2.0", + "arrow-ord 56.2.0", + "datafusion-common 50.3.0", + "datafusion-doc 50.3.0", + "datafusion-execution 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-functions 50.3.0", + "datafusion-functions-aggregate 50.3.0", + "datafusion-functions-aggregate-common 50.3.0", + "datafusion-macros 50.3.0", + "datafusion-physical-expr-common 50.3.0", + "itertools 0.14.0", + "log", + "paste", ] [[package]] name = "datafusion-functions-nested" -version = "49.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9187678af567d7c9e004b72a0b6dc5b0a00ebf4901cb3511ed2db4effe092e66" -dependencies = [ - "arrow", - "arrow-ord", - "datafusion-common", - "datafusion-doc", - "datafusion-execution", - "datafusion-expr", - "datafusion-functions", - "datafusion-functions-aggregate", - "datafusion-functions-aggregate-common", - "datafusion-macros", - "datafusion-physical-expr-common", +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae5c06eed03918dc7fe7a9f082a284050f0e9ecf95d72f57712d1496da03b8c4" +dependencies = [ + "arrow 57.2.0", + "arrow-ord 57.2.0", + "datafusion-common 51.0.0", + "datafusion-doc 51.0.0", + "datafusion-execution 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-expr-common 51.0.0", + "datafusion-functions 51.0.0", + "datafusion-functions-aggregate 51.0.0", + "datafusion-functions-aggregate-common 51.0.0", + "datafusion-macros 51.0.0", + "datafusion-physical-expr-common 51.0.0", "itertools 0.14.0", "log", "paste", @@ -2026,158 +2693,351 @@ dependencies = [ [[package]] name = "datafusion-functions-table" -version = "49.0.2" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c37ff8a99434fbbad604a7e0669717c58c7c4f14c472d45067c4b016621d981" +dependencies = [ + "arrow 56.2.0", + "async-trait", + "datafusion-catalog 50.3.0", + "datafusion-common 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-physical-plan 50.3.0", + "parking_lot", + "paste", +] + +[[package]] +name = "datafusion-functions-table" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecf156589cc21ef59fe39c7a9a841b4a97394549643bbfa88cc44e8588cf8fe5" +checksum = "db4fed1d71738fbe22e2712d71396db04c25de4111f1ec252b8f4c6d3b25d7f5" dependencies = [ - "arrow", + "arrow 57.2.0", "async-trait", - "datafusion-catalog", - "datafusion-common", - "datafusion-expr", - "datafusion-physical-plan", + "datafusion-catalog 51.0.0", + "datafusion-common 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-physical-plan 51.0.0", "parking_lot", "paste", ] [[package]] -name = "datafusion-functions-window" -version = "49.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edcb25e3e369f1366ec9a261456e45b5aad6ea1c0c8b4ce546587207c501ed9e" -dependencies = [ - "arrow", - "datafusion-common", - "datafusion-doc", - "datafusion-expr", - "datafusion-functions-window-common", - "datafusion-macros", - "datafusion-physical-expr", - "datafusion-physical-expr-common", +name = "datafusion-functions-window" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e2aea7c79c926cffabb13dc27309d4eaeb130f4a21c8ba91cdd241c813652b" +dependencies = [ + "arrow 56.2.0", + "datafusion-common 50.3.0", + "datafusion-doc 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-functions-window-common 50.3.0", + "datafusion-macros 50.3.0", + "datafusion-physical-expr 50.3.0", + "datafusion-physical-expr-common 50.3.0", + "log", + "paste", +] + +[[package]] +name = "datafusion-functions-window" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d92206aa5ae21892f1552b4d61758a862a70956e6fd7a95cb85db1de74bc6d1" +dependencies = [ + "arrow 57.2.0", + "datafusion-common 51.0.0", + "datafusion-doc 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-functions-window-common 51.0.0", + "datafusion-macros 51.0.0", + "datafusion-physical-expr 51.0.0", + "datafusion-physical-expr-common 51.0.0", + "log", + "paste", +] + +[[package]] +name = "datafusion-functions-window-common" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fead257ab5fd2ffc3b40fda64da307e20de0040fe43d49197241d9de82a487f" +dependencies = [ + "datafusion-common 50.3.0", + "datafusion-physical-expr-common 50.3.0", +] + +[[package]] +name = "datafusion-functions-window-common" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53ae9bcc39800820d53a22d758b3b8726ff84a5a3e24cecef04ef4e5fdf1c7cc" +dependencies = [ + "datafusion-common 51.0.0", + "datafusion-physical-expr-common 51.0.0", +] + +[[package]] +name = "datafusion-macros" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec6f637bce95efac05cdfb9b6c19579ed4aa5f6b94d951cfa5bb054b7bb4f730" +dependencies = [ + "datafusion-expr 50.3.0", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "datafusion-macros" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1063ad4c9e094b3f798acee16d9a47bd7372d9699be2de21b05c3bd3f34ab848" +dependencies = [ + "datafusion-doc 51.0.0", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "datafusion-optimizer" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6583ef666ae000a613a837e69e456681a9faa96347bf3877661e9e89e141d8a" +dependencies = [ + "arrow 56.2.0", + "chrono", + "datafusion-common 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-expr-common 50.3.0", + "datafusion-physical-expr 50.3.0", + "indexmap", + "itertools 0.14.0", + "log", + "recursive", + "regex", + "regex-syntax", +] + +[[package]] +name = "datafusion-optimizer" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f35f9ec5d08b87fd1893a30c2929f2559c2f9806ca072d8fefca5009dc0f06a" +dependencies = [ + "arrow 57.2.0", + "chrono", + "datafusion-common 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-expr-common 51.0.0", + "datafusion-physical-expr 51.0.0", + "indexmap", + "itertools 0.14.0", + "log", + "recursive", + "regex", + "regex-syntax", +] + +[[package]] +name = "datafusion-physical-expr" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8668103361a272cbbe3a61f72eca60c9b7c706e87cc3565bcf21e2b277b84f6" +dependencies = [ + "ahash", + "arrow 56.2.0", + "datafusion-common 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-expr-common 50.3.0", + "datafusion-functions-aggregate-common 50.3.0", + "datafusion-physical-expr-common 50.3.0", + "half", + "hashbrown 0.14.5", + "indexmap", + "itertools 0.14.0", "log", + "parking_lot", "paste", + "petgraph", ] [[package]] -name = "datafusion-functions-window-common" -version = "49.0.2" +name = "datafusion-physical-expr" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8996a8e11174d0bd7c62dc2f316485affc6ae5ffd5b8a68b508137ace2310294" +checksum = "c30cc8012e9eedcb48bbe112c6eff4ae5ed19cf3003cb0f505662e88b7014c5d" dependencies = [ - "datafusion-common", - "datafusion-physical-expr-common", + "ahash", + "arrow 57.2.0", + "datafusion-common 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-expr-common 51.0.0", + "datafusion-functions-aggregate-common 51.0.0", + "datafusion-physical-expr-common 51.0.0", + "half", + "hashbrown 0.14.5", + "indexmap", + "itertools 0.14.0", + "parking_lot", + "paste", + "petgraph", ] [[package]] -name = "datafusion-macros" -version = "49.0.2" +name = "datafusion-physical-expr-adapter" +version = "50.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ee8d1be549eb7316f437035f2cec7ec42aba8374096d807c4de006a3b5d78a" +checksum = "815acced725d30601b397e39958e0e55630e0a10d66ef7769c14ae6597298bb0" dependencies = [ - "datafusion-expr", - "quote", - "syn 2.0.104", + "arrow 56.2.0", + "datafusion-common 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-functions 50.3.0", + "datafusion-physical-expr 50.3.0", + "datafusion-physical-expr-common 50.3.0", + "itertools 0.14.0", ] [[package]] -name = "datafusion-optimizer" -version = "49.0.2" +name = "datafusion-physical-expr-adapter" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9fa98671458254928af854e5f6c915e66b860a8bde505baea0ff2892deab74d" +checksum = "7f9ff2dbd476221b1f67337699eff432781c4e6e1713d2aefdaa517dfbf79768" dependencies = [ - "arrow", - "chrono", - "datafusion-common", - "datafusion-expr", - "datafusion-expr-common", - "datafusion-physical-expr", - "indexmap 2.10.0", + "arrow 57.2.0", + "datafusion-common 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-functions 51.0.0", + "datafusion-physical-expr 51.0.0", + "datafusion-physical-expr-common 51.0.0", "itertools 0.14.0", - "log", - "recursive", - "regex", - "regex-syntax", ] [[package]] -name = "datafusion-physical-expr" -version = "49.0.2" +name = "datafusion-physical-expr-common" +version = "50.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3515d51531cca5f7b5a6f3ea22742b71bb36fc378b465df124ff9a2fa349b002" +checksum = "6652fe7b5bf87e85ed175f571745305565da2c0b599d98e697bcbedc7baa47c3" dependencies = [ "ahash", - "arrow", - "datafusion-common", - "datafusion-expr", - "datafusion-expr-common", - "datafusion-functions-aggregate-common", - "datafusion-physical-expr-common", - "half", + "arrow 56.2.0", + "datafusion-common 50.3.0", + "datafusion-expr-common 50.3.0", "hashbrown 0.14.5", - "indexmap 2.10.0", "itertools 0.14.0", - "log", - "paste", - "petgraph 0.8.3", ] [[package]] name = "datafusion-physical-expr-common" -version = "49.0.2" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24485475d9c618a1d33b2a3dad003d946dc7a7bbf0354d125301abc0a5a79e3e" +checksum = "90da43e1ec550b172f34c87ec68161986ced70fd05c8d2a2add66eef9c276f03" dependencies = [ "ahash", - "arrow", - "datafusion-common", - "datafusion-expr-common", + "arrow 57.2.0", + "datafusion-common 51.0.0", + "datafusion-expr-common 51.0.0", "hashbrown 0.14.5", "itertools 0.14.0", ] [[package]] name = "datafusion-physical-optimizer" -version = "49.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9da411a0a64702f941a12af2b979434d14ec5d36c6f49296966b2c7639cbb3a" -dependencies = [ - "arrow", - "datafusion-common", - "datafusion-execution", - "datafusion-expr", - "datafusion-expr-common", - "datafusion-physical-expr", - "datafusion-physical-expr-common", - "datafusion-physical-plan", - "datafusion-pruning", +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49b7d623eb6162a3332b564a0907ba00895c505d101b99af78345f1acf929b5c" +dependencies = [ + "arrow 56.2.0", + "datafusion-common 50.3.0", + "datafusion-execution 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-expr-common 50.3.0", + "datafusion-physical-expr 50.3.0", + "datafusion-physical-expr-common 50.3.0", + "datafusion-physical-plan 50.3.0", + "datafusion-pruning 50.3.0", "itertools 0.14.0", "log", "recursive", ] +[[package]] +name = "datafusion-physical-optimizer" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce9804f799acd7daef3be7aaffe77c0033768ed8fdbf5fb82fc4c5f2e6bc14e6" +dependencies = [ + "arrow 57.2.0", + "datafusion-common 51.0.0", + "datafusion-execution 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-expr-common 51.0.0", + "datafusion-physical-expr 51.0.0", + "datafusion-physical-expr-common 51.0.0", + "datafusion-physical-plan 51.0.0", + "datafusion-pruning 51.0.0", + "itertools 0.14.0", + "recursive", +] + +[[package]] +name = "datafusion-physical-plan" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2f7f778a1a838dec124efb96eae6144237d546945587557c9e6936b3414558c" +dependencies = [ + "ahash", + "arrow 56.2.0", + "arrow-ord 56.2.0", + "arrow-schema 56.2.0", + "async-trait", + "chrono", + "datafusion-common 50.3.0", + "datafusion-common-runtime 50.3.0", + "datafusion-execution 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-functions-aggregate-common 50.3.0", + "datafusion-functions-window-common 50.3.0", + "datafusion-physical-expr 50.3.0", + "datafusion-physical-expr-common 50.3.0", + "futures", + "half", + "hashbrown 0.14.5", + "indexmap", + "itertools 0.14.0", + "log", + "parking_lot", + "pin-project-lite", + "tokio", +] + [[package]] name = "datafusion-physical-plan" -version = "49.0.2" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6d168282bb7b54880bb3159f89b51c047db4287f5014d60c3ef4c6e1468212b" +checksum = "0acf0ad6b6924c6b1aa7d213b181e012e2d3ec0a64ff5b10ee6282ab0f8532ac" dependencies = [ "ahash", - "arrow", - "arrow-ord", - "arrow-schema", + "arrow 57.2.0", + "arrow-ord 57.2.0", + "arrow-schema 57.2.0", "async-trait", "chrono", - "datafusion-common", - "datafusion-common-runtime", - "datafusion-execution", - "datafusion-expr", - "datafusion-functions-window-common", - "datafusion-physical-expr", - "datafusion-physical-expr-common", + "datafusion-common 51.0.0", + "datafusion-common-runtime 51.0.0", + "datafusion-execution 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-functions-aggregate-common 51.0.0", + "datafusion-functions-window-common 51.0.0", + "datafusion-physical-expr 51.0.0", + "datafusion-physical-expr-common 51.0.0", "futures", "half", "hashbrown 0.14.5", - "indexmap 2.10.0", + "indexmap", "itertools 0.14.0", "log", "parking_lot", @@ -2187,66 +3047,122 @@ dependencies = [ [[package]] name = "datafusion-proto" -version = "49.0.2" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7df9f606892e6af45763d94d210634eec69b9bb6ced5353381682ff090028a3" +dependencies = [ + "arrow 56.2.0", + "chrono", + "datafusion 50.3.0", + "datafusion-common 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-proto-common 50.3.0", + "object_store", + "prost 0.13.4", +] + +[[package]] +name = "datafusion-proto" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b36a0c84f4500efd90487a004b533bd81de1f2bb3f143f71b7526f33b85d2e2" +checksum = "d368093a98a17d1449b1083ac22ed16b7128e4c67789991869480d8c4a40ecb9" dependencies = [ - "arrow", + "arrow 57.2.0", "chrono", - "datafusion", - "datafusion-common", - "datafusion-expr", - "datafusion-proto-common", + "datafusion-catalog 51.0.0", + "datafusion-catalog-listing 51.0.0", + "datafusion-common 51.0.0", + "datafusion-datasource 51.0.0", + "datafusion-datasource-arrow", + "datafusion-datasource-csv 51.0.0", + "datafusion-datasource-json 51.0.0", + "datafusion-datasource-parquet 51.0.0", + "datafusion-execution 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-functions-table 51.0.0", + "datafusion-physical-expr 51.0.0", + "datafusion-physical-expr-common 51.0.0", + "datafusion-physical-plan 51.0.0", + "datafusion-proto-common 51.0.0", "object_store", - "prost", + "prost 0.14.3", +] + +[[package]] +name = "datafusion-proto-common" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4b14f288ca4ef77743d9672cafecf3adfffff0b9b04af9af79ecbeaaf736901" +dependencies = [ + "arrow 56.2.0", + "datafusion-common 50.3.0", + "prost 0.13.4", ] [[package]] name = "datafusion-proto-common" -version = "49.0.2" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ec788be522806740ad6372c0a2f7e45fb37cb37f786d9b77933add49cdd058f" +checksum = "3b6aef3d5e5c1d2bc3114c4876730cb76a9bdc5a8df31ef1b6db48f0c1671895" dependencies = [ - "arrow", - "datafusion-common", - "prost", + "arrow 57.2.0", + "datafusion-common 51.0.0", + "prost 0.14.3", ] [[package]] name = "datafusion-pruning" -version = "49.0.0" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1e59e2ca14fe3c30f141600b10ad8815e2856caa59ebbd0e3e07cd3d127a65" +dependencies = [ + "arrow 56.2.0", + "arrow-schema 56.2.0", + "datafusion-common 50.3.0", + "datafusion-datasource 50.3.0", + "datafusion-expr-common 50.3.0", + "datafusion-physical-expr 50.3.0", + "datafusion-physical-expr-common 50.3.0", + "datafusion-physical-plan 50.3.0", + "itertools 0.14.0", + "log", +] + +[[package]] +name = "datafusion-pruning" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391a457b9d23744c53eeb89edd1027424cba100581488d89800ed841182df905" +checksum = "ac2c2498a1f134a9e11a9f5ed202a2a7d7e9774bd9249295593053ea3be999db" dependencies = [ - "arrow", - "arrow-schema", - "datafusion-common", - "datafusion-datasource", - "datafusion-expr-common", - "datafusion-physical-expr", - "datafusion-physical-expr-common", - "datafusion-physical-plan", + "arrow 57.2.0", + "datafusion-common 51.0.0", + "datafusion-datasource 51.0.0", + "datafusion-expr-common 51.0.0", + "datafusion-physical-expr 51.0.0", + "datafusion-physical-expr-common 51.0.0", + "datafusion-physical-plan 51.0.0", "itertools 0.14.0", "log", ] [[package]] name = "datafusion-python" -version = "49.0.0" +version = "50.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dbc30c03084f9e66391f32f17ea0deeea12574eac240c39f435c7fd308221a4" +checksum = "1b217df4e861162c9290935e5d07150edaedefd4d0635431f4ee119ac1c430f2" dependencies = [ - "arrow", + "arrow 56.2.0", "async-trait", - "datafusion", + "datafusion 50.3.0", "datafusion-ffi", - "datafusion-proto", + "datafusion-proto 50.3.0", "futures", "log", "mimalloc", "object_store", - "prost", - "prost-types", + "parking_lot", + "prost 0.13.4", + "prost-types 0.13.4", "pyo3", "pyo3-async-runtimes", "pyo3-build-config", @@ -2258,20 +3174,20 @@ dependencies = [ [[package]] name = "datafusion-session" -version = "49.0.2" +version = "50.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053201c2bb729c7938f85879034df2b5a52cfaba16f1b3b66ab8505c81b2aad3" +checksum = "21ef8e2745583619bd7a49474e8f45fbe98ebb31a133f27802217125a7b3d58d" dependencies = [ - "arrow", + "arrow 56.2.0", "async-trait", "dashmap", - "datafusion-common", - "datafusion-common-runtime", - "datafusion-execution", - "datafusion-expr", - "datafusion-physical-expr", - "datafusion-physical-plan", - "datafusion-sql", + "datafusion-common 50.3.0", + "datafusion-common-runtime 50.3.0", + "datafusion-execution 50.3.0", + "datafusion-expr 50.3.0", + "datafusion-physical-expr 50.3.0", + "datafusion-physical-plan 50.3.0", + "datafusion-sql 50.3.0", "futures", "itertools 0.14.0", "log", @@ -2280,21 +3196,74 @@ dependencies = [ "tokio", ] +[[package]] +name = "datafusion-session" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f96eebd17555386f459037c65ab73aae8df09f464524c709d6a3134ad4f4776" +dependencies = [ + "async-trait", + "datafusion-common 51.0.0", + "datafusion-execution 51.0.0", + "datafusion-expr 51.0.0", + "datafusion-physical-plan 51.0.0", + "parking_lot", +] + +[[package]] +name = "datafusion-sql" +version = "50.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89abd9868770386fede29e5a4b14f49c0bf48d652c3b9d7a8a0332329b87d50b" +dependencies = [ + "arrow 56.2.0", + "bigdecimal", + "datafusion-common 50.3.0", + "datafusion-expr 50.3.0", + "indexmap", + "log", + "recursive", + "regex", + "sqlparser 0.58.0", +] + [[package]] name = "datafusion-sql" -version = "49.0.2" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9082779be8ce4882189b229c0cff4393bd0808282a7194130c9f32159f185e25" +checksum = "3fc195fe60634b2c6ccfd131b487de46dc30eccae8a3c35a13f136e7f440414f" dependencies = [ - "arrow", + "arrow 57.2.0", "bigdecimal", - "datafusion-common", - "datafusion-expr", - "indexmap 2.10.0", + "chrono", + "datafusion-common 51.0.0", + "datafusion-expr 51.0.0", + "indexmap", "log", "recursive", "regex", - "sqlparser", + "sqlparser 0.59.0", +] + +[[package]] +name = "datafusion-substrait" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2505af06d103a55b4e8ded0c6aeb6c72a771948da939c0bd3f8eee67af475a9c" +dependencies = [ + "async-recursion", + "async-trait", + "chrono", + "datafusion 51.0.0", + "half", + "itertools 0.14.0", + "object_store", + "pbjson-types", + "prost 0.14.3", + "substrait", + "tokio", + "url", + "uuid", ] [[package]] @@ -2325,7 +3294,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -2334,6 +3303,12 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + [[package]] name = "either" version = "1.13.0" @@ -2362,12 +3337,6 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - [[package]] name = "fixedbitset" version = "0.5.7" @@ -2386,13 +3355,13 @@ dependencies = [ [[package]] name = "flate2" -version = "1.1.2" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" dependencies = [ "crc32fast", - "libz-rs-sys", "miniz_oxide", + "zlib-rs", ] [[package]] @@ -2407,11 +3376,17 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -2478,7 +3453,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -2493,6 +3468,12 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" + [[package]] name = "futures-util" version = "0.3.31" @@ -2573,7 +3554,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.2.0", - "indexmap 2.10.0", + "indexmap", "slab", "tokio", "tokio-util", @@ -2582,21 +3563,16 @@ dependencies = [ [[package]] name = "half" -version = "2.6.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", "num-traits", + "zerocopy 0.8.33", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.14.5" @@ -2613,7 +3589,18 @@ version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" dependencies = [ - "foldhash", + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", ] [[package]] @@ -2929,14 +3916,20 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -2955,22 +3948,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - -[[package]] -name = "indexmap" -version = "2.10.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.16.1", ] [[package]] @@ -2979,6 +3962,15 @@ version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + [[package]] name = "integer-encoding" version = "3.0.4" @@ -3133,33 +4125,9 @@ checksum = "2c4a545a15244c7d945065b5d392b2d2d7f21526fba56ce51467b06ed445e8f7" [[package]] name = "libc" -version = "0.2.174" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" - -[[package]] -name = "libflate" -version = "2.1.0" +version = "0.2.180" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45d9dfdc14ea4ef0900c1cddbc8dcd553fbaacd8a4a282cf4018ae9dd04fb21e" -dependencies = [ - "adler32", - "core2", - "crc32fast", - "dary_heap", - "libflate_lz77", -] - -[[package]] -name = "libflate_lz77" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e0d73b369f386f1c44abd9c570d5318f55ccde816ff4b562fa452e5182863d" -dependencies = [ - "core2", - "hashbrown 0.14.5", - "rle-decode-fast", -] +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" [[package]] name = "libloading" @@ -3197,15 +4165,6 @@ dependencies = [ "libc", ] -[[package]] -name = "libz-rs-sys" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "172a788537a2221661b480fee8dc5f96c580eb34fa88764d3205dc356c7e4221" -dependencies = [ - "zlib-rs", -] - [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -3249,6 +4208,15 @@ dependencies = [ "twox-hash 1.6.3", ] +[[package]] +name = "lz4_flex" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab6473172471198271ff72e9379150e9dfd70d8e533e0752a27e515b48dd375e" +dependencies = [ + "twox-hash 2.1.1", +] + [[package]] name = "lzma-sys" version = "0.1.20" @@ -3271,9 +4239,9 @@ dependencies = [ [[package]] name = "matchit" -version = "0.7.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] name = "md-5" @@ -3328,6 +4296,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] @@ -3469,14 +4438,14 @@ dependencies = [ "parking_lot", "percent-encoding", "quick-xml", - "rand 0.9.0", + "rand 0.9.2", "reqwest", "ring", "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", - "thiserror 2.0.11", + "thiserror 2.0.18", "tokio", "tracing", "url", @@ -3537,18 +4506,18 @@ dependencies = [ [[package]] name = "parquet" -version = "55.2.0" +version = "56.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b17da4150748086bd43352bc77372efa9b6e3dbd06a04831d2a98c041c225cfa" +checksum = "f0dbd48ad52d7dccf8ea1b90a3ddbfaea4f69878dd7683e51c507d4bc52b5b27" dependencies = [ "ahash", - "arrow-array", - "arrow-buffer", - "arrow-cast", - "arrow-data", - "arrow-ipc", - "arrow-schema", - "arrow-select", + "arrow-array 56.2.0", + "arrow-buffer 56.2.0", + "arrow-cast 56.2.0", + "arrow-data 56.2.0", + "arrow-ipc 56.2.0", + "arrow-schema 56.2.0", + "arrow-select 56.2.0", "base64", "brotli", "bytes", @@ -3556,8 +4525,8 @@ dependencies = [ "flate2", "futures", "half", - "hashbrown 0.15.2", - "lz4_flex", + "hashbrown 0.16.1", + "lz4_flex 0.11.3", "num", "num-bigint", "object_store", @@ -3572,6 +4541,43 @@ dependencies = [ "zstd", ] +[[package]] +name = "parquet" +version = "57.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6a2926a30477c0b95fea6c28c3072712b139337a242c2cc64817bdc20a8854" +dependencies = [ + "ahash", + "arrow-array 57.2.0", + "arrow-buffer 57.2.0", + "arrow-cast 57.2.0", + "arrow-data 57.2.0", + "arrow-ipc 57.2.0", + "arrow-schema 57.2.0", + "arrow-select 57.2.0", + "base64", + "brotli", + "bytes", + "chrono", + "flate2", + "futures", + "half", + "hashbrown 0.16.1", + "lz4_flex 0.12.0", + "num-bigint", + "num-integer", + "num-traits", + "object_store", + "paste", + "seq-macro", + "simdutf8", + "snap", + "thrift", + "tokio", + "twox-hash 2.1.1", + "zstd", +] + [[package]] name = "parse-zoneinfo" version = "0.3.1" @@ -3588,30 +4594,57 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "percent-encoding" -version = "2.3.1" +name = "pbjson" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "898bac3fa00d0ba57a4e8289837e965baa2dee8c3749f3b11d45a64b4223d9c3" +dependencies = [ + "base64", + "serde", +] + +[[package]] +name = "pbjson-build" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "af22d08a625a2213a78dbb0ffa253318c5c79ce3133d32d296655a7bdfb02095" +dependencies = [ + "heck", + "itertools 0.14.0", + "prost 0.14.3", + "prost-types 0.14.3", +] [[package]] -name = "petgraph" -version = "0.6.5" +name = "pbjson-types" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +checksum = "8e748e28374f10a330ee3bb9f29b828c0ac79831a32bab65015ad9b661ead526" dependencies = [ - "fixedbitset 0.4.2", - "indexmap 2.10.0", + "bytes", + "chrono", + "pbjson", + "pbjson-build", + "prost 0.14.3", + "prost-build", + "serde", ] +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + [[package]] name = "petgraph" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ - "fixedbitset 0.5.7", + "fixedbitset", "hashbrown 0.15.2", - "indexmap 2.10.0", + "indexmap", "serde", ] @@ -3670,7 +4703,7 @@ checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -3714,50 +4747,70 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.29" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.104", + "syn 2.0.114", +] + +[[package]] +name = "proc-macro-crate" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prost" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "2c0fef6c4230e4ccf618a35c59d7ede15dea37de8427500f50aff708806e42ec" dependencies = [ - "unicode-ident", + "bytes", + "prost-derive 0.13.4", ] [[package]] name = "prost" -version = "0.13.4" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c0fef6c4230e4ccf618a35c59d7ede15dea37de8427500f50aff708806e42ec" +checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" dependencies = [ "bytes", - "prost-derive", + "prost-derive 0.14.3", ] [[package]] name = "prost-build" -version = "0.13.4" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0f3e5beed80eb580c68e2c600937ac2c4eedabdfd5ef1e5b7ea4f3fba84497b" +checksum = "343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7" dependencies = [ "heck", - "itertools 0.13.0", + "itertools 0.14.0", "log", "multimap", - "once_cell", - "petgraph 0.6.5", + "petgraph", "prettyplease", - "prost", - "prost-types", + "prost 0.14.3", + "prost-types 0.14.3", + "pulldown-cmark", + "pulldown-cmark-to-cmark", "regex", - "syn 2.0.104", + "syn 2.0.114", "tempfile", ] @@ -3771,7 +4824,20 @@ dependencies = [ "itertools 0.13.0", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", +] + +[[package]] +name = "prost-derive" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" +dependencies = [ + "anyhow", + "itertools 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.114", ] [[package]] @@ -3780,7 +4846,16 @@ version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc2f1e56baa61e93533aebc21af4d2134b70f66275e0fcdf3cbe43d77ff7e8fc" dependencies = [ - "prost", + "prost 0.13.4", +] + +[[package]] +name = "prost-types" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7" +dependencies = [ + "prost 0.14.3", ] [[package]] @@ -3792,6 +4867,26 @@ dependencies = [ "cc", ] +[[package]] +name = "pulldown-cmark" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0" +dependencies = [ + "bitflags", + "memchr", + "unicase", +] + +[[package]] +name = "pulldown-cmark-to-cmark" +version = "22.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50793def1b900256624a709439404384204a5dc3a6ec580281bfaac35e882e90" +dependencies = [ + "pulldown-cmark", +] + [[package]] name = "pyballista" version = "49.0.0" @@ -3801,8 +4896,8 @@ dependencies = [ "ballista-core", "ballista-executor", "ballista-scheduler", - "datafusion", - "datafusion-proto", + "datafusion 51.0.0", + "datafusion-proto 51.0.0", "datafusion-python", "pyo3", "pyo3-build-config", @@ -3812,11 +4907,10 @@ dependencies = [ [[package]] name = "pyo3" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5203598f366b11a02b13aa20cab591229ff0a89fd121a308a5df751d5fc9219" +checksum = "8970a78afe0628a3e3430376fc5fd76b6b45c4d43360ffd6cdd40bdde72b682a" dependencies = [ - "cfg-if", "indoc", "libc", "memoffset", @@ -3830,9 +4924,9 @@ dependencies = [ [[package]] name = "pyo3-async-runtimes" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0b83dc42f9d41f50d38180dad65f0c99763b65a3ff2a81bf351dd35a1df8bf" +checksum = "d73cc6b1b7d8b3cef02101d37390dbdfe7e450dfea14921cae80a9534ba59ef2" dependencies = [ "futures", "once_cell", @@ -3843,9 +4937,9 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99636d423fa2ca130fa5acde3059308006d46f98caac629418e53f7ebb1e9999" +checksum = "458eb0c55e7ece017adeba38f2248ff3ac615e53660d7c71a238d7d2a01c7598" dependencies = [ "once_cell", "target-lexicon", @@ -3853,9 +4947,9 @@ dependencies = [ [[package]] name = "pyo3-ffi" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78f9cf92ba9c409279bc3305b5409d90db2d2c22392d443a87df3a1adad59e33" +checksum = "7114fe5457c61b276ab77c5055f206295b812608083644a5c5b2640c3102565c" dependencies = [ "libc", "pyo3-build-config", @@ -3874,27 +4968,27 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b999cb1a6ce21f9a6b147dcf1be9ffedf02e0043aec74dc390f3007047cecd9" +checksum = "a8725c0a622b374d6cb051d11a0983786448f7785336139c3c94f5aa6bef7e50" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "pyo3-macros-backend" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "822ece1c7e1012745607d5cf0bcb2874769f0f7cb34c4cde03b9358eb9ef911a" +checksum = "4109984c22491085343c05b0dbc54ddc405c3cf7b4374fc533f5c3313a572ccc" dependencies = [ "heck", "proc-macro2", "pyo3-build-config", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -3926,7 +5020,7 @@ dependencies = [ "rustc-hash 2.1.0", "rustls", "socket2 0.5.8", - "thiserror 2.0.11", + "thiserror 2.0.18", "tokio", "tracing", ] @@ -3945,7 +5039,7 @@ dependencies = [ "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.11", + "thiserror 2.0.18", "tinyvec", "tracing", "web-time", @@ -3967,9 +5061,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.40" +version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" dependencies = [ "proc-macro2", ] @@ -3993,13 +5087,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", - "zerocopy 0.8.24", ] [[package]] @@ -4057,7 +5150,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76009fbe0614077fc1a2ce255e3a1881a2e3a3527097d5dc6d8212c585e7e38b" dependencies = [ "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -4071,9 +5164,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.1" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -4083,9 +5176,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -4100,9 +5193,25 @@ checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "regress" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2057b2325e68a893284d1538021ab90279adac1139957ca2a74426c6f118fb48" +dependencies = [ + "hashbrown 0.16.1", + "memchr", +] + +[[package]] +name = "relative-path" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "repr_offset" @@ -4149,7 +5258,7 @@ dependencies = [ "tokio", "tokio-rustls", "tokio-util", - "tower 0.5.2", + "tower", "tower-service", "url", "wasm-bindgen", @@ -4174,10 +5283,33 @@ dependencies = [ ] [[package]] -name = "rle-decode-fast" -version = "1.0.3" +name = "rstest" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5a3193c063baaa2a95a33f03035c8a72b83d97a54916055ba22d35ed3839d49" +dependencies = [ + "futures-timer", + "futures-util", + "rstest_macros", +] + +[[package]] +name = "rstest_macros" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" +checksum = "9c845311f0ff7951c5506121a9ad75aec44d083c31583b2ea5a30bcb0b0abba0" +dependencies = [ + "cfg-if", + "glob", + "proc-macro-crate", + "proc-macro2", + "quote", + "regex", + "relative-path", + "rustc_version", + "syn 2.0.114", + "unicode-ident", +] [[package]] name = "rustc-hash" @@ -4314,6 +5446,30 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.114", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -4345,9 +5501,13 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +dependencies = [ + "serde", + "serde_core", +] [[package]] name = "seq-macro" @@ -4357,10 +5517,11 @@ checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" [[package]] name = "serde" -version = "1.0.217" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ + "serde_core", "serde_derive", ] @@ -4373,27 +5534,48 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "serde_json" -version = "1.0.137" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "930cfb6e6abf99298aaad7d29abbef7a9999a9a8806a40088f55f0dcec03146b" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ "itoa", "memchr", - "ryu", "serde", + "serde_core", + "zmij", ] [[package]] @@ -4406,6 +5588,18 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_tokenstream" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64060d864397305347a78851c51588fd283767e7e7589829e8121d65512340f1" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "syn 2.0.114", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -4418,6 +5612,19 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + [[package]] name = "sha2" version = "0.10.9" @@ -4453,6 +5660,12 @@ dependencies = [ "libc", ] +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + [[package]] name = "simdutf8" version = "0.1.5" @@ -4508,9 +5721,20 @@ dependencies = [ [[package]] name = "sqlparser" -version = "0.55.0" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec4b661c54b1e4b603b37873a18c59920e4c51ea8ea2cf527d925424dbd4437c" +dependencies = [ + "log", + "recursive", + "sqlparser_derive", +] + +[[package]] +name = "sqlparser" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4521174166bac1ff04fe16ef4524c70144cd29682a45978978ca3d7f4e0be11" +checksum = "4591acadbcf52f0af60eafbb2c003232b2b4cd8de5f0e9437cb8b1b59046cc0f" dependencies = [ "log", "recursive", @@ -4525,7 +5749,7 @@ checksum = "da5fc6819faabb412da764b99d3b713bb55083c11e7e0c00144d386cd6a1939c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -4565,6 +5789,12 @@ version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" + [[package]] name = "strum_macros" version = "0.26.4" @@ -4575,7 +5805,44 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.104", + "syn 2.0.114", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "substrait" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62fc4b483a129b9772ccb9c3f7945a472112fdd9140da87f8a4e7f1d44e045d0" +dependencies = [ + "heck", + "pbjson", + "pbjson-build", + "pbjson-types", + "prettyplease", + "prost 0.14.3", + "prost-build", + "prost-types 0.14.3", + "regress", + "schemars", + "semver", + "serde", + "serde_json", + "serde_yaml", + "syn 2.0.114", + "typify", + "walkdir", ] [[package]] @@ -4597,9 +5864,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.104" +version = "2.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" dependencies = [ "proc-macro2", "quote", @@ -4623,7 +5890,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -4656,11 +5923,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl 2.0.18", ] [[package]] @@ -4671,18 +5938,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -4796,7 +6063,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -4822,9 +6089,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.15" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ "bytes", "futures-core", @@ -4833,13 +6100,42 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.23.10+spec-1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +dependencies = [ + "indexmap", + "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" +dependencies = [ + "winnow", +] + [[package]] name = "tonic" -version = "0.12.3" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +checksum = "eb7613188ce9f7df5bfe185db26c5814347d110db17920415cf2fbcad85e7203" dependencies = [ - "async-stream", "async-trait", "axum", "base64", @@ -4853,11 +6149,11 @@ dependencies = [ "hyper-util", "percent-encoding", "pin-project", - "prost", - "socket2 0.5.8", + "socket2 0.6.1", + "sync_wrapper", "tokio", "tokio-stream", - "tower 0.4.13", + "tower", "tower-layer", "tower-service", "tracing", @@ -4865,36 +6161,41 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.12.3" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11" +checksum = "4c40aaccc9f9eccf2cd82ebc111adc13030d23e887244bc9cfa5d1d636049de3" dependencies = [ "prettyplease", "proc-macro2", - "prost-build", - "prost-types", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] -name = "tower" -version = "0.4.13" +name = "tonic-prost" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "66bd50ad6ce1252d87ef024b3d64fe4c3cf54a86fb9ef4c631fdd0ded7aeaa67" dependencies = [ - "futures-core", - "futures-util", - "indexmap 1.9.3", - "pin-project", - "pin-project-lite", - "rand 0.8.5", - "slab", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", + "bytes", + "prost 0.14.3", + "tonic", +] + +[[package]] +name = "tonic-prost-build" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4a16cba4043dc3ff43fcb3f96b4c5c154c64cbd18ca8dce2ab2c6a451d058a2" +dependencies = [ + "prettyplease", + "proc-macro2", + "prost-build", + "prost-types 0.14.3", + "quote", + "syn 2.0.114", + "tempfile", + "tonic-build", ] [[package]] @@ -4905,9 +6206,12 @@ checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", + "indexmap", "pin-project-lite", + "slab", "sync_wrapper", "tokio", + "tokio-util", "tower-layer", "tower-service", "tracing", @@ -4957,7 +6261,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -5043,36 +6347,69 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" [[package]] -name = "typed-builder" -version = "0.19.1" +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "typify" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06fbd5b8de54c5f7c91f6fe4cebb949be2125d7758e630bb58b1d831dbce600" +checksum = "e6d5bcc6f62eb1fa8aa4098f39b29f93dcb914e17158b76c50360911257aa629" dependencies = [ - "typed-builder-macro", + "typify-impl", + "typify-macro", ] [[package]] -name = "typed-builder-macro" -version = "0.19.1" +name = "typify-impl" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9534daa9fd3ed0bd911d462a37f172228077e7abf18c18a5f67199d959205f8" +checksum = "a1eb359f7ffa4f9ebe947fa11a1b2da054564502968db5f317b7e37693cb2240" dependencies = [ + "heck", + "log", "proc-macro2", "quote", - "syn 2.0.104", + "regress", + "schemars", + "semver", + "serde", + "serde_json", + "syn 2.0.114", + "thiserror 2.0.18", + "unicode-ident", ] [[package]] -name = "typenum" -version = "1.17.0" +name = "typify-macro" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "911c32f3c8514b048c1b228361bebb5e6d73aeec01696e8cc0e82e2ffef8ab7a" +dependencies = [ + "proc-macro2", + "quote", + "schemars", + "semver", + "serde", + "serde_json", + "serde_tokenstream", + "syn 2.0.114", + "typify-impl", +] + +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" [[package]] name = "unicode-ident" -version = "1.0.15" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11cd88e12b17c6494200a9c1b683a04fcac9573ed74cd1b62aeb2727c5592243" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-segmentation" @@ -5092,6 +6429,12 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + [[package]] name = "untrusted" version = "0.9.0" @@ -5100,13 +6443,14 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.4" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] [[package]] @@ -5219,7 +6563,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", "wasm-bindgen-shared", ] @@ -5254,7 +6598,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5353,12 +6697,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-link" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" - [[package]] name = "windows-link" version = "0.2.1" @@ -5428,7 +6766,7 @@ version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -5453,7 +6791,7 @@ version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link 0.2.1", + "windows-link", "windows_aarch64_gnullvm 0.53.1", "windows_aarch64_msvc 0.53.1", "windows_i686_gnu 0.53.1", @@ -5560,6 +6898,15 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" +[[package]] +name = "winnow" +version = "0.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +dependencies = [ + "memchr", +] + [[package]] name = "wit-bindgen-rt" version = "0.39.0" @@ -5616,7 +6963,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", "synstructure", ] @@ -5632,11 +6979,11 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.24" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" dependencies = [ - "zerocopy-derive 0.8.24", + "zerocopy-derive 0.8.33", ] [[package]] @@ -5647,18 +6994,18 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "zerocopy-derive" -version = "0.8.24" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -5678,7 +7025,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", "synstructure", ] @@ -5707,20 +7054,26 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "zlib-rs" -version = "0.5.1" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626bd9fa9734751fc50d6060752170984d7053f5a39061f524cda68023d4db8a" +checksum = "40990edd51aae2c2b6907af74ffb635029d5788228222c4bb811e9351c0caad3" + +[[package]] +name = "zmij" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfcd145825aace48cff44a8844de64bf75feec3080e0aa5cdbde72961ae51a65" [[package]] name = "zstd" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" dependencies = [ "zstd-safe", ] diff --git a/python/Cargo.toml b/python/Cargo.toml index 3842193127..437ba71301 100644 --- a/python/Cargo.toml +++ b/python/Cargo.toml @@ -31,15 +31,15 @@ publish = false [dependencies] async-trait = "0.1.77" -ballista = { path = "../ballista/client", version = "50.0.0" } -ballista-core = { path = "../ballista/core", version = "50.0.0" } -ballista-executor = { path = "../ballista/executor", version = "50.0.0" } -ballista-scheduler = { path = "../ballista/scheduler", version = "50.0.0" } -datafusion = { workspace = true } -datafusion-proto = { workspace = true } +ballista = { path = "../ballista/client" } +ballista-core = { path = "../ballista/core" } +ballista-executor = { path = "../ballista/executor" } +ballista-scheduler = { path = "../ballista/scheduler" } +datafusion = "51.0.0" +datafusion-proto = "51.0.0" datafusion-python = "50.1.0" -pyo3 = { version = "0.24", features = ["extension-module", "abi3", "abi3-py39"] } +pyo3 = { version = "0.25", features = ["extension-module", "abi3", "abi3-py39"] } pyo3-log = "0.12" tokio = { version = "1.48", features = ["macros", "rt", "rt-multi-thread", "sync"] } @@ -48,4 +48,4 @@ crate-type = ["cdylib"] name = "ballista" [build-dependencies] -pyo3-build-config = "0.24" +pyo3-build-config = "0.25" diff --git a/python/build.rs b/python/build.rs index 282e2467f2..4878d8b0e1 100644 --- a/python/build.rs +++ b/python/build.rs @@ -15,7 +15,6 @@ // specific language governing permissions and limitations // under the License. -pub mod catalog_serialize_ext; -pub mod remote_function_serialize_ext; -pub mod remote_scalar_udf; -pub mod remote_table_provider; +fn main() { + pyo3_build_config::add_extension_module_link_args(); +}