[−][src]Crate gluesql
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 = " CREATE TABLE Glue (id INTEGER); INSERT INTO Glue VALUES (100); INSERT INTO Glue VALUES (200); SELECT * FROM Glue WHERE id > 100; DROP TABLE Glue; "; for query in parse(sqls).unwrap() { glue.execute(&query).unwrap(); } } #[cfg(not(feature = "sled-storage"))] fn main() {}
Custom Storage
All you need to implement for gluesql
is implementing 3 traits (2 for functions, 1 for
running tests).
There is also an optional trait (AlterTable), whether implementing it or not is all up to you.
Custom storage examples to see,
Tests
For making easy for developers to implement custom storages, gluesql
also provides integration
tests as a module.
So, in /tests/
, it looks 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 sqlparser as parser; |
pub use data::*; |
pub use result::*; |
pub use store::*; |
pub use sled; |
Modules
data | |
result | |
store | |
tests |
Macros
concat_with | |
concat_with_empty | |
generate_alter_table_tests | |
generate_tests | |
row | |
select | |
select_with_empty | |
test_case | |
try_into |
Structs
Glue | |
Query | |
SledStorage |
Enums
AggregateError | |
BlendError | |
EvaluateError | |
ExecuteError | |
FetchError | |
FilterError | |
GroupKey | |
JoinError | |
LimitError | |
ParserError | |
Payload | |
SelectError | |
UpdateError |
Functions
execute | |
parse |