datafusion_python::datafusion_expr

Trait ScalarUDFImpl

Source
pub trait ScalarUDFImpl:
    Debug
    + Send
    + Sync {
Show 21 methods // Required methods fn as_any(&self) -> &(dyn Any + 'static); fn name(&self) -> &str; fn signature(&self) -> &Signature; fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>; // Provided methods fn display_name(&self, args: &[Expr]) -> Result<String, DataFusionError> { ... } fn schema_name(&self, args: &[Expr]) -> Result<String, DataFusionError> { ... } fn return_type_from_exprs( &self, _args: &[Expr], _schema: &dyn ExprSchema, arg_types: &[DataType], ) -> Result<DataType, DataFusionError> { ... } fn is_nullable(&self, _args: &[Expr], _schema: &dyn ExprSchema) -> bool { ... } fn invoke( &self, _args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError> { ... } fn invoke_batch( &self, args: &[ColumnarValue], number_rows: usize, ) -> Result<ColumnarValue, DataFusionError> { ... } fn invoke_no_args( &self, _number_rows: usize, ) -> Result<ColumnarValue, DataFusionError> { ... } fn aliases(&self) -> &[String] { ... } fn simplify( &self, args: Vec<Expr>, _info: &dyn SimplifyInfo, ) -> Result<ExprSimplifyResult, DataFusionError> { ... } fn short_circuits(&self) -> bool { ... } fn evaluate_bounds( &self, _input: &[&Interval], ) -> Result<Interval, DataFusionError> { ... } fn propagate_constraints( &self, _interval: &Interval, _inputs: &[&Interval], ) -> Result<Option<Vec<Interval>>, DataFusionError> { ... } fn output_ordering( &self, _inputs: &[ExprProperties], ) -> Result<SortProperties, DataFusionError> { ... } fn coerce_types( &self, _arg_types: &[DataType], ) -> Result<Vec<DataType>, DataFusionError> { ... } fn equals(&self, other: &dyn ScalarUDFImpl) -> bool { ... } fn hash_value(&self) -> u64 { ... } fn documentation(&self) -> Option<&Documentation> { ... }
}
Expand description

Trait for implementing ScalarUDF.

This trait exposes the full API for implementing user defined functions and can be used to implement any function.

See advanced_udf.rs for a full example with complete implementation and ScalarUDF for other available options.

§Basic Example


#[derive(Debug)]
struct AddOne {
  signature: Signature,
}

impl AddOne {
  fn new() -> Self {
    Self {
      signature: Signature::uniform(1, vec![DataType::Int32], Volatility::Immutable),
     }
  }
}
  
static DOCUMENTATION: OnceLock<Documentation> = OnceLock::new();

fn get_doc() -> &'static Documentation {
    DOCUMENTATION.get_or_init(|| {
        Documentation::builder()
            .with_doc_section(DOC_SECTION_MATH)
            .with_description("Add one to an int32")
            .with_syntax_example("add_one(2)")
            .with_argument("arg1", "The int32 number to add one to")
            .build()
            .unwrap()
    })
}

/// Implement the ScalarUDFImpl trait for AddOne
impl ScalarUDFImpl for AddOne {
   fn as_any(&self) -> &dyn Any { self }
   fn name(&self) -> &str { "add_one" }
   fn signature(&self) -> &Signature { &self.signature }
   fn return_type(&self, args: &[DataType]) -> Result<DataType> {
     if !matches!(args.get(0), Some(&DataType::Int32)) {
       return plan_err!("add_one only accepts Int32 arguments");
     }
     Ok(DataType::Int32)
   }
   // The actual implementation would add one to the argument
   fn invoke(&self, args: &[ColumnarValue]) -> Result<ColumnarValue> { unimplemented!() }
   fn documentation(&self) -> Option<&Documentation> {
        Some(get_doc())
    }
}

// Create a new ScalarUDF from the implementation
let add_one = ScalarUDF::from(AddOne::new());

// Call the function `add_one(col)`
let expr = add_one.call(vec![col("a")]);

Required Methods§

Source

