use super::{
BTreeSet, Expr, ExpressionCallback, ProjectionCallback, SQLError, Statement, StoredAstVisitor,
};
pub fn visit_stored_expression(
expression: &mut Expr,
visit: ExpressionCallback<'_>,
) -> Result<(), SQLError> {
StoredAstVisitor {
source: None,
merge: None,
expression: Some(visit),
projection: None,
ty: None,
relation: &mut |_: &mut String| Ok(()),
routine: &mut |_: &mut String, _: Option<&mut Option<crate::ast::FunctionBinding>>| Ok(()),
}
.bind_expr(expression, &BTreeSet::new())
}
pub fn visit_stored_statement_expressions(
statement: &mut Statement,
visit: ExpressionCallback<'_>,
) -> Result<(), SQLError> {
StoredAstVisitor {
source: None,
merge: None,
expression: Some(visit),
projection: None,
ty: None,
relation: &mut |_: &mut String| Ok(()),
routine: &mut |_: &mut String, _: Option<&mut Option<crate::ast::FunctionBinding>>| Ok(()),
}
.bind_statement(statement)
}
pub fn visit_stored_statement_projections(
statement: &mut Statement,
projection: ProjectionCallback<'_>,
expression: ExpressionCallback<'_>,
) -> Result<(), SQLError> {
StoredAstVisitor {
source: None,
merge: None,
expression: Some(expression),
projection: Some(projection),
ty: None,
relation: &mut |_: &mut String| Ok(()),
routine: &mut |_: &mut String, _: Option<&mut Option<crate::ast::FunctionBinding>>| Ok(()),
}
.bind_statement(statement)
}