Skip to main content

reddb_server/storage/query/
mod.rs

1//! Query Engine for RedDB
2//!
3//! Provides query execution, filtering, sorting, and similarity search
4//! capabilities for the RedDB storage engine.
5//!
6//! # Components
7//!
8//! - **filter**: Filter predicates (Eq, Lt, Gt, Between, Like, etc.)
9//! - **sort**: Sorting and ordering operations
10//! - **executor**: Query plan execution
11//! - **similarity**: Vector similarity search integration
12//! - **modes**: Multi-mode query parsing (SQL, Gremlin, Cypher, SPARQL, Natural Language)
13//!
14//! # Multi-Mode Parsing
15//!
16//! The query engine supports multiple query languages with automatic mode detection:
17//!
18//! ```ignore
19//! use reddb_rql::modes::{parse_multi, detect_mode, QueryMode};
20//!
21//! // Gremlin
22//! let gremlin = parse_multi("g.V().hasLabel('host').out('connects')").unwrap();
23//!
24//! // SPARQL
25//! let sparql = parse_multi("SELECT ?host WHERE { ?host :hasIP ?ip }").unwrap();
26//!
27//! // Natural language
28//! let natural = parse_multi("find all hosts with ssh open").unwrap();
29//! ```
30//!
31//! # Example
32//!
33//! ```ignore
34//! use reddb::storage::query::{Query, Filter, OrderBy, Direction};
35//!
36//! let query = Query::select("users")
37//!     .filter(Filter::eq("status", "active"))
38//!     .filter(Filter::gt("age", 18))
39//!     .order_by("created_at", Direction::Desc)
40//!     .limit(10);
41//!
42//! let results = executor.execute(&query)?;
43//! ```
44
45pub mod analyze_cmd;
46pub mod batch;
47pub mod binary;
48pub mod engine;
49pub mod executors;
50pub mod planner;
51pub mod rag;
52pub mod similarity;
53pub mod step;
54#[cfg(test)]
55pub(crate) mod test_support;
56pub mod unified;
57pub mod user_params;
58pub(crate) mod value_compare;
59
60// Re-export common types
61// Native public paths alias the same portable modules and types (ADR 0077).
62pub use reddb_engine::query::{evaluator, executor, filter, filter_compiled, sort};
63
64pub use engine::{
65    Binding, BindingBuilder, BindingIterator, Op, OpBGP, OpDisjunction, OpDistinct, OpExtend,
66    OpFilter, OpGroup, OpJoin, OpLeftJoin, OpMinus, OpNull, OpOrder, OpProject, OpReduced,
67    OpSequence, OpSlice, OpTable, OpTransform, OpTriple, OpUnion, OpVisitor, Pattern, QueryEngine,
68    QueryEngineFactory, QueryEngineRegistry, QueryIter, QueryIterBase, QueryIterFilter,
69    QueryIterJoin, QueryIterProject, QueryIterSlice, QueryIterSort, QueryIterUnion, TransformCopy,
70    TransformPushFilter, Triple, Var,
71};
72pub use executor::{QueryExecutor, QueryPlan, QueryResult};
73pub use executors::{
74    CteContext, CteExecutor, CteStats, ExecuteResult, GremlinExecutor, MultiModeExecutor,
75    NaturalExecutor, SparqlExecutor,
76};
77pub use filter::{Filter, FilterOp, Predicate};
78pub use planner::{
79    CacheStats, CachedPlan, CardinalityEstimate, CostEstimator, PlanCache, PlanCost,
80    QueryPlan as PlannerQueryPlan, QueryPlanner,
81};
82pub use rag::{
83    ChunkSource, ContextChunk, EntityType, MultiSourceRetriever, QueryAnalysis, QueryIntent,
84    RagConfig, RagEngine, RetrievalContext, RetrievalStrategy, SimilarEntity,
85};
86pub use reddb_types::{SqlTypeName, TypeModifier};
87pub use similarity::{SimilarityQuery, SimilarityResult};
88pub use sort::{Direction, NullsOrder, OrderBy, QueryLimits, SortKey};
89pub use step::{
90    AggregateStep, BarrierStep, BasicTraversal, BranchStep, ChooseStep, CollectingBarrierStep,
91    DedupStep, Direction as TraversalDirection, EdgeSourceStep, EdgeStep, ExecutionMode,
92    FilterStep, FlatMapStep, FoldStep, GroupStep, HasStep, IdStep, LimitStep, LoopState, MapStep,
93    OptionalStep, OrderStep, Path, PathStep, Predicate as StepPredicate, ProjectStep, PropertyStep,
94    RangeStep, ReducingBarrierStep, RepeatStep, SelectStep, SideEffectStep, SourceStep, Step,
95    StepPosition, StepResult, StoreStep, Traversal, TraversalParent, Traverser, TraverserGenerator,
96    TraverserRequirement, TraverserValue, UnionStep, ValueMapStep, VertexSourceStep, VertexStep,
97    WhereStep,
98};
99pub use unified::{
100    ExecutionError, GraphPath, MatchedEdge, MatchedNode, QueryStats, UnifiedExecutor,
101    UnifiedRecord, UnifiedResult,
102};
103
104/// Returns true when the table source should be interpreted as the universal entity
105/// space (table, document, graph, vector mixed mode).
106pub use reddb_engine::query::runtime::is_universal_entity_source;