pub mod connector;
pub mod context;
pub mod physical_mapper;
pub mod physical_planner;
pub mod plan;
pub mod planner;
pub mod template_extractor;
pub mod fulltext_planner;
#[cfg(feature = "vector")]
pub mod vector_planner;
pub mod join_order;
pub mod scan_predicate;
pub mod statements;
pub mod dml_shape;
pub use connector::SegmentsConnector;
pub use plan::execution_plan::{ExecutionPlan, SubPlan};
pub use planner::{Planner, PlannerConfig, PlannerError};
pub use template_extractor::{ParameterizedResult, ParameterizingTransformer, TemplateExtractor};
pub use linkrs_core::types::JoinType;
pub use statements::MatchStatementPlanner;
pub use planner::PlannerEnum;
use std::sync::atomic::{AtomicI64, Ordering};
pub struct PlanIdGenerator {
counter: AtomicI64,
}
impl PlanIdGenerator {
pub fn instance() -> &'static Self {
static INSTANCE: PlanIdGenerator = PlanIdGenerator {
counter: AtomicI64::new(0),
};
&INSTANCE
}
pub fn next_id(&self) -> i64 {
self.counter.fetch_add(1, Ordering::SeqCst)
}
}