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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
//! `ManifoldDB` Query
//!
//! This crate provides query parsing, planning, and execution for `ManifoldDB`.
//!
//! # Overview
//!
//! The query system consists of several layers:
//!
//! - **AST**: Abstract syntax tree representation of parsed queries
//! - **Parser**: SQL parser with graph and vector extensions
//! - **Plan**: Query planning (logical and physical plans)
//! - **Exec**: Query execution engine
//!
//! # Modules
//!
//! - [`ast`] - Query abstract syntax tree types
//! - [`parser`] - SQL parser with graph/vector extensions
//! - [`plan`] - Query planning (logical and physical)
//! - [`exec`] - Query execution
//! - [`error`] - Error types for parsing and execution
//!
//! # Quick Start
//!
//! Parse a simple SQL query:
//!
//! ```
//! use manifoldb_query::parser::parse_sql;
//!
//! let statements = parse_sql("SELECT * FROM users WHERE id = 1").unwrap();
//! ```
//!
//! Parse a query with graph patterns:
//!
//! ```
//! use manifoldb_query::parser::ExtendedParser;
//!
//! let statements = ExtendedParser::parse(
//! "SELECT * FROM users MATCH (u)-[:FOLLOWS]->(f) WHERE u.id = 1"
//! ).unwrap();
//! ```
//!
//! Build AST programmatically:
//!
//! ```
//! use manifoldb_query::ast::{
//! Expr, QualifiedName, SelectItem, SelectStatement, TableRef,
//! };
//!
//! let query = SelectStatement::new(vec![SelectItem::Wildcard])
//! .from(TableRef::table(QualifiedName::simple("users")))
//! .where_clause(
//! Expr::column(QualifiedName::simple("id"))
//! .eq(Expr::integer(1))
//! );
//! ```
//!
//! Build a logical plan from a parsed query:
//!
//! ```
//! use manifoldb_query::parser::parse_single_statement;
//! use manifoldb_query::plan::logical::PlanBuilder;
//!
//! let stmt = parse_single_statement("SELECT * FROM users WHERE id = 1").unwrap();
//! let plan = PlanBuilder::new().build_statement(&stmt).unwrap();
//! println!("{}", plan.display_tree());
//! ```
// Deny unwrap in library code to ensure proper error handling
// Re-export commonly used items at the crate root
pub use ;
pub use ;
pub use ;
pub use ;