use super::Engine;
impl Engine {
pub fn register_prepared(
&self,
name: String,
definition: uqa_sql::ast::Statement,
) -> Result<(), uqa_sql::SQLError> {
uqa_execution::statement::prepared::register_statement(
&self.prepared_registration_context(),
name,
definition,
)
}
pub(crate) fn prepared_parameter_types(
&self,
name: &str,
) -> Option<Vec<Option<uqa_sql::ast::ColumnType>>> {
self.session
.prepared
.read()
.get(name)
.map(|entry| entry.parameter_types.clone())
}
pub fn lookup_prepared(&self, name: &str) -> Option<uqa_planner::UnifiedPlan> {
self.session
.prepared
.read()
.get(name)
.map(|entry| entry.plan.as_ref().unwrap_or(&entry.logical_plan).clone())
}
pub(crate) fn invalidate_prepared_plans(&self) {
for prepared in self.session.prepared.write().values_mut() {
prepared.plan = None;
}
}
pub fn deallocate_prepared(&self, name: Option<&str>) {
match name {
Some(name) => {
self.session.prepared.write().remove(name);
}
None => self.session.prepared.write().clear(),
}
}
}