picovolt 0.10.1 → 0.12.0
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.
- package/README.md +12 -6
- package/package.json +1 -1
- package/picovolt_bg.js +9 -9
- package/picovolt_bg.wasm +0 -0
package/README.md
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
# PicoVolt (PVDB)
|
|
2
2
|
|
|
3
3
|
[](https://github.com/MiniJe/picovolt/actions/workflows/ci.yml)
|
|
4
|
-
[](CHANGELOG.md)
|
|
5
5
|
[](LICENSE)
|
|
6
6
|

|
|
7
|
+
[](https://github.com/MiniJe/picovolt)
|
|
7
8
|
|
|
8
9
|
PicoVolt is an embedded database engine written from scratch in Rust. It is
|
|
9
10
|
experimental software. It has not been audited or hardened for production, so use
|
|
10
11
|
it to learn from and prototype with rather than to store data you cannot lose.
|
|
11
12
|
|
|
13
|
+
If PicoVolt is useful to you, consider starring the repository on GitHub. It is
|
|
14
|
+
the simplest way to help others discover the project.
|
|
15
|
+
|
|
12
16
|
The engine decouples query logic from storage representation through a
|
|
13
17
|
Virtualization Layer Engine (VLE) that shifts between two on-disk shapes:
|
|
14
18
|
|
|
@@ -51,7 +55,7 @@ Linux and Windows. Changes are tracked in [CHANGELOG.md](CHANGELOG.md).
|
|
|
51
55
|
| [`engine/mvcc.rs`](src/engine/mvcc.rs) | transaction clock and snapshot visibility |
|
|
52
56
|
| [`engine/wasm.rs`](src/engine/wasm.rs) | sandboxed `wasmi` extension runtime and the `WasmExec` backend trait |
|
|
53
57
|
| [`engine/interp.rs`](src/engine/interp.rs) | `pv-wasm`: a from-scratch WASM interpreter (integer subset) |
|
|
54
|
-
| [`engine/query.rs`](src/engine/query.rs) | SQL front-end (CREATE/INSERT/UPDATE/DELETE/DROP, `SELECT` with projection
|
|
58
|
+
| [`engine/query.rs`](src/engine/query.rs) | SQL front-end (CREATE/INSERT/UPDATE/DELETE/DROP, `SELECT` with projection, `AS` aliases, `DISTINCT`, aggregates, `GROUP BY`/`HAVING`, `WHERE` predicates incl. `IN`/`BETWEEN`/`IS NULL`/`LIKE`, `BEFORE`, multi-column `ORDER BY`, `LIMIT`) |
|
|
55
59
|
| [`engine/compliance.rs`](src/engine/compliance.rs) | optional, app-driven usage-policy hook (not a license requirement) |
|
|
56
60
|
| [`db.rs`](src/db.rs) | the `Database` surface that ties it together |
|
|
57
61
|
| [`ffi.rs`](src/ffi.rs) | C ABI (the `capi` feature): a panic-safe, C-callable surface wrapping the engine for Go, Python, and C bindings |
|
|
@@ -106,10 +110,12 @@ cargo run --release --example bench # evaluation harness across modes and wor
|
|
|
106
110
|
|
|
107
111
|
SQL supported: `CREATE TABLE`, `CREATE INDEX ON t (col)`, `INSERT`,
|
|
108
112
|
`UPDATE ... SET ... WHERE`, `DELETE ... WHERE`, `DROP TABLE`, and
|
|
109
|
-
`SELECT {* | col, ... | COUNT/SUM/MIN/MAX/AVG(...)
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
`
|
|
113
|
+
`SELECT [DISTINCT] {* | col [AS alias], ... | COUNT/SUM/MIN/MAX/AVG(...) [AS alias]}
|
|
114
|
+
FROM t [WHERE <pred>] [GROUP BY cols] [HAVING <pred>] [BEFORE tx]
|
|
115
|
+
[ORDER BY col [ASC|DESC], ...] [LIMIT n]`, where `<pred>` combines
|
|
116
|
+
`col <op> value` (`=`, `!=`, `<`, `<=`, `>`, `>=`, `LIKE`, `NOT LIKE`),
|
|
117
|
+
`col [NOT] IN (...)`, `col [NOT] BETWEEN a AND b`, and `col IS [NOT] NULL` with
|
|
118
|
+
`AND`, `OR`, and parentheses. Integer and decimal values compare by magnitude.
|
|
113
119
|
Durability is selectable via `Database::set_durability` (`Fast` OS-cache default,
|
|
114
120
|
or crash-safe `Sync` with fsync and an atomic manifest).
|
|
115
121
|
|
package/package.json
CHANGED
package/picovolt_bg.js
CHANGED
|
@@ -96,26 +96,26 @@ export class Db {
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
if (Symbol.dispose) Db.prototype[Symbol.dispose] = Db.prototype.free;
|
|
99
|
-
export function
|
|
99
|
+
export function __wbg___wbindgen_boolean_get_fa956cfa2d1bd751(arg0) {
|
|
100
100
|
const v = arg0;
|
|
101
101
|
const ret = typeof(v) === 'boolean' ? v : undefined;
|
|
102
102
|
return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;
|
|
103
103
|
}
|
|
104
|
-
export function
|
|
104
|
+
export function __wbg___wbindgen_is_null_ea9085d691f535d3(arg0) {
|
|
105
105
|
const ret = arg0 === null;
|
|
106
106
|
return ret;
|
|
107
107
|
}
|
|
108
|
-
export function
|
|
108
|
+
export function __wbg___wbindgen_is_undefined_c05833b95a3cf397(arg0) {
|
|
109
109
|
const ret = arg0 === undefined;
|
|
110
110
|
return ret;
|
|
111
111
|
}
|
|
112
|
-
export function
|
|
112
|
+
export function __wbg___wbindgen_number_get_394265ed1e1b84ee(arg0, arg1) {
|
|
113
113
|
const obj = arg1;
|
|
114
114
|
const ret = typeof(obj) === 'number' ? obj : undefined;
|
|
115
115
|
getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);
|
|
116
116
|
getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);
|
|
117
117
|
}
|
|
118
|
-
export function
|
|
118
|
+
export function __wbg___wbindgen_string_get_b0ca35b86a603356(arg0, arg1) {
|
|
119
119
|
const obj = arg1;
|
|
120
120
|
const ret = typeof(obj) === 'string' ? obj : undefined;
|
|
121
121
|
var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
@@ -123,7 +123,7 @@ export function __wbg___wbindgen_string_get_71bb4348194e31f0(arg0, arg1) {
|
|
|
123
123
|
getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
|
|
124
124
|
getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
|
|
125
125
|
}
|
|
126
|
-
export function
|
|
126
|
+
export function __wbg___wbindgen_throw_344f42d3211c4765(arg0, arg1) {
|
|
127
127
|
throw new Error(getStringFromWasm0(arg0, arg1));
|
|
128
128
|
}
|
|
129
129
|
export function __wbg_error_a6fa202b58aa1cd3(arg0, arg1) {
|
|
@@ -137,15 +137,15 @@ export function __wbg_error_a6fa202b58aa1cd3(arg0, arg1) {
|
|
|
137
137
|
wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
|
-
export function
|
|
140
|
+
export function __wbg_from_13e323c65fc8f464(arg0) {
|
|
141
141
|
const ret = Array.from(arg0);
|
|
142
142
|
return ret;
|
|
143
143
|
}
|
|
144
|
-
export function
|
|
144
|
+
export function __wbg_get_unchecked_6e0ad6d2a41b06f6(arg0, arg1) {
|
|
145
145
|
const ret = arg0[arg1 >>> 0];
|
|
146
146
|
return ret;
|
|
147
147
|
}
|
|
148
|
-
export function
|
|
148
|
+
export function __wbg_length_370319915dc99107(arg0) {
|
|
149
149
|
const ret = arg0.length;
|
|
150
150
|
return ret;
|
|
151
151
|
}
|
package/picovolt_bg.wasm
CHANGED
|
Binary file
|