Skip to content

Add feature to link datafusion as dylib#23767

Draft
sergiimk wants to merge 1 commit into
apache:mainfrom
kamu-data:dylib
Draft

Add feature to link datafusion as dylib#23767
sergiimk wants to merge 1 commit into
apache:mainfrom
kamu-data:dylib

Conversation

@sergiimk

@sergiimk sergiimk commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Closes: #6470

Rationale for this change

As we build many tools with datafusion we have many dozens of crates in our workspace depending on it, and every test and example ends up linking DF library statically, resulting in:

  • Bloat - DF contributes around 1.2GiB to every executable in dev profile, linking DF dynamically reduces our dev build footprint from 112GiB to 57GiB
  • Slow build times - linking DF dynamically reduced link times of some executables by 10s.

We believe offering an option for dynamic linking can provide a good productivity boost for local development and shorted interations.

The proposed implementation mirrors dynamic linking in Bevy engine which has provided this option for years for similar reasons. The mechanism is opt-in, and imposes zero cost on consumers who don't enable it.

What changes are included in this PR?

This PR proposes a new feature datafusion/dynamic which when enabled builds a dylib for dynamic linking.

How it Works

  • The existing datafusion crate is renamed to datafusion-core. The package rename is invisible to consumers
    because [lib] name = "datafusion" preserves the import name — all use datafusion::... statements in
    downstream code (and in datafusion's own tests, benches, and bins) continue to work unchanged.
  • A new datafusion-dylib sub-crate is added with crate-type = ["dylib"]. It contains a single use datafusion_core as _; statement, which is what forces the dynamic library to contain the datafusion-core symbol table.
  • A new datafusion facade crate is introduced that re-exports everything from datafusion-core and forwards every existing feature 1:1.
  • The facade owns the new dynamic feature, which is off by default. When enabled, the facade's pulls in datafusion-dylib via #[cfg(feature = "dynamic")] use datafusion_dylib as _;
  • Linker sees duplicated symbols and automatically prefers those from a shared library.

Dependency graph:

                         ┌────────────────┐
                         │   datafusion   │  ← facade (unchanged public name & API)
                         │    (facade)    │     owns the `dynamic` feature
                         └───────┬────────┘
                                 │
                       pub use ::datafusion::*
                                 │
                      ┌──────────┴──────────┐
                      │                     │
                      │  (always)           │  (only when `dynamic` feature is on)
                      │                     │
                      ▼                     ▼
            ┌─────────────────┐   ┌──────────────────┐
            │ datafusion-core │   │ datafusion-dylib │
            │  (renamed from  │   │  crate-type =    │
            │   datafusion)   │   │     ["dylib"]    │
            │                 │   │                  │
            │                 │   │  use datafusion  │
            │                 │◄──┤       as _;      │
            │  all real code  │   │                  │
            └─────────────────┘   └──────────────────┘

When dynamic feature is off (default), datafusion-dylib is not compiled at all — no cost.

Downsides & Limitations

  • All feature flags need to be propagated 1:1 from the facade into the core crate adding slight maintenance burden
  • Current PR uses [lib] name = "datafusion" on core crate which can cause confusion with the facade crate. This is only to keep use datafusion::* inside the datafusion-core crate working unchanged. Full PR should probably change those statements to use crate::*.

Alternatives

  • Always build DF as dylib - impacts how people distribute their client apps, can impact performance
  • Specify crate-type = ["rlib", "dylib"] with -C prefer-dynamic compile option - currently this will always build both types of libraries, adding overhead for users that don't need dynamic lib
  • Let users create dynamic wrappers in their workspaces - this was painful to do and breaks down with transitive dependencies on DF

Are these changes tested?

We have tested it in our builds against a fork, but more tweaks may be necessary for different target platforms (e.g. wasm).

Are there any user-facing changes?

No. The new facade library should be fully substitutable for the original one.

@github-actions github-actions Bot added the core Core DataFusion crate label Jul 21, 2026
@github-actions

Copy link
Copy Markdown

Thank you for opening this pull request!

Reviewer note: cargo-semver-checks reported the current version number is not SemVer-compatible with the changes in this pull request (compared against the base branch).

Details
     Cloning apache/main
    Building datafusion v54.0.0 (current)
       Built [ 151.337s] (current)
     Parsing datafusion v54.0.0 (current)
      Parsed [   0.010s] (current)
    Building datafusion v54.0.0 (baseline)
       Built [ 107.457s] (baseline)
     Parsing datafusion v54.0.0 (baseline)
      Parsed [   0.035s] (baseline)
    Checking datafusion v54.0.0 -> v54.0.0 (no change; assume patch)
     Checked [   0.173s] 223 checks: 213 pass, 10 fail, 0 warn, 30 skip

--- failure declarative_macro_missing: macro_rules declaration removed or renamed ---

Description:
A `macro_rules!` declarative macro cannot be invoked by its prior name. The macro may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/reference/macros-by-example.html#path-based-scope
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/declarative_macro_missing.ron

Failed in:
  macro dataframe, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/dataframe/mod.rs:2664
  macro dataframe, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/dataframe/mod.rs:2664

--- failure enum_missing: pub enum removed or renamed ---

Description:
A publicly-visible enum cannot be imported by its prior path. A `pub use` may have been removed, or the enum itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/enum_missing.ron

Failed in:
  enum datafusion::execution::context::RegisterFunction, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/context/mod.rs:2250

--- failure feature_missing: package feature removed or renamed ---

Description:
A feature has been removed from this package's Cargo.toml. This will break downstream crates which enable that feature.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#cargo-feature-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/feature_missing.ron

Failed in:
  feature flate2 in the package's Cargo.toml
  feature datafusion-sql in the package's Cargo.toml
  feature datafusion-functions-nested in the package's Cargo.toml
  feature zstd in the package's Cargo.toml
  feature sqlparser in the package's Cargo.toml
  feature datafusion-datasource-parquet in the package's Cargo.toml
  feature datafusion-datasource-avro in the package's Cargo.toml
  feature bzip2 in the package's Cargo.toml
  feature liblzma in the package's Cargo.toml

--- failure feature_no_longer_enables_feature: package feature no longer enables another feature ---

Description:
A feature no longer enables another feature in this package's Cargo.toml. This will break downstream crates which rely on the implied feature being enabled.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#cargo-feature-remove-another
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/feature_no_longer_enables_feature.ron

Failed in:
  feature parquet_encryption no longer enables parquet
  feature array_expressions no longer enables nested_expressions

--- failure feature_not_enabled_by_default: package feature is not enabled by default ---

Description:
A feature is no longer enabled by default for this package. This will break downstream crates which rely on the package's default features and require the functionality of this feature.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#cargo-feature-remove-another
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/feature_not_enabled_by_default.ron

Failed in:
  feature sql in the package's Cargo.toml
  feature recursive_protection in the package's Cargo.toml
  feature parquet in the package's Cargo.toml
  feature datetime_expressions in the package's Cargo.toml
  feature encoding_expressions in the package's Cargo.toml
  feature nested_expressions in the package's Cargo.toml
  feature unicode_expressions in the package's Cargo.toml
  feature regex_expressions in the package's Cargo.toml
  feature compression in the package's Cargo.toml
  feature crypto_expressions in the package's Cargo.toml
  feature string_expressions in the package's Cargo.toml

--- failure function_missing: pub fn removed or renamed ---

Description:
A publicly-visible function cannot be imported by its prior path. A `pub use` may have been removed, or the function itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/function_missing.ron

Failed in:
  function datafusion::test::columns, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test/mod.rs:215
  function datafusion::test_util::scan_empty_with_partitions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/mod.rs:78
  function datafusion::test::table_with_decimal, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test/mod.rs:247
  function datafusion::test_util::test_table_with_name, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/mod.rs:130
  function datafusion::test_util::populate_csv_partitions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/mod.rs:151
  function datafusion::physical_planner::is_window_frame_bound_valid, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/physical_planner.rs:2506
  function datafusion::test::scan_partitioned_csv, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test/mod.rs:83
  function datafusion::test_util::bounded_stream, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/mod.rs:251
  function datafusion::test::assert_fields_eq, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test/mod.rs:204
  function datafusion::physical_planner::create_aggregate_expr_and_maybe_filter, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/physical_planner.rs:2659
  function datafusion::test::make_partition, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test/mod.rs:235
  function datafusion::test_util::register_aggregate_csv, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/mod.rs:114
  function datafusion::test_util::plan_and_collect, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/mod.rs:143
  function datafusion::test::object_store::make_test_store_and_state, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test/object_store.rs:48
  function datafusion::physical_planner::create_window_expr_with_name, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/physical_planner.rs:2524
  function datafusion::test_util::register_unbounded_file_with_ordering, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/mod.rs:234
  function datafusion::physical_planner::create_aggregate_expr_with_name_and_maybe_filter, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/physical_planner.rs:2632
  function datafusion::test_util::scan_empty, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/mod.rs:66
  function datafusion::test::table_with_sequence, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test/mod.rs:221
  function datafusion::test_util::aggr_test_schema, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/mod.rs:91
  function datafusion::test_util::test_table, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/mod.rs:137
  function datafusion::test::object_store::register_test_store, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test/object_store.rs:42
  function datafusion::test_util::test_table_with_cache_factory, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/mod.rs:344
  function datafusion::test::object_store::local_unpartitioned_file, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test/object_store.rs:66
  function datafusion::test::create_table_dual, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test/mod.rs:65
  function datafusion::physical_planner::create_window_expr, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/physical_planner.rs:2605
  function datafusion::test::object_store::ensure_head_concurrency, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test/object_store.rs:79
  function datafusion::test::partitioned_file_groups, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test/mod.rs:116

--- failure module_missing: pub module removed or renamed ---

Description:
A publicly-visible module cannot be imported by its prior path. A `pub use` may have been removed, or the module may have been renamed, removed, or made non-public.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/module_missing.ron

Failed in:
  mod datafusion::execution::session_state, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/session_state.rs:18
  mod datafusion::functions_window, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:884
  mod datafusion::execution::context, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/context/mod.rs:18
  mod datafusion::functions_table, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:889
  mod datafusion::physical_planner, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/physical_planner.rs:18
  mod datafusion::variable, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:894
  mod datafusion::scalar, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/scalar.rs:18
  mod datafusion::datasource::file_format::options, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:18
  mod datafusion::execution::options, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:18
  mod datafusion::common::runtime, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:802
  mod datafusion::test::variable, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test/variable.rs:18
  mod datafusion::common, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:798
  mod datafusion::physical_expr_common, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:838
  mod datafusion::test::object_store, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test/object_store.rs:18
  mod datafusion::catalog, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:813
  mod datafusion::datasource::physical_plan, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/physical_plan/mod.rs:18
  mod datafusion::datasource::physical_plan::csv, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/physical_plan/csv.rs:18
  mod datafusion::logical_expr, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:818
  mod datafusion::prelude, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/prelude.rs:18
  mod datafusion::execution, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/mod.rs:18
  mod datafusion::logical_expr_common, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:823
  mod datafusion::test, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test/mod.rs:18
  mod datafusion::datasource::file_format::arrow, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/arrow.rs:18
  mod datafusion::optimizer, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:828
  mod datafusion::datasource::file_format::csv, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/csv.rs:18
  mod datafusion::physical_optimizer, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:833
  mod datafusion::datasource::file_format::json, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/json.rs:18
  mod datafusion::test_util::csv, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/csv.rs:18
  mod datafusion::test_util::parquet, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/parquet.rs:18
  mod datafusion::datasource::file_format::avro, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/avro.rs:18
  mod datafusion::datasource::physical_plan::arrow, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/physical_plan/arrow.rs:18
  mod datafusion::physical_expr, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:843
  mod datafusion::datasource::dynamic_file, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/dynamic_file.rs:18
  mod datafusion::test_util, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/mod.rs:18
  mod datafusion::error, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/error.rs:18
  mod datafusion::datasource::file_format::parquet, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/parquet.rs:18
  mod datafusion::prelude::dataframe, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/dataframe/mod.rs:18
  mod datafusion::dataframe, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/dataframe/mod.rs:18
  mod datafusion::physical_expr_adapter, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:848
  mod datafusion::datasource::physical_plan::json, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/physical_plan/json.rs:18
  mod datafusion::physical_plan, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:853
  mod datafusion::datasource::provider, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/provider.rs:18
  mod datafusion::datasource::physical_plan::parquet, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/physical_plan/parquet.rs:18
  mod datafusion::datasource::listing, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/listing/mod.rs:18
  mod datafusion::sql, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:863
  mod datafusion::datasource::listing_table_factory, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/listing_table_factory.rs:18
  mod datafusion::datasource::physical_plan::avro, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/physical_plan/avro.rs:18
  mod datafusion::functions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:868
  mod datafusion::datasource, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/mod.rs:18
  mod datafusion::functions_nested, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:873
  mod datafusion::datasource::file_format, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/mod.rs:18
  mod datafusion::functions_aggregate, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:879

--- failure pub_module_level_const_missing: pub module-level const is missing ---

Description:
A public const is missing or renamed
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/pub_module_level_const_missing.ron

Failed in:
  DATAFUSION_VERSION in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/lib.rs:770

--- failure struct_missing: pub struct removed or renamed ---

Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_missing.ron

Failed in:
  struct datafusion::datasource::file_format::options::ArrowReadOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:362
  struct datafusion::execution::options::ArrowReadOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:362
  struct datafusion::test_util::parquet::TestParquetFile, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/parquet.rs:49
  struct datafusion::datasource::file_format::options::ParquetReadOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:251
  struct datafusion::execution::options::ParquetReadOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:251
  struct datafusion::prelude::ParquetReadOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:251
  struct datafusion::test::variable::SystemVar, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test/variable.rs:27
  struct datafusion::test::variable::UserDefinedVar, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test/variable.rs:50
  struct datafusion::datasource::dynamic_file::DynamicListTableFactory, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/dynamic_file.rs:37
  struct datafusion::datasource::file_format::options::NdJsonReadOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:462
  struct datafusion::execution::options::NdJsonReadOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:462
  struct datafusion::datasource::file_format::options::JsonReadOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:462
  struct datafusion::execution::options::JsonReadOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:462
  struct datafusion::prelude::JsonReadOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:462
  struct datafusion::datasource::file_format::options::CsvReadOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:55
  struct datafusion::execution::options::CsvReadOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:55
  struct datafusion::prelude::CsvReadOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:55
  struct datafusion::datasource::listing_table_factory::ListingTableFactory, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/listing_table_factory.rs:42
  struct datafusion::test_util::parquet::ParquetScanOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/parquet.rs:58
  struct datafusion::execution::context::SQLOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/context/mod.rs:2294
  struct datafusion::prelude::SQLOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/context/mod.rs:2294
  struct datafusion::prelude::dataframe::DataFrameWriteOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/dataframe/mod.rs:76
  struct datafusion::dataframe::DataFrameWriteOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/dataframe/mod.rs:76
  struct datafusion::test_util::TestTableFactory, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/mod.rs:181
  struct datafusion::datasource::file_format::options::AvroReadOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:408
  struct datafusion::execution::options::AvroReadOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:408
  struct datafusion::prelude::AvroReadOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:408
  struct datafusion::execution::context::EmptySerializerRegistry, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/context/mod.rs:2266
  struct datafusion::physical_planner::DefaultPhysicalPlanner, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/physical_planner.rs:282
  struct datafusion::execution::context::SessionContext, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/context/mod.rs:294
  struct datafusion::prelude::SessionContext, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/context/mod.rs:294
  struct datafusion::execution::SessionStateDefaults, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/session_state_defaults.rs:47
  struct datafusion::datasource::provider::DefaultTableFactory, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/provider.rs:37
  struct datafusion::execution::session_state::SessionStateBuilder, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/session_state.rs:1032
  struct datafusion::execution::SessionStateBuilder, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/session_state.rs:1032
  struct datafusion::prelude::dataframe::DataFrame, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/dataframe/mod.rs:229
  struct datafusion::dataframe::DataFrame, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/dataframe/mod.rs:229
  struct datafusion::prelude::DataFrame, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/dataframe/mod.rs:229
  struct datafusion::test_util::TestTableProvider, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/mod.rs:203
  struct datafusion::test_util::csv::TestCsvFile, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/test_util/csv.rs:30
  struct datafusion::execution::context::SessionState, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/session_state.rs:143
  struct datafusion::execution::session_state::SessionState, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/session_state.rs:143
  struct datafusion::execution::SessionState, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/session_state.rs:143

--- failure trait_missing: pub trait removed or renamed ---

Description:
A publicly-visible trait cannot be imported by its prior path. A `pub use` may have been removed, or the trait itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_missing.ron

Failed in:
  trait datafusion::physical_planner::ExtensionPlanner, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/physical_planner.rs:158
  trait datafusion::execution::context::FunctionFactory, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/context/mod.rs:2239
  trait datafusion::datasource::file_format::options::ReadOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:583
  trait datafusion::execution::options::ReadOptions, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/file_format/options.rs:583
  trait datafusion::datasource::listing::ListingTableConfigExt, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/datasource/listing/table.rs:32
  trait datafusion::execution::context::DataFilePaths, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/context/mod.rs:122
  trait datafusion::execution::context::QueryPlanner, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/context/mod.rs:2192
  trait datafusion::physical_planner::PhysicalPlanner, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/physical_planner.rs:126
  trait datafusion::execution::session_state::CacheFactory, previously in file /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/datafusion/core/src/execution/session_state.rs:2342

     Summary semver requires new major version: 10 major and 0 minor checks failed
    Finished [ 260.996s] datafusion
error: failed to retrieve local crate data from git revision

Caused by:
    0: failed to retrieve manifest file from git revision source
    1: possibly due to errors: [
         failed to parse /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e/Cargo.toml: no `package` table,
       ]
    2: package `datafusion-core` not found in /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/77efdc92bdfc59a030c02579d99312c1b30c886e

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 80.71%. Comparing base (050046a) to head (61dcb5c).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #23767      +/-   ##
==========================================
- Coverage   80.71%   80.71%   -0.01%     
==========================================
  Files        1089     1089              
  Lines      368750   368748       -2     
  Branches   368750   368748       -2     
==========================================
- Hits       297631   297621      -10     
- Misses      53375    53379       +4     
- Partials    17744    17748       +4     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

auto detected api change Auto detected API change core Core DataFusion crate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Consider providing an option for dynamic linking

2 participants