use crate::db::{executor::ExecutionFamily, query::explain::ExplainPlan};
pub type TraceExecutionFamily = ExecutionFamily;
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct QueryTracePlan {
pub(crate) plan_hash: String,
pub(crate) access_strategy: String,
pub(crate) execution_family: Option<TraceExecutionFamily>,
pub(crate) explain: ExplainPlan,
}
impl QueryTracePlan {
#[must_use]
pub const fn new(
plan_hash: String,
access_strategy: String,
execution_family: Option<TraceExecutionFamily>,
explain: ExplainPlan,
) -> Self {
Self {
plan_hash,
access_strategy,
execution_family,
explain,
}
}
#[must_use]
pub const fn plan_hash(&self) -> &str {
self.plan_hash.as_str()
}
#[must_use]
pub const fn access_strategy(&self) -> &str {
self.access_strategy.as_str()
}
#[must_use]
pub const fn execution_family(&self) -> Option<TraceExecutionFamily> {
self.execution_family
}
#[must_use]
pub const fn explain(&self) -> &ExplainPlan {
&self.explain
}
}