wasm-dbms-sql 0.11.0

SQL front-end (parser, planner, executor) for the wasm-dbms DBMS engine
Documentation

wasm-dbms-sql

logo

license-mit repo-stars downloads latest-version conventional-commits

ci coveralls docs

SQL front-end for the wasm-dbms DBMS engine.

This crate parses SQL text, binds it to a wasm-dbms schema, and runs it against a DbmsContext. It covers queries (SELECT with joins, DISTINCT, aggregates, GROUP BY, HAVING, ORDER BY, LIMIT, OFFSET), writes (INSERT, UPDATE, DELETE), and transactions (BEGIN, COMMIT, ROLLBACK). Tables are still defined with #[derive(Table)]: there is no schema-changing SQL.

Usage

[dependencies]
wasm-dbms = "0.9"
wasm-dbms-api = "0.9"
wasm-dbms-memory = "0.9"
wasm-dbms-sql = "0.9"
use wasm_dbms::prelude::*;
use wasm_dbms_api::prelude::*;
use wasm_dbms_memory::prelude::HeapMemoryProvider;
use wasm_dbms_sql::SqlEngine;

#[derive(Clone, DatabaseSchema)]
#[tables(User = "users")]
pub struct MySchema;

let ctx = DbmsContext::new(HeapMemoryProvider::default());
MySchema::register_tables(&ctx)?;

let engine = SqlEngine::new(MySchema);

engine.execute(
    &ctx,
    None,
    "INSERT INTO users (id, name) VALUES (?, ?)",
    &[Value::from(1u32), Value::from("Alice")],
)?;

let result = engine.execute(
    &ctx,
    None,
    "SELECT name FROM users WHERE id = 1",
    &[],
)?;

Documentation

License

This project is licensed under the MIT License. See the LICENSE file for details.