1pub mod connector;
15pub mod context;
16pub mod physical_mapper;
17pub mod physical_planner;
18pub mod plan;
19pub mod planner;
20pub mod template_extractor;
21
22pub mod fulltext_planner;
24#[cfg(feature = "vector")]
25pub mod vector_planner;
26
27pub mod join_order;
29pub mod scan_predicate;
30pub mod statements;
31
32pub mod dml_shape;
34
35pub use connector::SegmentsConnector;
37pub use plan::execution_plan::{ExecutionPlan, SubPlan};
38pub use planner::{Planner, PlannerConfig, PlannerError};
39pub use template_extractor::{ParameterizedResult, ParameterizingTransformer, TemplateExtractor};
40
41pub use linkrs_core::types::JoinType;
43pub use statements::MatchStatementPlanner;
44
45pub use planner::PlannerEnum;
47
48use std::sync::atomic::{AtomicI64, Ordering};
49
50pub struct PlanIdGenerator {
51 counter: AtomicI64,
52}
53
54impl PlanIdGenerator {
55 pub fn instance() -> &'static Self {
56 static INSTANCE: PlanIdGenerator = PlanIdGenerator {
57 counter: AtomicI64::new(0),
58 };
59 &INSTANCE
60 }
61
62 pub fn next_id(&self) -> i64 {
63 self.counter.fetch_add(1, Ordering::SeqCst)
64 }
65}