use std::sync::Arc;
use log::debug;
use datafusion_expr::registry::FunctionRegistry;
use datafusion_expr::WindowUDF;
pub mod row_number;
pub mod expr_fn {
pub use super::row_number::row_number;
}
pub fn all_default_window_functions() -> Vec<Arc<WindowUDF>> {
vec![row_number::row_number_udwf()]
}
pub fn register_all(
registry: &mut dyn FunctionRegistry,
) -> datafusion_common::Result<()> {
let functions: Vec<Arc<WindowUDF>> = all_default_window_functions();
functions.into_iter().try_for_each(|fun| {
let existing_udwf = registry.register_udwf(fun)?;
if let Some(existing_udwf) = existing_udwf {
debug!("Overwrite existing UDWF: {}", existing_udwf.name());
}
Ok(()) as datafusion_common::Result<()>
})?;
Ok(())
}