datafusion-server 0.21.0

Web server library for session-based queries using Arrow and other large datasets as data sources.
Documentation
// object_store/registry.rs

use std::sync::Arc;

use datafusion::execution::context::SessionContext;
use object_store::DynObjectStore;

use crate::response::http_error::ResponseError;
use crate::settings::Settings;

pub fn register(ctx: &SessionContext) -> Result<(), ResponseError> {
    log::debug!("Register to object store from credential manager");

    for (key, store) in &Settings::global().object_store_manager.stores {
        register_to_runtime_env(ctx, key, store.clone())?;
    }

    Ok(())
}

fn register_to_runtime_env(
    ctx: &SessionContext,
    url: &str,
    store: Arc<DynObjectStore>,
) -> Result<(), ResponseError> {
    ctx.runtime_env()
        .register_object_store(&url::Url::parse(url)?, store);

    Ok(())
}