1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//! Data Query Language (DQL) Statement Planners
//!
//! This module contains **statement-level** planners for data query operations.
//! Each planner implements the `Planner` trait and is registered in `PlannerEnum`.
//!
//! ## Responsibility Boundary
//!
//! **Statement planners** (this module) handle standalone DQL statements.
//! They implement `Planner` and generate a complete `SubPlan` from scratch.
//! Example: `ReturnPlanner` handles a standalone `RETURN 1 AS x` statement.
//!
//! **Clause planners** (`clauses/` module) handle individual clauses within compound statements.
//! They implement `ClausePlanner` and receive an input `SubPlan` to build upon.
//! Example: `WhereClausePlanner` handles the WHERE clause inside a MATCH statement.
//!
//! When a clause appears both as a standalone statement and as a clause within
//! a compound statement, both modules may have a planner for it (e.g., `ReturnPlanner`
//! in this module vs `ReturnClausePlanner` in `clauses/`). The statement planner
//! handles the standalone case, while the clause planner is used by compound
//! statement planners like `MatchStatementPlanner`.
//!
//! ## Supported Operations
//!
//! - FETCH EDGES: Fetch edges by source/destination/rank
//! - FETCH VERTICES: Fetch vertices by ID
//! - GO: Nebula-style traversal queries
//! - GROUP BY: Aggregation queries
//! - LOOKUP: Index-based vertex/edge lookup
//! - PATH: Path finding queries (shortest path, all paths)
//! - RETURN: Return results (standalone statement)
//! - SET OPERATION: Union, Intersect, Minus operations
//! - SUBGRAPH: Subgraph expansion queries
//! - UNWIND: Expand list into multiple rows
//! - WITH: Pipe results between query parts
//! - YIELD: Yield results (standalone statement)
//!
//! ## Composite Index Optimization
//!
//! The `composite_index_analyzer` module provides optimal index selection for LOOKUP queries
//! with multiple conditions, supporting prefix matching and range scans.
pub use ;