clickhouse_datafusion/providers/
utils.rs1use std::sync::Arc;
2
3use datafusion::catalog::TableProvider;
4
5use super::table::ClickHouseTableProvider;
6
7#[cfg(feature = "federation")]
9pub fn extract_clickhouse_provider(
10 provider: &Arc<dyn TableProvider>,
11) -> Option<&ClickHouseTableProvider> {
12 let fed_provider =
13 provider.as_any().downcast_ref::<datafusion_federation::FederatedTableProviderAdaptor>()?;
14 fed_provider
15 .table_provider
16 .as_ref()
17 .and_then(|p| p.as_any().downcast_ref::<ClickHouseTableProvider>())
18}
19
20#[cfg(not(feature = "federation"))]
22pub fn extract_clickhouse_provider(
23 provider: &Arc<dyn TableProvider>,
24) -> Option<&ClickHouseTableProvider> {
25 provider.as_any().downcast_ref::<ClickHouseTableProvider>()
26}