Path: blob/main/crates/polars-sql/src/function_registry.rs
6939 views
//! This module defines a FunctionRegistry for supported SQL functions and UDFs.12use polars_error::{PolarsResult, polars_bail};3use polars_plan::prelude::udf::UserDefinedFunction;4pub use polars_plan::prelude::{Context, FunctionOptions};5/// A registry that holds user defined functions.6pub trait FunctionRegistry: Send + Sync {7/// Register a function.8fn register(&mut self, name: &str, fun: UserDefinedFunction) -> PolarsResult<()>;9/// Call a user defined function.10fn get_udf(&self, name: &str) -> PolarsResult<Option<UserDefinedFunction>>;11/// Check if a function is registered.12fn contains(&self, name: &str) -> bool;13}1415/// A default registry that does not support registering or calling functions.16pub struct DefaultFunctionRegistry {}1718impl FunctionRegistry for DefaultFunctionRegistry {19fn register(&mut self, _name: &str, _fun: UserDefinedFunction) -> PolarsResult<()> {20polars_bail!(ComputeError: "'register' not implemented on DefaultFunctionRegistry'")21}2223fn get_udf(&self, _name: &str) -> PolarsResult<Option<UserDefinedFunction>> {24polars_bail!(ComputeError: "'get_udf' not implemented on DefaultFunctionRegistry'")25}26fn contains(&self, _name: &str) -> bool {27false28}29}303132