Skip to main content

reddb_server/storage/query/engine/
mod.rs

1//! Query Execution Engine
2//!
3//! Jena-inspired algebraic query execution with pluggable engines.
4//!
5//! # Architecture
6//!
7//! ```text
8//! QueryExpr (AST) → Op (Algebra) → Plan → Iterator<Binding>
9//!
10//! ┌─────────────────────────────────────────────────────────────┐
11//! │                        QueryEngine                          │
12//! ├─────────────────────────────────────────────────────────────┤
13//! │  compile(QueryExpr) → Op                                    │
14//! │  optimize(Op) → Op                                          │
15//! │  execute(Op) → BindingIterator                              │
16//! └─────────────────────────────────────────────────────────────┘
17//!                              │
18//!          ┌──────────────────┼──────────────────┐
19//!          ▼                  ▼                  ▼
20//!      OpBGP              OpJoin            OpFilter
21//!   (BasicPattern)     (Join two Ops)    (Filter Op)
22//! ```
23//!
24//! # Components
25//!
26//! - **Op**: Algebraic operators (scan, filter, join, union, etc.)
27//! - **Transform**: Visitors that transform Op trees
28//! - **Binding**: Variable -> Value mapping
29//! - **BindingIterator**: Lazy result stream
30//! - **QueryEngine**: Compiles, optimizes, and executes queries
31
32pub mod aggregates_extra;
33pub mod binding;
34pub mod iterator;
35pub mod op;
36pub mod registry;
37pub mod transform;
38
39pub use binding::{Binding, BindingBuilder, Var};
40pub use iterator::{
41    BindingIterator, QueryIter, QueryIterBase, QueryIterFilter, QueryIterJoin, QueryIterProject,
42    QueryIterSlice, QueryIterSort, QueryIterUnion,
43};
44pub use op::{
45    Op, OpBGP, OpDisjunction, OpDistinct, OpExtend, OpFilter, OpGroup, OpJoin, OpLeftJoin, OpMinus,
46    OpNull, OpOrder, OpProject, OpReduced, OpSequence, OpSlice, OpTable, OpTriple, OpUnion,
47    Pattern, Triple,
48};
49pub use registry::{QueryEngine, QueryEngineFactory, QueryEngineRegistry};
50pub use transform::{OpTransform, OpVisitor, TransformCopy, TransformPushFilter};