alopex_sql/
lib.rs

1//! SQL parser and planning components for the Alopex DB SQL dialect.
2//!
3//! This crate provides:
4//!
5//! - **Tokenizer**: Lexical analysis of SQL strings
6//! - **Parser**: SQL parsing into an AST
7//! - **Catalog**: Table and index metadata management
8//! - **Planner**: AST to logical plan conversion with type checking
9//!
10//! # Quick Start
11//!
12//! ```
13//! use alopex_sql::{Parser, AlopexDialect};
14//! use alopex_sql::catalog::MemoryCatalog;
15//! use alopex_sql::planner::Planner;
16//!
17//! // Parse SQL using the convenience method
18//! let sql = "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)";
19//! let dialect = AlopexDialect::default();
20//! let stmts = Parser::parse_sql(&dialect, sql).unwrap();
21//! let stmt = &stmts[0];
22//!
23//! // Plan with catalog
24//! let catalog = MemoryCatalog::new();
25//! let planner = Planner::new(&catalog);
26//! let plan = planner.plan(stmt).unwrap();
27//! ```
28
29pub mod ast;
30pub mod catalog;
31pub mod columnar;
32pub mod dialect;
33pub mod error;
34pub mod executor;
35pub mod parser;
36pub mod planner;
37pub mod storage;
38pub mod tokenizer;
39pub mod unified_error;
40
41// AST types
42pub use ast::{
43    Statement, StatementKind,
44    ddl::*,
45    dml::*,
46    expr::*,
47    span::{Location, Span, Spanned},
48};
49
50// Dialect and parser types
51pub use dialect::{AlopexDialect, Dialect};
52pub use error::{ParserError, Result};
53pub use parser::Parser;
54pub use tokenizer::Tokenizer;
55pub use tokenizer::keyword::Keyword;
56pub use tokenizer::token::{Token, TokenWithSpan, Word};
57pub use unified_error::SqlError;
58
59// Catalog types (re-exported for convenience)
60pub use catalog::persistent::{CatalogOverlay, DataSourceFormat, TableType};
61pub use catalog::{
62    Catalog, ColumnMetadata, Compression, IndexMetadata, MemoryCatalog, RowIdMode, StorageOptions,
63    StorageType, TableMetadata,
64};
65
66// Planner types (re-exported for convenience)
67pub use planner::{
68    LogicalPlan, NameResolver, Planner, PlannerError, ProjectedColumn, Projection, ResolvedColumn,
69    ResolvedType, SortExpr, TypeChecker, TypedAssignment, TypedExpr, TypedExprKind,
70};
71
72// Storage types
73pub use storage::{
74    IndexScanIterator, IndexStorage, KeyEncoder, RowCodec, SqlTransaction, SqlValue, StorageError,
75    TableScanIterator, TableStorage, TxnBridge, TxnContext,
76};
77
78// Executor types
79pub use executor::{
80    ColumnInfo, ConstraintViolation, EvaluationError, ExecutionResult, Executor, ExecutorError,
81    QueryResult, Row,
82};
83
84/// `ExecutionResult` の公開 API 名。
85pub type SqlResult = ExecutionResult;
86
87#[cfg(test)]
88mod integration;