datafusion_functions/
planner.rs1use datafusion_common::Result;
21use datafusion_expr::{
22 expr::ScalarFunction,
23 planner::{ExprPlanner, PlannerResult},
24 Expr,
25};
26
27#[deprecated(
28 since = "0.50.0",
29 note = "Use UnicodeFunctionPlanner and DateTimeFunctionPlanner instead"
30)]
31#[derive(Default, Debug)]
32pub struct UserDefinedFunctionPlanner;
33
34#[expect(deprecated)]
35impl ExprPlanner for UserDefinedFunctionPlanner {
36 #[cfg(feature = "datetime_expressions")]
37 fn plan_extract(&self, args: Vec<Expr>) -> Result<PlannerResult<Vec<Expr>>> {
38 Ok(PlannerResult::Planned(Expr::ScalarFunction(
39 ScalarFunction::new_udf(crate::datetime::date_part(), args),
40 )))
41 }
42
43 #[cfg(feature = "unicode_expressions")]
44 fn plan_position(&self, args: Vec<Expr>) -> Result<PlannerResult<Vec<Expr>>> {
45 Ok(PlannerResult::Planned(Expr::ScalarFunction(
46 ScalarFunction::new_udf(crate::unicode::strpos(), args),
47 )))
48 }
49
50 #[cfg(feature = "unicode_expressions")]
51 fn plan_substring(&self, args: Vec<Expr>) -> Result<PlannerResult<Vec<Expr>>> {
52 Ok(PlannerResult::Planned(Expr::ScalarFunction(
53 ScalarFunction::new_udf(crate::unicode::substr(), args),
54 )))
55 }
56}