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

Function resolve_function_arguments

datafusion/expr/src/arguments.rs:63–84  ·  view source on GitHub ↗

Resolves function arguments, handling named and positional notation. This function validates and reorders arguments to match the function's parameter names when named arguments are used. # Rules - All positional arguments must come before named arguments - Named arguments can be in any order after positional arguments - Parameter names follow SQL identifier rules: unquoted names are case-insensi

(
    param_names: &[String],
    args: Vec<Expr>,
    arg_names: Vec<Option<ArgumentName>>,
)

Source from the content-addressed store, hash-verified

61/// Returns: [Expr(10), Expr(20), Expr(30)]
62/// ```
63pub fn resolve_function_arguments(
64 param_names: &[String],
65 args: Vec<Expr>,
66 arg_names: Vec<Option<ArgumentName>>,
67) -> Result<Vec<Expr>> {
68 if args.len() != arg_names.len() {
69 return plan_err!(
70 "Internal error: args length ({}) != arg_names length ({})",
71 args.len(),
72 arg_names.len()
73 );
74 }
75
76 // Check if all arguments are positional (fast path)
77 if arg_names.iter().all(|name| name.is_none()) {
78 return Ok(args);
79 }
80
81 validate_argument_order(&arg_names)?;
82
83 reorder_named_arguments(param_names, args, arg_names)
84}
85
86/// Validates that positional arguments come before named arguments
87fn validate_argument_order(arg_names: &[Option<ArgumentName>]) -> Result<()> {

Calls 6

validate_argument_orderFunction · 0.85
reorder_named_argumentsFunction · 0.85
allMethod · 0.80
is_noneMethod · 0.80
lenMethod · 0.45
iterMethod · 0.45

Used in the wild real call sites across dependent graphs

searching dependent graphs…