Crate gluesql[−][src]
Expand description
GlueSQL
gluesql
is a SQL database engine fully written in Rust.
You can simply use gluesql
as an embedded SQL database using default storage
sled.
Or you can make your own SQL database using gluesql
, it provides parser & execution layer as
a library.
gluesql
uses sqlparser-rs as a parser, and has own implementation of execution layer.
And the entire codes of execution layer are pure functional!
Examples
use gluesql::*; #[cfg(feature = "sled-storage")] fn main() { let storage = SledStorage::new("data/doc-db").unwrap(); let mut glue = Glue::new(storage); let sqls = " DROP TABLE IF EXISTS Glue; CREATE TABLE Glue (id INTEGER); INSERT INTO Glue VALUES (100); INSERT INTO Glue VALUES (200); SELECT * FROM Glue WHERE id > 100; DROP TABLE Glue; "; glue.execute(&sqls).unwrap(); } #[cfg(not(feature = "sled-storage"))] fn main() {}
Custom Storage
To get started, all you need to implement for gluesql
is implementing three traits
(two for functions, one running tests).
There are also three optional traits (AlterTable
, Index
and IndexMut
),
whether implementing it or not is all up to you.
Store traits
Store traits (optional)
Trait to run integration tests
Tests
gluesql
provides integration tests as a module.
Developers who wants to make their own custom storages can import and run those tests.
/tests/
might look quite empty, but actual test cases exist in src/tests/
.
Example code to see,
After you implement Tester
trait, the only thing you need to do is calling generate_tests!
macro.
Re-exports
pub use chrono;
pub use sqlparser as parser;
pub use data::*;
pub use plan::*;
pub use result::*;
pub use store::*;
pub use translate::*;
pub use sled;