MCPcopy Create free account
hub / github.com/apache/datafusion / sql_fn_arg_to_logical_expr_with_name

Method sql_fn_arg_to_logical_expr_with_name

datafusion/sql/src/expr/function.rs:1009–1102  ·  view source on GitHub ↗
(
        &self,
        sql: FunctionArg,
        schema: &DFSchema,
        planner_context: &mut PlannerContext,
    )

Source from the content-addressed store, hash-verified

1007 }
1008
1009 fn sql_fn_arg_to_logical_expr_with_name(
1010 &self,
1011 sql: FunctionArg,
1012 schema: &DFSchema,
1013 planner_context: &mut PlannerContext,
1014 ) -> Result<(Expr, Option<ArgumentName>)> {
1015 match sql {
1016 FunctionArg::Named {
1017 name,
1018 arg: FunctionArgExpr::Expr(arg),
1019 operator: _,
1020 } => {
1021 let expr = self.sql_expr_to_logical_expr(arg, schema, planner_context)?;
1022 let arg_name = ArgumentName {
1023 value: name.value,
1024 is_quoted: name.quote_style.is_some(),
1025 };
1026 Ok((expr, Some(arg_name)))
1027 }
1028 FunctionArg::Named {
1029 name,
1030 arg: FunctionArgExpr::Wildcard,
1031 operator: _,
1032 } => {
1033 #[expect(deprecated)]
1034 let expr = Expr::Wildcard {
1035 qualifier: None,
1036 options: Box::new(WildcardOptions::default()),
1037 };
1038 let arg_name = ArgumentName {
1039 value: name.value,
1040 is_quoted: name.quote_style.is_some(),
1041 };
1042 Ok((expr, Some(arg_name)))
1043 }
1044 FunctionArg::Unnamed(FunctionArgExpr::Expr(arg)) => {
1045 let expr = self.sql_expr_to_logical_expr(arg, schema, planner_context)?;
1046 Ok((expr, None))
1047 }
1048 FunctionArg::Unnamed(FunctionArgExpr::Wildcard) => {
1049 #[expect(deprecated)]
1050 let expr = Expr::Wildcard {
1051 qualifier: None,
1052 options: Box::new(WildcardOptions::default()),
1053 };
1054 Ok((expr, None))
1055 }
1056 FunctionArg::Unnamed(FunctionArgExpr::QualifiedWildcard(object_name)) => {
1057 let qualifier = self.object_name_to_table_reference(object_name)?;
1058 // Sanity check on qualifier with schema
1059 let qualified_indices = schema.fields_indices_with_qualified(&qualifier);
1060 if qualified_indices.is_empty() {
1061 return plan_err!("Invalid qualifier {qualifier}");
1062 }
1063
1064 #[expect(deprecated)]
1065 let expr = Expr::Wildcard {
1066 qualifier: qualifier.into(),

Calls 6

newFunction · 0.85
is_emptyMethod · 0.45
intoMethod · 0.45

Tested by

no test coverage detected