(
&self,
planner_context: &mut PlannerContext,
schema: &DFSchema,
lambda: LambdaFunction,
lambda_params: Vec<FieldRef>,
)
| 913 | } |
| 914 | |
| 915 | fn sql_lambda_to_logical_lambda( |
| 916 | &self, |
| 917 | planner_context: &mut PlannerContext, |
| 918 | schema: &DFSchema, |
| 919 | lambda: LambdaFunction, |
| 920 | lambda_params: Vec<FieldRef>, |
| 921 | ) -> Result<Lambda> { |
| 922 | if lambda.params.len() > lambda_params.len() { |
| 923 | return plan_err!( |
| 924 | "lambda defined {} params but UDF support only {}", |
| 925 | lambda.params.len(), |
| 926 | lambda_params.len() |
| 927 | ); |
| 928 | } |
| 929 | |
| 930 | if lambda.params.iter().any(|p| p.data_type.is_some()) { |
| 931 | return not_impl_err!( |
| 932 | "Lambda parameters with explicit data types are not supported" |
| 933 | ); |
| 934 | } |
| 935 | let params = lambda |
| 936 | .params |
| 937 | .iter() |
| 938 | .map(|p| crate::utils::normalize_ident(p.name.clone())) |
| 939 | .collect(); |
| 940 | |
| 941 | let lambda_parameters = std::iter::zip(lambda_params, ¶ms) |
| 942 | .map(|(f, n): (FieldRef, &String)| f.renamed(n.as_str())); |
| 943 | |
| 944 | let mut planner_context = planner_context |
| 945 | .clone() |
| 946 | .with_lambda_parameters(lambda_parameters); |
| 947 | |
| 948 | Ok(Lambda { |
| 949 | params, |
| 950 | body: Box::new(self.sql_expr_to_logical_expr( |
| 951 | *lambda.body, |
| 952 | schema, |
| 953 | &mut planner_context, |
| 954 | )?), |
| 955 | }) |
| 956 | } |
| 957 | |
| 958 | pub(super) fn sql_fn_name_to_expr( |
| 959 | &self, |
no test coverage detected