This is an automated email from the ASF dual-hosted git repository.

alamb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion.git


The following commit(s) were added to refs/heads/main by this push:
     new 782df39007 chore: Rename UserDefinedSQLPlanner to ExprPlanner (#11338)
782df39007 is described below

commit 782df390078b1aee157d999898424c23530c3eca
Author: Andy Grove <[email protected]>
AuthorDate: Mon Jul 8 15:44:06 2024 -0600

    chore: Rename UserDefinedSQLPlanner to ExprPlanner (#11338)
    
    * rename UserDefinedSQLPlanner to ExprPlanner
    
    * Clippy
    
    ---------
    
    Co-authored-by: Andrew Lamb <[email protected]>
---
 datafusion/core/src/execution/context/mod.rs        | 12 +++++-------
 datafusion/core/src/execution/session_state.rs      | 21 ++++++++++-----------
 ...{user_defined_sql_planner.rs => expr_planner.rs} |  6 +++---
 datafusion/core/tests/user_defined/mod.rs           |  4 ++--
 .../user_defined/user_defined_scalar_functions.rs   |  4 ++--
 datafusion/execution/src/task.rs                    |  4 ++--
 datafusion/expr/src/planner.rs                      | 12 ++++++------
 datafusion/expr/src/registry.rs                     | 16 ++++++++--------
 datafusion/functions-array/src/planner.rs           |  6 +++---
 datafusion/functions/src/core/planner.rs            |  4 ++--
 datafusion/functions/src/planner.rs                 |  4 ++--
 datafusion/proto/src/bytes/mod.rs                   |  4 ++--
 datafusion/proto/src/bytes/registry.rs              |  4 ++--
 datafusion/sql/src/planner.rs                       |  9 +++------
 14 files changed, 52 insertions(+), 58 deletions(-)

diff --git a/datafusion/core/src/execution/context/mod.rs 
b/datafusion/core/src/execution/context/mod.rs
index 04debf498a..4b9e3e8433 100644
--- a/datafusion/core/src/execution/context/mod.rs
+++ b/datafusion/core/src/execution/context/mod.rs
@@ -60,7 +60,7 @@ use datafusion_execution::registry::SerializerRegistry;
 use datafusion_expr::{
     expr_rewriter::FunctionRewrite,
     logical_plan::{DdlStatement, Statement},
-    planner::UserDefinedSQLPlanner,
+    planner::ExprPlanner,
     Expr, UserDefinedLogicalNode, WindowUDF,
 };
 
@@ -1392,17 +1392,15 @@ impl FunctionRegistry for SessionContext {
         self.state.write().register_function_rewrite(rewrite)
     }
 
-    fn expr_planners(&self) -> Vec<Arc<dyn UserDefinedSQLPlanner>> {
+    fn expr_planners(&self) -> Vec<Arc<dyn ExprPlanner>> {
         self.state.read().expr_planners()
     }
 
-    fn register_user_defined_sql_planner(
+    fn register_expr_planner(
         &mut self,
-        user_defined_sql_planner: Arc<dyn UserDefinedSQLPlanner>,
+        expr_planner: Arc<dyn ExprPlanner>,
     ) -> Result<()> {
-        self.state
-            .write()
-            .register_user_defined_sql_planner(user_defined_sql_planner)
+        self.state.write().register_expr_planner(expr_planner)
     }
 }
 
diff --git a/datafusion/core/src/execution/session_state.rs 
b/datafusion/core/src/execution/session_state.rs
index d056b91c27..c123ebb22e 100644
--- a/datafusion/core/src/execution/session_state.rs
+++ b/datafusion/core/src/execution/session_state.rs
@@ -60,7 +60,7 @@ use datafusion_execution::runtime_env::RuntimeEnv;
 use datafusion_execution::TaskContext;
 use datafusion_expr::execution_props::ExecutionProps;
 use datafusion_expr::expr_rewriter::FunctionRewrite;
-use datafusion_expr::planner::UserDefinedSQLPlanner;
+use datafusion_expr::planner::ExprPlanner;
 use datafusion_expr::registry::{FunctionRegistry, SerializerRegistry};
 use datafusion_expr::simplify::SimplifyInfo;
 use datafusion_expr::var_provider::{is_system_variables, VarType};
@@ -101,7 +101,7 @@ pub struct SessionState {
     /// Responsible for analyzing and rewrite a logical plan before 
optimization
     analyzer: Analyzer,
     /// Provides support for customising the SQL planner, e.g. to add support 
for custom operators like `->>` or `?`
-    user_defined_sql_planners: Vec<Arc<dyn UserDefinedSQLPlanner>>,
+    expr_planners: Vec<Arc<dyn ExprPlanner>>,
     /// Responsible for optimizing a logical plan
     optimizer: Optimizer,
     /// Responsible for optimizing a physical execution plan
@@ -231,7 +231,7 @@ impl SessionState {
             );
         }
 
-        let user_defined_sql_planners: Vec<Arc<dyn UserDefinedSQLPlanner>> = 
vec![
+        let expr_planners: Vec<Arc<dyn ExprPlanner>> = vec![
             Arc::new(functions::core::planner::CoreFunctionPlanner::default()),
             // register crate of array expressions (if enabled)
             #[cfg(feature = "array_expressions")]
@@ -248,7 +248,7 @@ impl SessionState {
         let mut new_self = SessionState {
             session_id,
             analyzer: Analyzer::new(),
-            user_defined_sql_planners,
+            expr_planners,
             optimizer: Optimizer::new(),
             physical_optimizers: PhysicalOptimizer::new(),
             query_planner: Arc::new(DefaultQueryPlanner {}),
@@ -968,7 +968,7 @@ impl SessionState {
         let mut query = SqlToRel::new_with_options(provider, 
self.get_parser_options());
 
         // custom planners are registered first, so they're run first and take 
precedence over built-in planners
-        for planner in self.user_defined_sql_planners.iter() {
+        for planner in self.expr_planners.iter() {
             query = query.with_user_defined_planner(planner.clone());
         }
 
@@ -1184,16 +1184,15 @@ impl FunctionRegistry for SessionState {
         Ok(())
     }
 
-    fn expr_planners(&self) -> Vec<Arc<dyn UserDefinedSQLPlanner>> {
-        self.user_defined_sql_planners.clone()
+    fn expr_planners(&self) -> Vec<Arc<dyn ExprPlanner>> {
+        self.expr_planners.clone()
     }
 
-    fn register_user_defined_sql_planner(
+    fn register_expr_planner(
         &mut self,
-        user_defined_sql_planner: Arc<dyn UserDefinedSQLPlanner>,
+        expr_planner: Arc<dyn ExprPlanner>,
     ) -> datafusion_common::Result<()> {
-        self.user_defined_sql_planners
-            .push(user_defined_sql_planner);
+        self.expr_planners.push(expr_planner);
         Ok(())
     }
 }
diff --git a/datafusion/core/tests/user_defined/user_defined_sql_planner.rs 
b/datafusion/core/tests/user_defined/expr_planner.rs
similarity index 95%
rename from datafusion/core/tests/user_defined/user_defined_sql_planner.rs
rename to datafusion/core/tests/user_defined/expr_planner.rs
index 6b660e15a1..1b23bf9ab2 100644
--- a/datafusion/core/tests/user_defined/user_defined_sql_planner.rs
+++ b/datafusion/core/tests/user_defined/expr_planner.rs
@@ -26,12 +26,12 @@ use datafusion::prelude::*;
 use datafusion::sql::sqlparser::ast::BinaryOperator;
 use datafusion_common::ScalarValue;
 use datafusion_expr::expr::Alias;
-use datafusion_expr::planner::{PlannerResult, RawBinaryExpr, 
UserDefinedSQLPlanner};
+use datafusion_expr::planner::{ExprPlanner, PlannerResult, RawBinaryExpr};
 use datafusion_expr::BinaryExpr;
 
 struct MyCustomPlanner;
 
-impl UserDefinedSQLPlanner for MyCustomPlanner {
+impl ExprPlanner for MyCustomPlanner {
     fn plan_binary_op(
         &self,
         expr: RawBinaryExpr,
@@ -68,7 +68,7 @@ async fn plan_and_collect(sql: &str) -> 
Result<Vec<RecordBatch>> {
     let config =
         SessionConfig::new().set_str("datafusion.sql_parser.dialect", 
"postgres");
     let mut ctx = SessionContext::new_with_config(config);
-    ctx.register_user_defined_sql_planner(Arc::new(MyCustomPlanner))?;
+    ctx.register_expr_planner(Arc::new(MyCustomPlanner))?;
     ctx.sql(sql).await?.collect().await
 }
 
diff --git a/datafusion/core/tests/user_defined/mod.rs 
b/datafusion/core/tests/user_defined/mod.rs
index 9b83a9fdd4..56cec8df46 100644
--- a/datafusion/core/tests/user_defined/mod.rs
+++ b/datafusion/core/tests/user_defined/mod.rs
@@ -30,5 +30,5 @@ mod user_defined_window_functions;
 /// Tests for User Defined Table Functions
 mod user_defined_table_functions;
 
-/// Tests for User Defined SQL Planner
-mod user_defined_sql_planner;
+/// Tests for Expression Planner
+mod expr_planner;
diff --git 
a/datafusion/core/tests/user_defined/user_defined_scalar_functions.rs 
b/datafusion/core/tests/user_defined/user_defined_scalar_functions.rs
index ae8a009c62..1733068deb 100644
--- a/datafusion/core/tests/user_defined/user_defined_scalar_functions.rs
+++ b/datafusion/core/tests/user_defined/user_defined_scalar_functions.rs
@@ -575,9 +575,9 @@ async fn test_user_defined_functions_cast_to_i64() -> 
Result<()> {
 async fn test_user_defined_sql_functions() -> Result<()> {
     let ctx = SessionContext::new();
 
-    let sql_planners = ctx.expr_planners();
+    let expr_planners = ctx.expr_planners();
 
-    assert!(!sql_planners.is_empty());
+    assert!(!expr_planners.is_empty());
 
     Ok(())
 }
diff --git a/datafusion/execution/src/task.rs b/datafusion/execution/src/task.rs
index 24d61e6a8b..df7fd0dbd9 100644
--- a/datafusion/execution/src/task.rs
+++ b/datafusion/execution/src/task.rs
@@ -27,7 +27,7 @@ use crate::{
     runtime_env::{RuntimeConfig, RuntimeEnv},
 };
 use datafusion_common::{plan_datafusion_err, DataFusionError, Result};
-use datafusion_expr::planner::UserDefinedSQLPlanner;
+use datafusion_expr::planner::ExprPlanner;
 use datafusion_expr::{AggregateUDF, ScalarUDF, WindowUDF};
 
 /// Task Execution Context
@@ -192,7 +192,7 @@ impl FunctionRegistry for TaskContext {
         Ok(self.scalar_functions.insert(udf.name().into(), udf))
     }
 
-    fn expr_planners(&self) -> Vec<Arc<dyn UserDefinedSQLPlanner>> {
+    fn expr_planners(&self) -> Vec<Arc<dyn ExprPlanner>> {
         vec![]
     }
 }
diff --git a/datafusion/expr/src/planner.rs b/datafusion/expr/src/planner.rs
index c255edbea5..aeb8ed8372 100644
--- a/datafusion/expr/src/planner.rs
+++ b/datafusion/expr/src/planner.rs
@@ -15,7 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-//! [`ContextProvider`] and [`UserDefinedSQLPlanner`] APIs to customize SQL 
query planning
+//! [`ContextProvider`] and [`ExprPlanner`] APIs to customize SQL query 
planning
 
 use std::sync::Arc;
 
@@ -83,7 +83,7 @@ pub trait ContextProvider {
 }
 
 /// This trait allows users to customize the behavior of the SQL planner
-pub trait UserDefinedSQLPlanner: Send + Sync {
+pub trait ExprPlanner: Send + Sync {
     /// Plan the binary operation between two expressions, returns original
     /// BinaryExpr if not possible
     fn plan_binary_op(
@@ -168,7 +168,7 @@ pub trait UserDefinedSQLPlanner: Send + Sync {
 /// Note `left` and `right` are DataFusion [`Expr`]s but the `op` is the SQL 
AST
 /// operator.
 ///
-/// This structure is used by [`UserDefinedSQLPlanner`] to plan operators with
+/// This structure is used by [`ExprPlanner`] to plan operators with
 /// custom expressions.
 #[derive(Debug, Clone)]
 pub struct RawBinaryExpr {
@@ -179,7 +179,7 @@ pub struct RawBinaryExpr {
 
 /// An expression with GetFieldAccess to plan
 ///
-/// This structure is used by [`UserDefinedSQLPlanner`] to plan operators with
+/// This structure is used by [`ExprPlanner`] to plan operators with
 /// custom expressions.
 #[derive(Debug, Clone)]
 pub struct RawFieldAccessExpr {
@@ -189,7 +189,7 @@ pub struct RawFieldAccessExpr {
 
 /// A Dictionary literal expression `{ key: value, ...}`
 ///
-/// This structure is used by [`UserDefinedSQLPlanner`] to plan operators with
+/// This structure is used by [`ExprPlanner`] to plan operators with
 /// custom expressions.
 #[derive(Debug, Clone)]
 pub struct RawDictionaryExpr {
@@ -197,7 +197,7 @@ pub struct RawDictionaryExpr {
     pub values: Vec<Expr>,
 }
 
-/// Result of planning a raw expr with [`UserDefinedSQLPlanner`]
+/// Result of planning a raw expr with [`ExprPlanner`]
 #[derive(Debug, Clone)]
 pub enum PlannerResult<T> {
     /// The raw expression was successfully planned as a new [`Expr`]
diff --git a/datafusion/expr/src/registry.rs b/datafusion/expr/src/registry.rs
index 6a27c05bb4..988dc0f5ae 100644
--- a/datafusion/expr/src/registry.rs
+++ b/datafusion/expr/src/registry.rs
@@ -18,7 +18,7 @@
 //! FunctionRegistry trait
 
 use crate::expr_rewriter::FunctionRewrite;
-use crate::planner::UserDefinedSQLPlanner;
+use crate::planner::ExprPlanner;
 use crate::{AggregateUDF, ScalarUDF, UserDefinedLogicalNode, WindowUDF};
 use datafusion_common::{not_impl_err, plan_datafusion_err, Result};
 use std::collections::HashMap;
@@ -110,15 +110,15 @@ pub trait FunctionRegistry {
         not_impl_err!("Registering FunctionRewrite")
     }
 
-    /// Set of all registered [`UserDefinedSQLPlanner`]s
-    fn expr_planners(&self) -> Vec<Arc<dyn UserDefinedSQLPlanner>>;
+    /// Set of all registered [`ExprPlanner`]s
+    fn expr_planners(&self) -> Vec<Arc<dyn ExprPlanner>>;
 
-    /// Registers a new [`UserDefinedSQLPlanner`] with the registry.
-    fn register_user_defined_sql_planner(
+    /// Registers a new [`ExprPlanner`] with the registry.
+    fn register_expr_planner(
         &mut self,
-        _user_defined_sql_planner: Arc<dyn UserDefinedSQLPlanner>,
+        _expr_planner: Arc<dyn ExprPlanner>,
     ) -> Result<()> {
-        not_impl_err!("Registering UserDefinedSQLPlanner")
+        not_impl_err!("Registering ExprPlanner")
     }
 }
 
@@ -196,7 +196,7 @@ impl FunctionRegistry for MemoryFunctionRegistry {
         Ok(self.udwfs.insert(udaf.name().into(), udaf))
     }
 
-    fn expr_planners(&self) -> Vec<Arc<dyn UserDefinedSQLPlanner>> {
+    fn expr_planners(&self) -> Vec<Arc<dyn ExprPlanner>> {
         vec![]
     }
 }
diff --git a/datafusion/functions-array/src/planner.rs 
b/datafusion/functions-array/src/planner.rs
index 01853fb569..cfbe99b4b7 100644
--- a/datafusion/functions-array/src/planner.rs
+++ b/datafusion/functions-array/src/planner.rs
@@ -19,7 +19,7 @@
 
 use datafusion_common::{utils::list_ndims, DFSchema, Result};
 use datafusion_expr::{
-    planner::{PlannerResult, RawBinaryExpr, RawFieldAccessExpr, 
UserDefinedSQLPlanner},
+    planner::{ExprPlanner, PlannerResult, RawBinaryExpr, RawFieldAccessExpr},
     sqlparser, AggregateFunction, Expr, ExprSchemable, GetFieldAccess,
 };
 use datafusion_functions::expr_fn::get_field;
@@ -34,7 +34,7 @@ use crate::{
 
 pub struct ArrayFunctionPlanner;
 
-impl UserDefinedSQLPlanner for ArrayFunctionPlanner {
+impl ExprPlanner for ArrayFunctionPlanner {
     fn plan_binary_op(
         &self,
         expr: RawBinaryExpr,
@@ -101,7 +101,7 @@ impl UserDefinedSQLPlanner for ArrayFunctionPlanner {
 
 pub struct FieldAccessPlanner;
 
-impl UserDefinedSQLPlanner for FieldAccessPlanner {
+impl ExprPlanner for FieldAccessPlanner {
     fn plan_field_access(
         &self,
         expr: RawFieldAccessExpr,
diff --git a/datafusion/functions/src/core/planner.rs 
b/datafusion/functions/src/core/planner.rs
index e803c92dd0..748b598d29 100644
--- a/datafusion/functions/src/core/planner.rs
+++ b/datafusion/functions/src/core/planner.rs
@@ -18,7 +18,7 @@
 use datafusion_common::DFSchema;
 use datafusion_common::Result;
 use datafusion_expr::expr::ScalarFunction;
-use datafusion_expr::planner::{PlannerResult, RawDictionaryExpr, 
UserDefinedSQLPlanner};
+use datafusion_expr::planner::{ExprPlanner, PlannerResult, RawDictionaryExpr};
 use datafusion_expr::Expr;
 
 use super::named_struct;
@@ -26,7 +26,7 @@ use super::named_struct;
 #[derive(Default)]
 pub struct CoreFunctionPlanner {}
 
-impl UserDefinedSQLPlanner for CoreFunctionPlanner {
+impl ExprPlanner for CoreFunctionPlanner {
     fn plan_dictionary_literal(
         &self,
         expr: RawDictionaryExpr,
diff --git a/datafusion/functions/src/planner.rs 
b/datafusion/functions/src/planner.rs
index 41ff92f261..ad42c5edd6 100644
--- a/datafusion/functions/src/planner.rs
+++ b/datafusion/functions/src/planner.rs
@@ -20,14 +20,14 @@
 use datafusion_common::Result;
 use datafusion_expr::{
     expr::ScalarFunction,
-    planner::{PlannerResult, UserDefinedSQLPlanner},
+    planner::{ExprPlanner, PlannerResult},
     Expr,
 };
 
 #[derive(Default)]
 pub struct UserDefinedFunctionPlanner;
 
-impl UserDefinedSQLPlanner for UserDefinedFunctionPlanner {
+impl ExprPlanner for UserDefinedFunctionPlanner {
     #[cfg(feature = "datetime_expressions")]
     fn plan_extract(&self, args: Vec<Expr>) -> 
Result<PlannerResult<Vec<Expr>>> {
         Ok(PlannerResult::Planned(Expr::ScalarFunction(
diff --git a/datafusion/proto/src/bytes/mod.rs 
b/datafusion/proto/src/bytes/mod.rs
index 83210cb4e4..9188480431 100644
--- a/datafusion/proto/src/bytes/mod.rs
+++ b/datafusion/proto/src/bytes/mod.rs
@@ -39,7 +39,7 @@ use std::sync::Arc;
 use datafusion::execution::registry::FunctionRegistry;
 use datafusion::physical_plan::ExecutionPlan;
 use datafusion::prelude::SessionContext;
-use datafusion_expr::planner::UserDefinedSQLPlanner;
+use datafusion_expr::planner::ExprPlanner;
 
 mod registry;
 
@@ -167,7 +167,7 @@ impl Serializeable for Expr {
                 )
             }
 
-            fn expr_planners(&self) -> Vec<Arc<dyn UserDefinedSQLPlanner>> {
+            fn expr_planners(&self) -> Vec<Arc<dyn ExprPlanner>> {
                 vec![]
             }
         }
diff --git a/datafusion/proto/src/bytes/registry.rs 
b/datafusion/proto/src/bytes/registry.rs
index 075993e2ba..eae2425f8a 100644
--- a/datafusion/proto/src/bytes/registry.rs
+++ b/datafusion/proto/src/bytes/registry.rs
@@ -20,7 +20,7 @@ use std::{collections::HashSet, sync::Arc};
 use datafusion::execution::registry::FunctionRegistry;
 use datafusion_common::plan_err;
 use datafusion_common::Result;
-use datafusion_expr::planner::UserDefinedSQLPlanner;
+use datafusion_expr::planner::ExprPlanner;
 use datafusion_expr::{AggregateUDF, ScalarUDF, WindowUDF};
 
 /// A default [`FunctionRegistry`] registry that does not resolve any
@@ -56,7 +56,7 @@ impl FunctionRegistry for NoRegistry {
         plan_err!("No function registry provided to deserialize, so can not 
deserialize User Defined Window Function '{}'", udwf.inner().name())
     }
 
-    fn expr_planners(&self) -> Vec<Arc<dyn UserDefinedSQLPlanner>> {
+    fn expr_planners(&self) -> Vec<Arc<dyn ExprPlanner>> {
         vec![]
     }
 }
diff --git a/datafusion/sql/src/planner.rs b/datafusion/sql/src/planner.rs
index 443cd64a94..a77f0003f7 100644
--- a/datafusion/sql/src/planner.rs
+++ b/datafusion/sql/src/planner.rs
@@ -24,7 +24,7 @@ use arrow_schema::*;
 use datafusion_common::{
     field_not_found, internal_err, plan_datafusion_err, DFSchemaRef, 
SchemaError,
 };
-use datafusion_expr::planner::UserDefinedSQLPlanner;
+use datafusion_expr::planner::ExprPlanner;
 use sqlparser::ast::TimezoneInfo;
 use sqlparser::ast::{ArrayElemTypeDef, ExactNumberInfo};
 use sqlparser::ast::{ColumnDef as SQLColumnDef, ColumnOption};
@@ -187,7 +187,7 @@ pub struct SqlToRel<'a, S: ContextProvider> {
     pub(crate) options: ParserOptions,
     pub(crate) normalizer: IdentNormalizer,
     /// user defined planner extensions
-    pub(crate) planners: Vec<Arc<dyn UserDefinedSQLPlanner>>,
+    pub(crate) planners: Vec<Arc<dyn ExprPlanner>>,
 }
 
 impl<'a, S: ContextProvider> SqlToRel<'a, S> {
@@ -197,10 +197,7 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
     }
 
     /// add an user defined planner
-    pub fn with_user_defined_planner(
-        mut self,
-        planner: Arc<dyn UserDefinedSQLPlanner>,
-    ) -> Self {
+    pub fn with_user_defined_planner(mut self, planner: Arc<dyn ExprPlanner>) 
-> Self {
         self.planners.push(planner);
         self
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to