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;

Modules

Macros

Structs

Enums

Functions