Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/crates/polars-sql/src/function_registry.rs
6939 views
1
//! This module defines a FunctionRegistry for supported SQL functions and UDFs.
2
3
use polars_error::{PolarsResult, polars_bail};
4
use polars_plan::prelude::udf::UserDefinedFunction;
5
pub use polars_plan::prelude::{Context, FunctionOptions};
6
/// A registry that holds user defined functions.
7
pub trait FunctionRegistry: Send + Sync {
8
/// Register a function.
9
fn register(&mut self, name: &str, fun: UserDefinedFunction) -> PolarsResult<()>;
10
/// Call a user defined function.
11
fn get_udf(&self, name: &str) -> PolarsResult<Option<UserDefinedFunction>>;
12
/// Check if a function is registered.
13
fn contains(&self, name: &str) -> bool;
14
}
15
16
/// A default registry that does not support registering or calling functions.
17
pub struct DefaultFunctionRegistry {}
18
19
impl FunctionRegistry for DefaultFunctionRegistry {
20
fn register(&mut self, _name: &str, _fun: UserDefinedFunction) -> PolarsResult<()> {
21
polars_bail!(ComputeError: "'register' not implemented on DefaultFunctionRegistry'")
22
}
23
24
fn get_udf(&self, _name: &str) -> PolarsResult<Option<UserDefinedFunction>> {
25
polars_bail!(ComputeError: "'get_udf' not implemented on DefaultFunctionRegistry'")
26
}
27
fn contains(&self, _name: &str) -> bool {
28
false
29
}
30
}
31
32