gluesql 0.3.0

GlueSQL - Open source SQL database engine fully written in Rust with pure functional execution layer, easily swappable storage and web assembly support!
Documentation
use crate::*;

test_case!(ordering, async move {
    let create_sql = "
        CREATE TABLE Operator (
            id INTEGER,
            name TEXT,
        );
    ";

    run!(create_sql);

    let delete_sql = "DELETE FROM Operator";
    run!(delete_sql);

    let insert_sqls = [
        "INSERT INTO Operator (id, name) VALUES (1, \"Abstract\");",
        "INSERT INTO Operator (id, name) VALUES (2, \"Azzzz\");",
        "INSERT INTO Operator (id, name) VALUES (3, \"July\");",
        "INSERT INTO Operator (id, name) VALUES (4, \"Romeo\");",
        "INSERT INTO Operator (id, name) VALUES (5, \"Trade\");",
    ];

    for insert_sql in insert_sqls.iter() {
        run!(insert_sql);
    }

    let test_cases = [
        (1, "SELECT * FROM Operator WHERE id < 2;"),
        (2, "SELECT * FROM Operator WHERE id <= 2;"),
        (3, "SELECT * FROM Operator WHERE id > 2;"),
        (4, "SELECT * FROM Operator WHERE id >= 2;"),
        (1, "SELECT * FROM Operator WHERE 2 > id;"),
        (2, "SELECT * FROM Operator WHERE 2 >= id;"),
        (3, "SELECT * FROM Operator WHERE 2 < id;"),
        (4, "SELECT * FROM Operator WHERE 2 <= id;"),
        (5, "SELECT * FROM Operator WHERE 1 < 3;"),
        (5, "SELECT * FROM Operator WHERE 3 >= 3;"),
        (0, "SELECT * FROM Operator WHERE 3 > 3;"),
        (
            5,
            "SELECT * FROM Operator o1 WHERE 3 > (SELECT id FROM Operator WHERE o1.id < 100);",
        ),
        (2, "SELECT * FROM Operator WHERE name < \"Azzzzzzzzzz\";"),
        (1, "SELECT * FROM Operator WHERE name < \"Az\";"),
        (5, "SELECT * FROM Operator WHERE name < \"zz\";"),
        (5, "SELECT * FROM Operator WHERE \"aa\" < \"zz\";"),
        (4, "SELECT * FROM Operator WHERE \"Romeo\" >= name;"),
        (
            1,
            "SELECT * FROM Operator WHERE (SELECT name FROM Operator LIMIT 1) >= name",
        ),
        (
            1,
            "SELECT * FROM Operator WHERE name <= (SELECT name FROM Operator LIMIT 1)",
        ),
        (
            5,
            "SELECT * FROM Operator WHERE \"zz\" > (SELECT name FROM Operator LIMIT 1)",
        ),
        (
            5,
            "SELECT * FROM Operator WHERE (SELECT name FROM Operator LIMIT 1) < \"zz\"",
        ),
        (5, "SELECT * FROM Operator WHERE NOT (1 != 1);"),
    ];

    for (num, sql) in test_cases.iter() {
        count!(*num, sql);
    }
});