[][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).

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 data::*;
pub use result::*;
pub use store::*;

Modules

data
result
store
tests

Macros

concat_with
concat_with_empty
generate_tests
row
select
select_with_empty

Structs

Query

Enums

AggregateError
BlendContextError
BlendError
EvaluateError
ExecuteError
FilterContextError
FilterError
JoinError
LimitError
ParserError
Payload
SelectError
UpdateError

Functions

execute
parse