# Upgrade Guides ## DataFusion 56.0.0 **Note:** DataFusion `56.0.0` has not been released yet. The information provided in this section pertains to features and changes that have already been merged to the main branch and are awaiting release in this version. ### `datafusion.optimizer.use_statistics_registry` is deprecated and ignored The `datafusion.optimizer.use_statistics_registry` config flag is deprecated and now ignored (setting it emits a deprecation warning). The pluggable `StatisticsRegistry` is always consulted during the single statistics walk: providers registered on the session take effect directly. With no providers registered the registry is a no-op, so default behavior is unchanged from the previous default (`use_statistics_registry = false`). **Who is affected:** - Anyone who set `datafusion.optimizer.use_statistics_registry`. The setting is still accepted (with a deprecation warning) but has no effect, and will be removed in a future release. **Migration guide:** - Drop any `use_statistics_registry` setting. - To use statistics providers, register them on the session with `SessionStateBuilder::with_statistics_registry(...)`. To keep the built-in NDV-aware providers the flag previously enabled, register `StatisticsRegistry::default_with_builtin_providers()`. - To opt out, register nothing (the default). ### `DefaultStatisticsProvider` is deprecated `datafusion_physical_plan::operator_statistics::DefaultStatisticsProvider` is deprecated. It is redundant: the statistics walk (`StatisticsContext`) falls back to each operator's `statistics_from_inputs` when the provider chain delegates or is empty, so a terminal "default" provider is no longer needed. It is no longer part of `StatisticsRegistry::default_with_builtin_providers()`. **Migration guide:** - Remove `DefaultStatisticsProvider` from any custom provider chain; register no terminal provider instead (the walk falls back on its own). ### `StatisticsRegistry::compute` and `compute_base` are deprecated Use the walk instead: ```rust StatisticsContext::new_with_registry(registry) .compute_extended(plan, &StatisticsArgs::new())?; // or .compute(...) for core Statistics ```