use super::context::BatchExecutionContext;
use uqa_sql::{plan::UnifiedPlan, SQLError, SQLParam};
pub(super) fn plan<S: Clone + 'static>(
context: &BatchExecutionContext<'_, S>,
sql: &str,
logical: UnifiedPlan,
params: &[SQLParam],
cacheable: bool,
) -> Result<UnifiedPlan, SQLError> {
if !cacheable {
return context.planning.plan_for_execution(logical, params);
}
let cached = context.cache.cached_sql_analysis(sql);
let (plan, analyzed) = context
.planning
.plan_with_cached_analysis(logical, params, cached)?;
context.cache.cache_sql_analysis(sql, analyzed);
Ok(plan)
}