sqlrite 0.8.0__tar.gz → 0.9.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sqlrite-0.8.0 → sqlrite-0.9.1}/.github/workflows/ci.yml +12 -1
- {sqlrite-0.8.0 → sqlrite-0.9.1}/CLAUDE.md +11 -6
- {sqlrite-0.8.0 → sqlrite-0.9.1}/Cargo.lock +1181 -13
- {sqlrite-0.8.0 → sqlrite-0.9.1}/Cargo.toml +6 -3
- {sqlrite-0.8.0 → sqlrite-0.9.1}/Makefile +12 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/PKG-INFO +1 -1
- {sqlrite-0.8.0 → sqlrite-0.9.1}/README.md +9 -2
- {sqlrite-0.8.0 → sqlrite-0.9.1}/desktop/package.json +1 -1
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/_index.md +5 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/architecture.md +4 -2
- sqlrite-0.9.1/docs/benchmarks-plan.md +365 -0
- sqlrite-0.9.1/docs/benchmarks.md +227 -0
- sqlrite-0.9.1/docs/concurrent-writes-plan.md +412 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/pager.md +1 -1
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/phase-7-plan.md +3 -2
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/roadmap.md +1 -1
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/supported-sql.md +46 -8
- {sqlrite-0.8.0 → sqlrite-0.9.1}/pyproject.toml +1 -1
- {sqlrite-0.8.0 → sqlrite-0.9.1}/scripts/bump-version.sh +32 -1
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sdk/python/Cargo.toml +1 -1
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sqlrite-ask/Cargo.toml +1 -1
- sqlrite-0.9.1/src/connection.rs +1292 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/lib.rs +3 -1
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/db/database.rs +3 -3
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/db/table.rs +16 -8
- sqlrite-0.9.1/src/sql/dialect.rs +100 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/executor.rs +138 -23
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/hnsw.rs +34 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/mod.rs +26 -6
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/pager/mod.rs +307 -33
- sqlrite-0.9.1/src/sql/params.rs +271 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/parser/create.rs +1 -1
- sqlrite-0.9.1/src/sql/pragma.rs +514 -0
- sqlrite-0.8.0/src/connection.rs +0 -704
- {sqlrite-0.8.0 → sqlrite-0.9.1}/.github/workflows/release-pr.yml +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/.github/workflows/release.yml +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/.github/workflows/rust.yml +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/.gitignore +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/CODE_OF_CONDUCT.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/LICENSE +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/MAINTAINERS +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/desktop/index.html +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/desktop/package-lock.json +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/desktop/src/App.svelte +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/desktop/src/app.css +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/desktop/src/main.ts +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/desktop/src/vite-env.d.ts +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/desktop/svelte.config.js +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/desktop/tsconfig.json +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/desktop/vite.config.ts +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/ask-backend-examples.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/ask.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/design-decisions.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/desktop.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/embedding.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/file-format.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/fts.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/getting-started.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/mcp.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/phase-8-plan.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/release-plan.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/release-secrets.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/smoke-test.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/sql-engine.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/storage-model.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/docs/usage.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/examples/README.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/examples/c/Makefile +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/examples/c/hello.c +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/examples/go/go.mod +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/examples/go/hello.go +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/examples/hybrid-retrieval/README.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/examples/hybrid-retrieval/hybrid_retrieval.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/examples/nodejs/hello.mjs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/examples/python/hello.py +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/examples/rust/quickstart.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/examples/wasm/Makefile +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/examples/wasm/index.html +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/examples/wasm/server.mjs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/images/SQLRite - Desktop.png +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/images/SQLRite Data Structures.png +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/images/SQLRite Simple SQL Execution High Level Diagram.png +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/images/SQLRite Simple SQL INSERT Execution High Level Diagram (Insert Row).png +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/images/SQLRite Simple SQL INSERT Execution High Level Diagram.png +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/images/SQLRite_logo.png +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/images/architecture.png +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/rust-toolchain.toml +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/samples/AST.delete.example +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/samples/AST.insert.exemple +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/samples/AST.select.example +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/samples/AST.update.example +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/samples/CREATE TABLE sqlrite_schema.sql +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/samples/CREATE_TABLE with duplicate.sql +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/samples/CREATE_TABLE.sql +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/samples/INSERT.sql +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sdk/go/README.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sdk/go/ask.go +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sdk/go/ask_test.go +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sdk/go/conn.go +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sdk/go/go.mod +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sdk/go/rows.go +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sdk/go/sqlrite.go +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sdk/go/sqlrite_test.go +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sdk/go/stmt.go +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sdk/python/README.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sdk/python/src/lib.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sdk/python/tests/test_ask.py +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sdk/python/tests/test_sqlrite.py +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sqlrite-ask/README.md +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sqlrite-ask/src/lib.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sqlrite-ask/src/prompt.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sqlrite-ask/src/provider/anthropic.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sqlrite-ask/src/provider/mock.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sqlrite-ask/src/provider/mod.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/sqlrite-ask/tests/anthropic_http.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/ask/mod.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/ask/schema.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/error.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/main.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/meta_command/mod.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/repl/mod.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/agg.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/db/mod.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/db/secondary_index.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/fts/bm25.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/fts/mod.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/fts/posting_list.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/fts/tokenizer.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/pager/allocator.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/pager/cell.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/pager/file.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/pager/freelist.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/pager/fts_cell.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/pager/header.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/pager/hnsw_cell.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/pager/index_cell.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/pager/interior_page.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/pager/overflow.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/pager/page.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/pager/pager.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/pager/table_page.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/pager/varint.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/pager/wal.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/parser/insert.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/parser/mod.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/parser/select.rs +0 -0
- {sqlrite-0.8.0 → sqlrite-0.9.1}/src/sql/tokenizer.rs +0 -0
|
@@ -91,12 +91,20 @@ jobs:
|
|
|
91
91
|
# rlib targets (unresolved Python/Node symbols). The per-SDK
|
|
92
92
|
# `python-sdk` + `nodejs-sdk` jobs below exercise these
|
|
93
93
|
# crates through their native tooling (maturin / napi-rs).
|
|
94
|
+
#
|
|
95
|
+
# - `sqlrite-benchmarks` is the SQLR-4 / SQLR-16 bench harness.
|
|
96
|
+
# Excluded from CI for two reasons: criterion benches are
|
|
97
|
+
# noisy on shared GitHub runners (the published numbers come
|
|
98
|
+
# from a pinned local host per Q1), and the bundled rusqlite
|
|
99
|
+
# build pulls in a heavy C toolchain that we don't want to
|
|
100
|
+
# pay on every PR. Run locally with `make bench`.
|
|
94
101
|
- name: cargo build
|
|
95
102
|
run: |
|
|
96
103
|
cargo build --workspace \
|
|
97
104
|
--exclude sqlrite-desktop \
|
|
98
105
|
--exclude sqlrite-python \
|
|
99
106
|
--exclude sqlrite-nodejs \
|
|
107
|
+
--exclude sqlrite-benchmarks \
|
|
100
108
|
--all-targets
|
|
101
109
|
|
|
102
110
|
- name: cargo test
|
|
@@ -104,7 +112,8 @@ jobs:
|
|
|
104
112
|
cargo test --workspace \
|
|
105
113
|
--exclude sqlrite-desktop \
|
|
106
114
|
--exclude sqlrite-python \
|
|
107
|
-
--exclude sqlrite-nodejs
|
|
115
|
+
--exclude sqlrite-nodejs \
|
|
116
|
+
--exclude sqlrite-benchmarks
|
|
108
117
|
|
|
109
118
|
# ---------------------------------------------------------------------------
|
|
110
119
|
# Rust: lint — fmt + clippy + doc. One cell (ubuntu) because these
|
|
@@ -140,6 +149,7 @@ jobs:
|
|
|
140
149
|
--exclude sqlrite-desktop \
|
|
141
150
|
--exclude sqlrite-python \
|
|
142
151
|
--exclude sqlrite-nodejs \
|
|
152
|
+
--exclude sqlrite-benchmarks \
|
|
143
153
|
--all-targets
|
|
144
154
|
|
|
145
155
|
- name: cargo doc
|
|
@@ -150,6 +160,7 @@ jobs:
|
|
|
150
160
|
--exclude sqlrite-desktop \
|
|
151
161
|
--exclude sqlrite-python \
|
|
152
162
|
--exclude sqlrite-nodejs \
|
|
163
|
+
--exclude sqlrite-benchmarks \
|
|
153
164
|
--no-deps
|
|
154
165
|
|
|
155
166
|
# ---------------------------------------------------------------------------
|
|
@@ -8,13 +8,14 @@ SQLRite is a from-scratch SQLite-style embedded database written in Rust. It's p
|
|
|
8
8
|
|
|
9
9
|
## Workspace layout
|
|
10
10
|
|
|
11
|
-
`Cargo.toml` is a workspace whose members are: `.` (the engine, package `sqlrite-engine`, lib `sqlrite`), `desktop/src-tauri`, `sqlrite-ffi`, `sqlrite-ask`, `sqlrite-mcp`, `sdk/python`, `sdk/nodejs`. `sdk/wasm` and `sdk/go` are deliberately **not** workspace members (wasm32 target / cgo separation).
|
|
11
|
+
`Cargo.toml` is a workspace whose members are: `.` (the engine, package `sqlrite-engine`, lib `sqlrite`), `desktop/src-tauri`, `sqlrite-ffi`, `sqlrite-ask`, `sqlrite-mcp`, `sdk/python`, `sdk/nodejs`, `benchmarks`. `sdk/wasm` and `sdk/go` are deliberately **not** workspace members (wasm32 target / cgo separation).
|
|
12
12
|
|
|
13
13
|
- `src/` — engine. Public API is `Connection`/`Statement`/`Rows`/`Row`/`Value` from [src/connection.rs](src/connection.rs), re-exported via [src/lib.rs](src/lib.rs). Any new SDK should bind only to this surface.
|
|
14
14
|
- `sqlrite-ask/` — pure-Rust LLM adapter (Anthropic/OpenAI/Ollama) for natural-language → SQL. The engine's `ask` feature provides the thin `ConnectionAskExt::ask` glue.
|
|
15
15
|
- `sqlrite-mcp/` — MCP stdio server. Seven tools: `list_tables`, `describe_table`, `query`, `execute`, `schema_dump`, `vector_search`, `ask`. `--read-only` opens with a shared lock and hides `execute`.
|
|
16
16
|
- `sqlrite-ffi/` — C ABI cdylib + generated `sqlrite.h` header. Backs the Go SDK and any C consumer.
|
|
17
17
|
- `desktop/` — Tauri 2 + Svelte 5 GUI. Embeds the engine directly (no FFI hop).
|
|
18
|
+
- `benchmarks/` — SQLR-4 / SQLR-16 bench harness. `Driver` trait + SQLRite + SQLite (rusqlite-bundled) drivers + criterion-driven workloads. Excluded from the default CI build/test/clippy/doc commands; run locally with `make bench` (or `make bench-duckdb`). See [docs/benchmarks-plan.md](docs/benchmarks-plan.md).
|
|
18
19
|
|
|
19
20
|
Architecture deep-dive: [docs/architecture.md](docs/architecture.md). The full doc index is [docs/_index.md](docs/_index.md).
|
|
20
21
|
|
|
@@ -24,20 +25,20 @@ SQL string → [src/sql/mod.rs](src/sql/mod.rs) `process_command` parses with th
|
|
|
24
25
|
|
|
25
26
|
## Commands
|
|
26
27
|
|
|
27
|
-
CI is the source of truth — the workspace excludes that follow are required because the desktop crate needs a Svelte build first
|
|
28
|
+
CI is the source of truth — the workspace excludes that follow are required because the desktop crate needs a Svelte build first, the PyO3/napi-rs cdylibs can't link standalone test binaries, and the `benchmarks/` harness deliberately stays out of CI (criterion is noisy on shared runners; the rusqlite-bundled build is heavy).
|
|
28
29
|
|
|
29
30
|
```sh
|
|
30
31
|
# Build / test the Rust workspace (matches CI)
|
|
31
|
-
cargo build --workspace --exclude sqlrite-desktop --exclude sqlrite-python --exclude sqlrite-nodejs --all-targets
|
|
32
|
-
cargo test --workspace --exclude sqlrite-desktop --exclude sqlrite-python --exclude sqlrite-nodejs
|
|
32
|
+
cargo build --workspace --exclude sqlrite-desktop --exclude sqlrite-python --exclude sqlrite-nodejs --exclude sqlrite-benchmarks --all-targets
|
|
33
|
+
cargo test --workspace --exclude sqlrite-desktop --exclude sqlrite-python --exclude sqlrite-nodejs --exclude sqlrite-benchmarks
|
|
33
34
|
|
|
34
35
|
# Single test (exact name; --nocapture to see println!)
|
|
35
36
|
cargo test <test_name> -- --nocapture
|
|
36
37
|
|
|
37
38
|
# Lint (CI runs all three)
|
|
38
39
|
cargo fmt --all -- --check
|
|
39
|
-
cargo clippy --workspace --exclude sqlrite-desktop --exclude sqlrite-python --exclude sqlrite-nodejs --all-targets
|
|
40
|
-
cargo doc --workspace --exclude sqlrite-desktop --exclude sqlrite-python --exclude sqlrite-nodejs --no-deps
|
|
40
|
+
cargo clippy --workspace --exclude sqlrite-desktop --exclude sqlrite-python --exclude sqlrite-nodejs --exclude sqlrite-benchmarks --all-targets
|
|
41
|
+
cargo doc --workspace --exclude sqlrite-desktop --exclude sqlrite-python --exclude sqlrite-nodejs --exclude sqlrite-benchmarks --no-deps
|
|
41
42
|
|
|
42
43
|
# Run the REPL (default features include cli + ask + file-locks)
|
|
43
44
|
cargo run # in-memory
|
|
@@ -49,6 +50,10 @@ cargo build --release -p sqlrite-ffi # C cdylib + sqlrite.h
|
|
|
49
50
|
cd desktop && npm install && npm run tauri dev # desktop app dev mode
|
|
50
51
|
cargo run -p sqlrite-mcp -- /path/to.sqlrite # MCP server (stdio)
|
|
51
52
|
|
|
53
|
+
# Benchmarks (SQLR-4 / SQLR-16) — local-only, never CI
|
|
54
|
+
make bench # SQLRite + SQLite (lean)
|
|
55
|
+
make bench-duckdb # adds DuckDB driver (Group B only)
|
|
56
|
+
|
|
52
57
|
# Release plumbing
|
|
53
58
|
scripts/bump-version.sh 0.2.0 # bumps version across 11 manifests
|
|
54
59
|
```
|