diff --git a/datafusion/core/src/execution/context/mod.rs b/datafusion/core/src/execution/context/mod.rs index d84ef0c898313..7143d1aaab092 100644 --- a/datafusion/core/src/execution/context/mod.rs +++ b/datafusion/core/src/execution/context/mod.rs @@ -17,6 +17,7 @@ //! [`SessionContext`] API for registering data sources and executing queries +use std::any::Any; use std::collections::HashSet; use std::fmt::Debug; use std::sync::{Arc, Weak}; @@ -2073,7 +2074,7 @@ impl From for SessionStateBuilder { /// A planner used to add extensions to DataFusion logical and physical plans. #[async_trait] -pub trait QueryPlanner: Debug { +pub trait QueryPlanner: Any + Debug { /// Given a [`LogicalPlan`], create an [`ExecutionPlan`] suitable for execution async fn create_physical_plan( &self, diff --git a/docs/source/library-user-guide/upgrading/54.0.0.md b/docs/source/library-user-guide/upgrading/54.0.0.md index 46b768e8340eb..e7be09f957dee 100644 --- a/docs/source/library-user-guide/upgrading/54.0.0.md +++ b/docs/source/library-user-guide/upgrading/54.0.0.md @@ -649,3 +649,14 @@ move the borrow behind an interior-mutability primitive such as `Arc>` or `Arc>`. See [PR #21803](https://github.com/apache/datafusion/pull/21803) for details. + +### `QueryPlanner` adds `Any` as a supertrait + +To enable downcasting of `dyn QueryPlanner` to concrete query planner types (via +`is::()` / `downcast_ref::()`), the `QueryPlanner` trait now has `Any` +as a supertrait: + +```diff +- pub trait QueryPlanner: Debug ++ pub trait QueryPlanner: Any + Debug +```