use crate::{
ast::{ColumnDef, FunctionVolatility},
SQLError,
};
use crate::{expr::EngineHook, semantics::sets::SetFunctionCatalog};
pub trait SchemaExpressionCatalog:
EngineHook + SetFunctionCatalog + super::dependencies::oid_alias::OidAliasInput
{
fn plan_schema_expression(
&self,
expression: &crate::ast::Expr,
columns: &[ColumnDef],
) -> Result<super::expressions::PlannedSchemaExpression, SQLError>;
fn registered_runtime_function_volatility(&self, name: &str) -> Option<FunctionVolatility>;
fn schema_expression_columns(&self, table: &str) -> Result<Option<Vec<ColumnDef>>, SQLError>;
}
pub struct SchemaBindingContext<'a, 'q> {
pub catalog: &'a dyn SchemaExpressionCatalog,
pub binding: &'a crate::binding::context::BindingContext<'q>,
}