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_registrysetting.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, registerStatisticsRegistry::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
DefaultStatisticsProviderfrom 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:
StatisticsContext::new_with_registry(registry)
.compute_extended(plan, &StatisticsArgs::new())?; // or .compute(...) for core Statistics