fn as_any(&self) -> &(dyn Any + 'static)

Returns this object as an Any trait object

Source

fn name(&self) -> &str

Returns this function’s name

Source

fn signature(&self) -> &Signature

Returns the function’s Signature for information about what input types are accepted and the function’s Volatility.

Source

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

What DataType will be returned by this function, given the types of the arguments.

§Notes

If you provide an implementation for Self::return_type_from_exprs, DataFusion will not call return_type (this function). In this case it is recommended to return DataFusionError::Internal.

Provided Methods§

Source

fn display_name(&self, args: &[Expr]) -> Result<String, DataFusionError>

Returns the user-defined display name of the UDF given the arguments

Source

fn schema_name(&self, args: &[Expr]) -> Result<String, DataFusionError>

Returns the name of the column this expression would create

See Expr::schema_name for details

Source

fn return_type_from_exprs( &self, _args: &[Expr], _schema: &dyn ExprSchema, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

What DataType will be returned by this function, given the arguments?

Note most UDFs should implement Self::return_type and not this function. The output type for most functions only depends on the types of their inputs (e.g. sqrt(f32) is always f32).

By default, this function calls Self::return_type with the types of each argument.

This method can be overridden for functions that return different types based on the values of their arguments.

For example, the following two function calls get the same argument types (something and a Utf8 string) but return different types based on the value of the second argument:

  • arrow_cast(x, 'Int16') –> Int16
  • arrow_cast(x, 'Float32') –> Float32
§Notes:

This function must consistently return the same type for the same logical input even if the input is simplified (e.g. it must return the same value for ('foo' | 'bar') as it does for (‘foobar’).

Source

fn is_nullable(&self, _args: &[Expr], _schema: &dyn ExprSchema) -> bool

Source

fn invoke( &self, _args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead

Invoke the function on args, returning the appropriate result

The function will be invoked passed with the slice of ColumnarValue (either scalar or array).

If the function does not take any arguments, please use invoke_no_args instead and return not_impl_err for this function.

§Performance

For the best performance, the implementations of invoke should handle the common case when one or more of their arguments are constant values (aka ColumnarValue::Scalar).

ColumnarValue::values_to_arrays can be used to convert the arguments to arrays, which will likely be simpler code, but be slower.

Source

fn invoke_batch( &self, args: &[ColumnarValue], number_rows: usize, ) -> Result<ColumnarValue, DataFusionError>

Invoke the function with args and the number of rows, returning the appropriate result.

The function will be invoked with the slice of ColumnarValue (either scalar or array).

§Performance

For the best performance, the implementations should handle the common case when one or more of their arguments are constant values (aka ColumnarValue::Scalar).

ColumnarValue::values_to_arrays can be used to convert the arguments to arrays, which will likely be simpler code, but be slower.

Source

fn invoke_no_args( &self, _number_rows: usize, ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead

Invoke the function without args, instead the number of rows are provided, returning the appropriate result.

Source

fn aliases(&self) -> &[String]

Returns any aliases (alternate names) for this function.

Aliases can be used to invoke the same function using different names. For example in some databases now() and current_timestamp() are aliases for the same function. This behavior can be obtained by returning current_timestamp as an alias for the now function.

Note: aliases should only include names other than Self::name. Defaults to [] (no aliases)

Source

fn simplify( &self, args: Vec<Expr>, _info: &dyn SimplifyInfo, ) -> Result<ExprSimplifyResult, DataFusionError>

Optionally apply per-UDF simplification / rewrite rules.

This can be used to apply function specific simplification rules during optimization (e.g. arrow_cast –> Expr::Cast). The default implementation does nothing.

Note that DataFusion handles simplifying arguments and “constant folding” (replacing a function call with constant arguments such as my_add(1,2) --> 3 ). Thus, there is no need to implement such optimizations manually for specific UDFs.

§Arguments
  • args: The arguments of the function
  • info: The necessary information for simplification
§Returns

ExprSimplifyResult indicating the result of the simplification NOTE if the function cannot be simplified, the arguments MUST be returned unmodified

Source

fn short_circuits(&self) -> bool

Returns true if some of this exprs subexpressions may not be evaluated and thus any side effects (like divide by zero) may not be encountered Setting this to true prevents certain optimizations such as common subexpression elimination

Source

fn evaluate_bounds( &self, _input: &[&Interval], ) -> Result<Interval, DataFusionError>

Computes the output interval for a ScalarUDFImpl, given the input intervals.

§Parameters
  • children are the intervals for the children (inputs) of this function.
§Example

If the function is ABS(a), and the input interval is a: [-3, 2], then the output interval would be [0, 3].

Source

fn propagate_constraints( &self, _interval: &Interval, _inputs: &[&Interval], ) -> Result<Option<Vec<Interval>>, DataFusionError>

Updates bounds for child expressions, given a known interval for this function. This is used to propagate constraints down through an expression tree.

§Parameters
  • interval is the currently known interval for this function.
  • inputs are the current intervals for the inputs (children) of this function.
§Returns

A Vec of new intervals for the children, in order.

If constraint propagation reveals an infeasibility for any child, returns None. If none of the children intervals change as a result of propagation, may return an empty vector instead of cloning children. This is the default (and conservative) return value.

§Example

If the function is ABS(a), the current interval is [4, 5] and the input a is given as [-7, 3], then propagation would return [-5, 3].

Source

fn output_ordering( &self, _inputs: &[ExprProperties], ) -> Result<SortProperties, DataFusionError>

Calculates the SortProperties of this function based on its children’s properties.

Source

fn coerce_types( &self, _arg_types: &[DataType], ) -> Result<Vec<DataType>, DataFusionError>

Coerce arguments of a function call to types that the function can evaluate.

This function is only called if ScalarUDFImpl::signature returns crate::TypeSignature::UserDefined. Most UDFs should return one of the other variants of TypeSignature which handle common cases

See the type coercion module documentation for more details on type coercion

For example, if your function requires a floating point arguments, but the user calls it like my_func(1::int) (i.e. with 1 as an integer), coerce_types can return [DataType::Float64] to ensure the argument is converted to 1::double

§Parameters
  • arg_types: The argument types of the arguments this function with
§Return value

A Vec the same length as arg_types. DataFusion will CAST the function call arguments to these specific types.

Source

fn equals(&self, other: &dyn ScalarUDFImpl) -> bool

Return true if this scalar UDF is equal to the other.

Allows customizing the equality of scalar UDFs. Must be consistent with Self::hash_value and follow the same rules as Eq:

  • reflexive: a.equals(a);
  • symmetric: a.equals(b) implies b.equals(a);
  • transitive: a.equals(b) and b.equals(c) implies a.equals(c).

By default, compares Self::name and Self::signature.

Source

fn hash_value(&self) -> u64

Returns a hash value for this scalar UDF.

Allows customizing the hash code of scalar UDFs. Similarly to Hash and Eq, if Self::equals returns true for two UDFs, their hash_values must be the same.

By default, hashes Self::name and Self::signature.

Source

fn documentation(&self) -> Option<&Documentation>

Returns the documentation for this Scalar UDF.

Documentation can be accessed programmatically as well as generating publicly facing documentation.

Implementations on Foreign Types§

Source§

impl ScalarUDFImpl for ArrayHas

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type(&self, _: &[DataType]) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn aliases(&self) -> &[String]

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ArrayHasAll

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type(&self, _: &[DataType]) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn aliases(&self) -> &[String]

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ArrayHasAny

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type(&self, _: &[DataType]) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn aliases(&self) -> &[String]

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ArrayAppend

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn aliases(&self) -> &[String]

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ArrayConcat

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn aliases(&self) -> &[String]

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ArrayPrepend

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn aliases(&self) -> &[String]

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for MakeArray

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn invoke_no_args( &self, _number_rows: usize, ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn aliases(&self) -> &[String]

Source§

fn coerce_types( &self, arg_types: &[DataType], ) -> Result<Vec<DataType>, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for MapFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ArrowCastFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn is_nullable(&self, args: &[Expr], schema: &dyn ExprSchema) -> bool

Source§

fn return_type_from_exprs( &self, args: &[Expr], _schema: &dyn ExprSchema, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, _args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn simplify( &self, args: Vec<Expr>, info: &dyn SimplifyInfo, ) -> Result<ExprSimplifyResult, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ArrowTypeOfFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for CoalesceFunc

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead

coalesce evaluates to the first value which is not NULL

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn is_nullable(&self, args: &[Expr], schema: &dyn ExprSchema) -> bool

Source§

fn short_circuits(&self) -> bool

Source§

fn coerce_types( &self, arg_types: &[DataType], ) -> Result<Vec<DataType>, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for GetFieldFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn display_name(&self, args: &[Expr]) -> Result<String, DataFusionError>

Source§

fn schema_name(&self, args: &[Expr]) -> Result<String, DataFusionError>

Source§

fn signature(&self) -> &Signature

Source§

fn return_type(&self, _: &[DataType]) -> Result<DataType, DataFusionError>

Source§

fn return_type_from_exprs( &self, args: &[Expr], schema: &dyn ExprSchema, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for NamedStructFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn return_type_from_exprs( &self, args: &[Expr], schema: &dyn ExprSchema, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for NullIfFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for NVL2Func

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn coerce_types( &self, arg_types: &[DataType], ) -> Result<Vec<DataType>, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for NVLFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn aliases(&self) -> &[String]

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for StructFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn aliases(&self) -> &[String]

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for VersionFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type(&self, args: &[DataType]) -> Result<DataType, DataFusionError>

Source§

fn invoke(&self, _: &[ColumnarValue]) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn invoke_no_args(&self, _: usize) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for DigestFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for Md5Func

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for SHA224Func

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for SHA256Func

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for SHA384Func

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for SHA512Func

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for CurrentDateFunc

Create an implementation of current_date() that always returns the specified current date.

The semantics of current_date() require it to return the same value wherever it appears within a single statement. This value is chosen during planning time.

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, _args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn aliases(&self) -> &[String]

Source§

fn simplify( &self, _args: Vec<Expr>, info: &dyn SimplifyInfo, ) -> Result<ExprSimplifyResult, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for CurrentTimeFunc

Create an implementation of current_time() that always returns the specified current time.

The semantics of current_time() require it to return the same value wherever it appears within a single statement. This value is chosen during planning time.

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, _args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn simplify( &self, _args: Vec<Expr>, info: &dyn SimplifyInfo, ) -> Result<ExprSimplifyResult, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for DateBinFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn output_ordering( &self, input: &[ExprProperties], ) -> Result<SortProperties, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for DatePartFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn aliases(&self) -> &[String]

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for DateTruncFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn aliases(&self) -> &[String]

Source§

fn output_ordering( &self, input: &[ExprProperties], ) -> Result<SortProperties, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for FromUnixtimeFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type_from_exprs( &self, args: &[Expr], _schema: &dyn ExprSchema, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for MakeDateFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for NowFunc

Create an implementation of now() that always returns the specified timestamp.

The semantics of now() require it to return the same value wherever it appears within a single statement. This value is chosen during planning time.

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, _args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn simplify( &self, _args: Vec<Expr>, info: &dyn SimplifyInfo, ) -> Result<ExprSimplifyResult, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

fn aliases(&self) -> &[String]

Source§

fn is_nullable(&self, _args: &[Expr], _schema: &dyn ExprSchema) -> bool

Source§

impl ScalarUDFImpl for ToCharFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn aliases(&self) -> &[String]

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ToDateFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ToLocalTimeFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn coerce_types( &self, arg_types: &[DataType], ) -> Result<Vec<DataType>, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ToTimestampFunc

to_timestamp SQL function

Note: to_timestamp returns Timestamp(Nanosecond) though its arguments are interpreted as seconds. The supported range for integer input is between -9223372037 and 9223372036. Supported range for string input is between 1677-09-21T00:12:44.0 and 2262-04-11T23:47:16.0. Please use to_timestamp_seconds for the input outside of supported bounds.

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ToTimestampMicrosFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ToTimestampMillisFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ToTimestampNanosFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ToTimestampSecondsFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ToUnixtimeFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke_batch( &self, args: &[ColumnarValue], batch_size: usize, ) -> Result<ColumnarValue, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for DecodeFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn coerce_types( &self, arg_types: &[DataType], ) -> Result<Vec<DataType>, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for EncodeFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn coerce_types( &self, arg_types: &[DataType], ) -> Result<Vec<DataType>, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for AbsFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn output_ordering( &self, input: &[ExprProperties], ) -> Result<SortProperties, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for CotFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

impl ScalarUDFImpl for FactorialFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for GcdFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for IsZeroFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for LcmFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for LogFunc

Source§

fn simplify( &self, args: Vec<Expr>, info: &dyn SimplifyInfo, ) -> Result<ExprSimplifyResult, DataFusionError>

Simplify the log function by the relevant rules:

  1. Log(a, 1) ===> 0
  2. Log(a, Power(a, b)) ===> b
  3. Log(a, a) ===> 1
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn output_ordering( &self, input: &[ExprProperties], ) -> Result<SortProperties, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for IsNanFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for NanvlFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for PiFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, _args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn invoke_no_args( &self, _number_rows: usize, ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn output_ordering( &self, _input: &[ExprProperties], ) -> Result<SortProperties, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for PowerFunc

Source§

fn simplify( &self, args: Vec<Expr>, info: &dyn SimplifyInfo, ) -> Result<ExprSimplifyResult, DataFusionError>

Simplify the power function by the relevant rules:

  1. Power(a, 0) ===> 0
  2. Power(a, 1) ===> a
  3. Power(a, Log(a, b)) ===> b
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn aliases(&self) -> &[String]

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for RandomFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, _args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn invoke_no_args( &self, num_rows: usize, ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for RoundFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn output_ordering( &self, input: &[ExprProperties], ) -> Result<SortProperties, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for SignumFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn output_ordering( &self, input: &[ExprProperties], ) -> Result<SortProperties, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for TruncFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn output_ordering( &self, input: &[ExprProperties], ) -> Result<SortProperties, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for RegexpCountFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for RegexpLikeFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for RegexpMatchFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for RegexpReplaceFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for AsciiFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for BitLengthFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for BTrimFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn aliases(&self) -> &[String]

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ChrFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ConcatFunc

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead

Concatenates the text representations of all the arguments. NULL arguments are ignored. concat(‘abcde’, 2, NULL, 22) = ‘abcde222’

Source§

fn simplify( &self, args: Vec<Expr>, _info: &dyn SimplifyInfo, ) -> Result<ExprSimplifyResult, DataFusionError>

Simplify the concat function by

  1. filtering out all null literals
  2. concatenating contiguous literal arguments

For example: concat(col(a), 'hello ', 'world', col(b), null) will be optimized to concat(col(a), 'hello world', col(b))

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ConcatWsFunc

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead

Concatenates all but the first argument, with separators. The first argument is used as the separator string, and should not be NULL. Other NULL arguments are ignored. concat_ws(‘,’, ‘abcde’, 2, NULL, 22) = ‘abcde,2,22’

Source§

fn simplify( &self, args: Vec<Expr>, _info: &dyn SimplifyInfo, ) -> Result<ExprSimplifyResult, DataFusionError>

Simply the concat_ws function by

  1. folding to null if the delimiter is null
  2. filtering out null arguments
  3. using concat to replace concat_ws if the delimiter is an empty string
  4. concatenating contiguous literals if the delimiter is a literal.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ContainsFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type(&self, _: &[DataType]) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for EndsWithFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for InitcapFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for LevenshteinFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for LowerFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for LtrimFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for OctetLengthFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for OverlayFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for RepeatFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ReplaceFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for RtrimFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for SplitPartFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for StartsWithFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ToHexFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for UpperFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for UuidFunc

Source§

fn invoke_no_args( &self, num_rows: usize, ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead

Prints random (v4) uuid values per row uuid() = ‘a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11’

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, _arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, _args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for CharacterLengthFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn aliases(&self) -> &[String]

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for FindInSetFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for LeftFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for LPadFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for ReverseFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for RightFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for RPadFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for StrposFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn aliases(&self) -> &[String]

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for SubstrFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn aliases(&self) -> &[String]

Source§

fn coerce_types( &self, arg_types: &[DataType], ) -> Result<Vec<DataType>, DataFusionError>

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for SubstrIndexFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn aliases(&self) -> &[String]

Source§

fn documentation(&self) -> Option<&Documentation>

Source§

impl ScalarUDFImpl for TranslateFunc

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn name(&self) -> &str

Source§

fn signature(&self) -> &Signature

Source§

fn return_type( &self, arg_types: &[DataType], ) -> Result<DataType, DataFusionError>

Source§

fn invoke( &self, args: &[ColumnarValue], ) -> Result<ColumnarValue, DataFusionError>

👎Deprecated since 42.1.0: Use invoke_batch instead
Source§

fn documentation(&self) -> Option<&Documentation>

Implementors§