)]}'
{
  "commit": "0d2c72b56b65961e1b6a040f172af534725f600f",
  "tree": "8869c973b7bcd32d28baa675fcaf31717bcdfb3a",
  "parents": [
    "ab57cb91cb64037a6d1e7319e9dd3d40849ed7f9"
  ],
  "author": {
    "name": "Andy Grove",
    "email": "agrove@apache.org",
    "time": "Thu Aug 06 08:22:08 2026 -0600"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Aug 06 08:22:08 2026 -0600"
  },
  "message": "chore(deps): bump DataFusion to 54.1.0 (#114)\n\n## Which issue does this PR close?\n\nN/A — routine dependency bump; no tracking issue was filed.\n\n## Rationale for this change\n\nKeeps the binding current with upstream DataFusion. 54.1.0 is the latest\nrelease\nline, and staying close to it keeps the next bump small and makes\nupstream fixes\navailable to Java callers.\n\n## What changes are included in this PR?\n\nBumps `datafusion`, `datafusion-proto`, `datafusion-spark` and\n`datafusion-substrait` from 53.1.0 to 54.1.0. The `datafusion.version`\nMaven\nproperty moves in lock step, since it selects the upstream tag the\n`datafusion.proto` / `datafusion_common.proto` definitions are\ndownloaded from —\nthe generated Java protobuf classes must match what `datafusion-proto`\n54.1.0\ndecodes. The pinned sha512 digests for both protos are updated\naccordingly; each\nwas verified to match the copy vendored in the published\n`datafusion-proto`\n/ `datafusion-proto-common` 54.1.0 crates, independently of the GitHub\ndownload.\n\n`arrow` (58) and `object_store` (0.13) are unchanged — 54.1.0 resolves\nto the\nsame majors, so the `object_store` pin comment still holds.\n\nAdapting to the upstream API changes the bump requires:\n\n- `TableProvider`, `ExecutionPlan` and `ScalarUDFImpl` now take `Any` as\na\nsupertrait, so the manual `as_any` overrides are no longer trait members\nand\n  are removed.\n- `MemoryPool` gained a `name()` method and a `Display` supertrait.\n`TrackingMemoryPool` implements both, following upstream\u0027s wrapper\nconvention:\nname the wrapper, add the counters it exists to expose, and defer to the\ninner\n  pool for the usage detail.\n- `CacheManagerConfig::table_files_statistics_cache` is renamed to\n`file_statistics_cache`, and the accompanying limit is now the on/off\nswitch —\n  `CacheManager::try_new` installs a default statistics cache whenever\n`file_statistics_cache_limit \u003e 0`, even when the cache slot is `None`,\nand the\ndefault limit is non-zero. An explicit `fileStatisticsCache(false)` from\nthe\nJava surface therefore has to zero the limit as well; otherwise upstream\nwould\ninstall the very cache the caller asked us to skip. This is the one\nplace the\n  bump would have silently changed observable Java behavior.\n- The `cache_unit` module is gone; the default cache impls now live in\n  `cache::file_statistics_cache` and `cache`.\n- `DataFusionError::AvroError` is gone — DataFusion 54 reads Avro\nthrough\n`arrow-avro` rather than `apache-avro`. Avro decode failures now arrive\nas\n`ArrowError::AvroError`, which the exception classifier already routed\nto\n`ExecutionException` alongside the `CsvError` / `JsonError` decoder\nvariants,\nso the mapping stays coherent. The dead arm is dropped, along with the\n`avro`\n  feature on `datafusion-jni-common` that existed only to gate it.\n\nOne test fixture is also corrected. `SessionContextSubstraitTest` built\nplans\nwhose base schema declared both columns `NULLABILITY_REQUIRED`, while\nthe tests\nregister a CSV — whose inferred schema is always nullable. DataFusion\n54\u0027s\nSubstrait consumer now validates that a field a plan declares\nnon-nullable\nreally is non-nullable in the table, and rejects the mismatch. That\ncheck is\ncorrect: a plan built around a \"never null\" assumption must not run\nagainst data\nthat can contain nulls. The fixture is fixed to declare nullable\ncolumns; it\nonly passed before because 53 did not check.\n\n## Are these changes tested?\n\nCovered by the existing suites — this is a dependency bump, so the value\nis in\nthe current tests continuing to pass against the new version rather than\nin new\nassertions.\n\n- `./mvnw test` — 349 tests, 0 failures. Run with the `substrait` Cargo\nfeature\n  enabled (`cargo build -p datafusion-jni --features substrait`) so the\n  Substrait tests execute rather than skip.\n- `cargo test --workspace` — all passing.\n- `cargo clippy --workspace --all-targets -- -D warnings` — clean.\n- `cargo fmt --all -- --check` and `./mvnw -q spotless:check` — clean.\n- `cargo build --workspace --all-features` with `RUSTFLAGS\u003d\"--cfg\ntokio_unstable\"`,\nto cover the optional `substrait` and `runtime-metrics` features that\nthe\n  default build does not compile.\n\n## Are there any user-facing changes?\n\nNo API changes. Two behavioral notes, both inherited from upstream:\n\n- Avro decode failures now surface as `ExecutionException` rather than\n`IoException`, following the move to `arrow-avro`. The `IoException`\njavadoc\n  is updated to match.\n- DataFusion 54 enables the file statistics and list files caches by\ndefault.\nCallers who never configured `CacheManagerOptions` pick up upstream\u0027s\nnew\ndefaults; an explicit `fileStatisticsCache(false)` continues to disable\nthe\n  cache, as described above.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dbbfcde1f672c888a184c83dc5c425630008a575",
      "old_mode": 33188,
      "old_path": "Cargo.lock",
      "new_id": "ab966203f8da32d013b6cbf0d43d8fdb27854aa7",
      "new_mode": 33188,
      "new_path": "Cargo.lock"
    },
    {
      "type": "modify",
      "old_id": "fd1971a239c5c80fcdbe929f58cc36168de95abc",
      "old_mode": 33188,
      "old_path": "Cargo.toml",
      "new_id": "57256e6559400a34da61884c2549098c023378ee",
      "new_mode": 33188,
      "new_path": "Cargo.toml"
    },
    {
      "type": "modify",
      "old_id": "1e2573682b5d318230d035a641547cac106026a9",
      "old_mode": 33188,
      "old_path": "core/pom.xml",
      "new_id": "ee2cb65fa29729eb12b11125dacd762688647d5d",
      "new_mode": 33188,
      "new_path": "core/pom.xml"
    },
    {
      "type": "modify",
      "old_id": "79f196e77bbc4c4f2fcf85b524bf2ab1cdf5402d",
      "old_mode": 33188,
      "old_path": "core/src/main/java/org/apache/datafusion/IoException.java",
      "new_id": "42cdad7dddb1c4e394ece4003655db427e1f1210",
      "new_mode": 33188,
      "new_path": "core/src/main/java/org/apache/datafusion/IoException.java"
    },
    {
      "type": "modify",
      "old_id": "91cf1e73f4c59b1d9bb978aa2dee5bcff79307d3",
      "old_mode": 33188,
      "old_path": "core/src/test/java/org/apache/datafusion/DataFrameIntrospectionTest.java",
      "new_id": "ede96d9629ca57005b471f8106296f9364f7f952",
      "new_mode": 33188,
      "new_path": "core/src/test/java/org/apache/datafusion/DataFrameIntrospectionTest.java"
    },
    {
      "type": "modify",
      "old_id": "a2cfb0a56f66810c82f42144e9f052f24860eda9",
      "old_mode": 33188,
      "old_path": "core/src/test/java/org/apache/datafusion/SessionContextSubstraitTest.java",
      "new_id": "2877fcf5a8a9a1a921c7fbe565e61906304b1d68",
      "new_mode": 33188,
      "new_path": "core/src/test/java/org/apache/datafusion/SessionContextSubstraitTest.java"
    },
    {
      "type": "modify",
      "old_id": "21a2296843f092b7f05ba6b4e0dd6fc1c648b5b5",
      "old_mode": 33188,
      "old_path": "native-common/Cargo.toml",
      "new_id": "d136dcd7a0c91f0a0da431ed27e1543348f5a190",
      "new_mode": 33188,
      "new_path": "native-common/Cargo.toml"
    },
    {
      "type": "modify",
      "old_id": "f9dbb0383626279cfba60737a73a5a847116a2d3",
      "old_mode": 33188,
      "old_path": "native-common/src/errors.rs",
      "new_id": "b3e438d1732737cc1093a2f2a4ce2d063f7f9767",
      "new_mode": 33188,
      "new_path": "native-common/src/errors.rs"
    },
    {
      "type": "modify",
      "old_id": "c04044847a61292dee718a27806fb811557b2c7f",
      "old_mode": 33188,
      "old_path": "native/Cargo.toml",
      "new_id": "8f4add5e63306d57e8825da57b7e16a975bddcdf",
      "new_mode": 33188,
      "new_path": "native/Cargo.toml"
    },
    {
      "type": "modify",
      "old_id": "ec38dc8433c11191a54c6b48c489187143026522",
      "old_mode": 33188,
      "old_path": "native/src/cache_manager.rs",
      "new_id": "4be7070ac189ec6a49476f00fde77b25aeb33281",
      "new_mode": 33188,
      "new_path": "native/src/cache_manager.rs"
    },
    {
      "type": "modify",
      "old_id": "e105299bbd5da8269e1d05fdc292a9c9d235093f",
      "old_mode": 33188,
      "old_path": "native/src/memory.rs",
      "new_id": "8068ababc7a9cf7880d92a734830742676f695da",
      "new_mode": 33188,
      "new_path": "native/src/memory.rs"
    },
    {
      "type": "modify",
      "old_id": "70eaac220fa92569fbf4cbd3f23d9ca5079307a0",
      "old_mode": 33188,
      "old_path": "native/src/table_provider.rs",
      "new_id": "51c892b60d42ac9901bd3b526959408a85aada5c",
      "new_mode": 33188,
      "new_path": "native/src/table_provider.rs"
    },
    {
      "type": "modify",
      "old_id": "da7b26040a84b0e53392159bee4eeef40fce3745",
      "old_mode": 33188,
      "old_path": "native/src/udf.rs",
      "new_id": "3c3c7daeaa50bf381c7f520e1b49c9132cd7e475",
      "new_mode": 33188,
      "new_path": "native/src/udf.rs"
    },
    {
      "type": "modify",
      "old_id": "7ceec078e61e3b40473e275cbbd9b4f00abfb136",
      "old_mode": 33188,
      "old_path": "pom.xml",
      "new_id": "d9f32125284e52fcd7666af4fda06c98c2f25692",
      "new_mode": 33188,
      "new_path": "pom.xml"
    }
  ]
}
