Skip to content

Commit 3a21ab7

Browse files
authored
make the datafusion-federation dependency optional (#145)
* make the datafusion-federation dependency optional * conditionally compile federation-related code
1 parent e9a53cf commit 3a21ab7

File tree

6 files changed

+15
-4
lines changed

6 files changed

+15
-4
lines changed

Cargo.toml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ datafusion-expr = { version = "42.0.0", optional = true }
2525
datafusion-physical-expr = { version = "42.0.0", optional = true }
2626
datafusion-physical-plan = { version = "42.0.0", optional = true }
2727
datafusion-proto = { version = "42.0.0", optional = true }
28-
datafusion-federation = { version = "0.3.0", features = ["sql"] }
28+
datafusion-federation = { version = "0.3.0", features = ["sql"], optional = true }
2929
duckdb = { version = "1.1.1", features = [
3030
"bundled",
3131
"r2d2",
@@ -105,8 +105,10 @@ flight = [
105105
"dep:serde",
106106
"dep:tonic",
107107
]
108-
duckdb-federation = ["duckdb"]
109-
sqlite-federation = ["sqlite"]
110-
postgres-federation = ["postgres"]
108+
federation = ["dep:datafusion-federation"]
109+
duckdb-federation = ["duckdb", "federation"]
110+
sqlite-federation = ["sqlite", "federation"]
111+
postgres-federation = ["postgres", "federation"]
112+
mysql-federation = ["mysql", "federation"]
111113

112114

src/mysql.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ impl MySQLTableFactory {
5555
.context(UnableToConstructSQLTableSnafu)?,
5656
);
5757

58+
#[cfg(feature = "mysql-federation")]
5859
let table_provider = Arc::new(
5960
table_provider
6061
.create_federated_table_provider()

src/postgres.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ impl PostgresTableFactory {
152152
.map_err(|e| Box::new(e) as Box<dyn std::error::Error + Send + Sync>)?,
153153
);
154154

155+
#[cfg(feature = "postgres-federation")]
155156
let table_provider = Arc::new(
156157
table_provider
157158
.create_federated_table_provider()

src/sql/sql_provider_datafusion/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ use datafusion::{
3838
sql::{unparser::Unparser, TableReference},
3939
};
4040

41+
#[cfg(feature = "federation")]
4142
pub mod federation;
4243

4344
#[derive(Debug, Snafu)]

tests/postgres/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use datafusion::execution::context::SessionContext;
99
use datafusion::logical_expr::CreateExternalTable;
1010
use datafusion::physical_plan::collect;
1111
use datafusion::physical_plan::memory::MemoryExec;
12+
#[cfg(feature = "postgres-federation")]
1213
use datafusion_federation::schema_cast::record_convert::try_cast_to;
1314

1415
use datafusion_table_providers::{
@@ -76,13 +77,15 @@ async fn arrow_postgres_round_trip(
7677
record_batch[0].columns()
7778
);
7879

80+
#[cfg(feature = "postgres-federation")]
7981
let casted_result =
8082
try_cast_to(record_batch[0].clone(), source_schema).expect("Failed to cast record batch");
8183

8284
// Check results
8385
assert_eq!(record_batch.len(), 1);
8486
assert_eq!(record_batch[0].num_rows(), arrow_record.num_rows());
8587
assert_eq!(record_batch[0].num_columns(), arrow_record.num_columns());
88+
#[cfg(feature = "postgres-federation")]
8689
assert_eq!(arrow_record, casted_result);
8790
}
8891

tests/sqlite/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use crate::arrow_record_batch_gen::*;
22
use arrow::array::RecordBatch;
33
use arrow::datatypes::SchemaRef;
44
use datafusion::execution::context::SessionContext;
5+
#[cfg(feature = "sqlite-federation")]
56
use datafusion_federation::schema_cast::record_convert::try_cast_to;
67
use datafusion_table_providers::sql::arrow_sql_gen::statement::{
78
CreateTableBuilder, InsertBuilder,
@@ -68,6 +69,7 @@ async fn arrow_sqlite_round_trip(
6869

6970
let record_batch = df.collect().await.expect("RecordBatch should be collected");
7071

72+
#[cfg(feature = "sqlite-federation")]
7173
let casted_record = try_cast_to(record_batch[0].clone(), source_schema).unwrap();
7274

7375
tracing::debug!("Original Arrow Record Batch: {:?}", arrow_record.columns());
@@ -80,6 +82,7 @@ async fn arrow_sqlite_round_trip(
8082
assert_eq!(record_batch.len(), 1);
8183
assert_eq!(record_batch[0].num_rows(), arrow_record.num_rows());
8284
assert_eq!(record_batch[0].num_columns(), arrow_record.num_columns());
85+
#[cfg(feature = "sqlite-federation")]
8386
assert_eq!(casted_record, arrow_record);
8487
}
8588

0 commit comments

Comments
 (0)