| Crates.io | oak-sql |
| lib.rs | oak-sql |
| version | 0.0.1 |
| created_at | 2025-10-21 12:33:24.125928+00 |
| updated_at | 2026-01-23 05:19:23.168637+00 |
| description | SQL database query language parser with support for standard SQL syntax and database operations. |
| homepage | https://github.com/ygg-lang/oaks |
| repository | https://github.com/ygg-lang/oaks |
| max_upload_size | |
| id | 1893745 |
| size | 100,551 |
High-performance incremental SQL parser for the oak ecosystem with flexible configuration, optimized for database query analysis and SQL processing.
Oak SQL is a robust parser for SQL, designed to handle complete SQL syntax including modern features. Built on the solid foundation of oak-core, it provides both high-level convenience and detailed AST generation for database query analysis and SQL processing.
Basic example:
use oak_sql::{Parser, SqlLanguage, SourceText};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let parser = Parser::new();
let source = SourceText::new(r#"
SELECT u.id, u.name, p.title
FROM users u
JOIN posts p ON u.id = p.user_id
WHERE u.active = true
ORDER BY u.created_at DESC
LIMIT 10;
"#);
let result = parser.parse(&source);
println!("Parsed SQL successfully.");
Ok(())
}
use oak_sql::{Parser, SqlLanguage, SourceText};
let parser = Parser::new();
let source = SourceText::new(r#"
SELECT id, name, email
FROM customers
WHERE country = 'USA' AND age > 21
ORDER BY name ASC
LIMIT 100;
"#);
let result = parser.parse(&source);
println!("Select statement parsed successfully.");
use oak_sql::{Parser, SqlLanguage, SourceText};
let parser = Parser::new();
let source = SourceText::new(r#"
INSERT INTO products (name, price, category)
VALUES ('Laptop', 999.99, 'Electronics');
"#);
let result = parser.parse(&source);
println!("Insert statement parsed successfully.");
use oak_sql::{Parser, SqlLanguage, SourceText};
let parser = Parser::new();
let source = SourceText::new("SELECT * FROM users WHERE id = 1;");
let result = parser.parse(&source);
println!("Token parsing completed.");
use oak_sql::{Parser, SqlLanguage, SourceText};
let parser = Parser::new();
let source = SourceText::new(r#"
SELECT name,
FROM users
WHERE id = 1;
"#);
let result = parser.parse(&source);
if let Some(errors) = result.result.err() {
println!("Parse errors found: {:?}", errors);
} else {
println!("Parsed successfully.");
}
The parser generates a comprehensive AST with the following main structures:
Oak SQL integrates seamlessly with:
Check out the examples directory for comprehensive examples:
Contributions are welcome!
Please feel free to submit pull requests at the project repository or open issues.