Skip to content

Commit 78e1e41

Browse files
committed
Feature-gate datafusion-substrait behind optional substrait feature
Makes datafusion-substrait an optional dependency in datafusion-sqllogictest, gated behind a new `substrait` feature flag. This saves ~13s of compile time when substrait is not needed.
1 parent cd6aaa6 commit 78e1e41

5 files changed

Lines changed: 25 additions & 5 deletions

File tree

.github/workflows/rust.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,7 @@ jobs:
524524
# command cannot be run for all the .slt files. Run it for just one that works (limit.slt)
525525
# until most of the tickets in https://github.com/apache/datafusion/issues/16248 are addressed
526526
# and this command can be run without filters.
527-
run: cargo test --test sqllogictests -- --substrait-round-trip limit.slt
527+
run: cargo test --test sqllogictests --features substrait -- --substrait-round-trip limit.slt
528528

529529
# Temporarily commenting out the Windows flow, the reason is enormously slow running build
530530
# Waiting for new Windows 2025 github runner

datafusion/sqllogictest/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ chrono = { workspace = true, optional = true }
4848
clap = { version = "4.5.53", features = ["derive", "env"] }
4949
datafusion = { workspace = true, default-features = true, features = ["avro"] }
5050
datafusion-spark = { workspace = true, default-features = true }
51-
datafusion-substrait = { workspace = true, default-features = true }
51+
datafusion-substrait = { workspace = true, default-features = true, optional = true }
5252
futures = { workspace = true }
5353
half = { workspace = true, default-features = true }
5454
indicatif = "0.18"
@@ -79,6 +79,7 @@ postgres = [
7979
parquet_encryption = [
8080
"datafusion/parquet_encryption",
8181
]
82+
substrait = ["datafusion-substrait"]
8283

8384
[dev-dependencies]
8485
env_logger = { workspace = true }

datafusion/sqllogictest/bin/sqllogictests.rs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,12 @@ use datafusion::common::instant::Instant;
2020
use datafusion::common::utils::get_available_parallelism;
2121
use datafusion::common::{DataFusionError, Result, exec_datafusion_err, exec_err};
2222
use datafusion_sqllogictest::{
23-
CurrentlyExecutingSqlTracker, DataFusion, DataFusionSubstraitRoundTrip, Filter,
24-
TestContext, df_value_validator, read_dir_recursive, setup_scratch_dir,
25-
should_skip_file, should_skip_record, value_normalizer,
23+
CurrentlyExecutingSqlTracker, DataFusion, Filter, TestContext, df_value_validator,
24+
read_dir_recursive, setup_scratch_dir, should_skip_file, should_skip_record,
25+
value_normalizer,
2626
};
27+
#[cfg(feature = "substrait")]
28+
use datafusion_sqllogictest::DataFusionSubstraitRoundTrip;
2729
use futures::stream::StreamExt;
2830
use indicatif::{
2931
HumanDuration, MultiProgress, ProgressBar, ProgressDrawTarget, ProgressStyle,
@@ -287,6 +289,7 @@ async fn run_tests() -> Result<()> {
287289
}
288290
}
289291

292+
#[cfg(feature = "substrait")]
290293
async fn run_test_file_substrait_round_trip(
291294
test_file: TestFile,
292295
validator: Validator,
@@ -328,6 +331,19 @@ async fn run_test_file_substrait_round_trip(
328331
res
329332
}
330333

334+
#[cfg(not(feature = "substrait"))]
335+
async fn run_test_file_substrait_round_trip(
336+
_test_file: TestFile,
337+
_validator: Validator,
338+
_mp: MultiProgress,
339+
_mp_style: ProgressStyle,
340+
_filters: &[Filter],
341+
_currently_executing_sql_tracker: CurrentlyExecutingSqlTracker,
342+
) -> Result<()> {
343+
use datafusion::common::plan_err;
344+
plan_err!("Can not run substrait round-trip as the substrait feature is not enabled")
345+
}
346+
331347
async fn run_test_file(
332348
test_file: TestFile,
333349
validator: Validator,

datafusion/sqllogictest/src/engines/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@
1919
mod conversion;
2020
mod currently_executed_sql;
2121
mod datafusion_engine;
22+
#[cfg(feature = "substrait")]
2223
mod datafusion_substrait_roundtrip_engine;
2324
mod output;
2425

2526
pub use datafusion_engine::DFSqlLogicTestError;
2627
pub use datafusion_engine::DataFusion;
2728
pub use datafusion_engine::convert_batches;
2829
pub use datafusion_engine::convert_schema_to_types;
30+
#[cfg(feature = "substrait")]
2931
pub use datafusion_substrait_roundtrip_engine::DataFusionSubstraitRoundTrip;
3032
pub use output::DFColumnType;
3133
pub use output::DFOutput;

datafusion/sqllogictest/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ pub use engines::DFColumnType;
3333
pub use engines::DFOutput;
3434
pub use engines::DFSqlLogicTestError;
3535
pub use engines::DataFusion;
36+
#[cfg(feature = "substrait")]
3637
pub use engines::DataFusionSubstraitRoundTrip;
3738
pub use engines::convert_batches;
3839
pub use engines::convert_schema_to_types;

0 commit comments

Comments
 (0)