use crate::catalog::create::FileInferScan;
use crate::functions::function_set::{AggregateFunctionSet, ScalarFunctionSet, TableFunctionSet};
pub trait Extension {
const NAME: &str;
const FUNCTIONS: Option<&'static ExtensionFunctions>;
}
#[derive(Debug, Clone, Copy)]
pub struct ExtensionFunctions {
pub namespace: &'static str,
pub scalar: &'static [&'static ScalarFunctionSet],
pub aggregate: &'static [&'static AggregateFunctionSet],
pub table: &'static [ExtensionTableFunction],
}
#[derive(Debug, Clone, Copy)]
pub struct ExtensionTableFunction {
pub function: &'static TableFunctionSet,
pub aliases_in_default: Option<TableFunctionAliasesInDefault>,
}
#[derive(Debug, Clone, Copy)]
pub struct TableFunctionAliasesInDefault {
pub aliases: &'static [&'static str],
pub infer_scan: Option<FileInferScan>,
}
impl ExtensionTableFunction {
pub const fn new(function: &'static TableFunctionSet) -> Self {
ExtensionTableFunction {
function,
aliases_in_default: None,
}
}
}