Pekka Enberg
fb5217959f
Merge pull request #37 from penberg/scan_cursor
...
mvcc, bindings: expose a scan cursor
2023-05-10 18:36:55 +03:00
Piotr Sarna
ef097362ff
mvcc, bindings: expose a scan cursor
2023-05-10 15:48:46 +02:00
Pekka Enberg
57b5919637
Merge pull request #35 from penberg/recovery
...
Initial support for recovery
2023-05-10 13:28:16 +03:00
Pekka Enberg
0cf7b787fd
Merge pull request #36 from penberg/readimpl
...
bindings: expose reading from the database
2023-05-10 13:22:57 +03:00
Piotr Sarna
d047a24a32
bindings: expose reading from the database
...
The results are returned as a CString for now.
2023-05-10 12:09:06 +02:00
Pekka Enberg
08adf2118c
Rename mutations.png to transactions.png
2023-05-10 13:01:33 +03:00
Pekka Enberg
ec336d5578
Initial support for recovery
...
We have the transaction log in persistent storage so let's implement
recovery by replaying that.
2023-05-10 12:56:19 +03:00
Pekka Enberg
55bee1dcae
Merge pull request #34 from penberg/log-records
...
Rename mutations to log records
2023-05-10 12:18:50 +03:00
Pekka Enberg
8c56b381c0
Rename mutations to log records
...
The Hekaton paper talks about "log records" so let's just run with that
terminology to avoid confusion.
2023-05-09 21:32:36 +03:00
Pekka Enberg
3944a4e987
Merge pull request #31 from penberg/fix-insert
...
Fix MVCCDatabaseInsert() type signature
2023-05-09 16:15:10 +03:00
Pekka Enberg
cf31de5d41
Fix MVCCDatabaseInsert() type signature
...
Values are opaque blobs so use "const void *" for C callers.
2023-05-09 16:14:28 +03:00
Pekka Enberg
a3ac3272eb
Merge pull request #29 from penberg/stdint
...
Add stdint.h include to mvcc.h
2023-05-09 13:54:45 +03:00
Pekka Enberg
3d0c8a415e
Add stdint.h include to mvcc.h
2023-05-09 13:49:31 +03:00
Pekka Enberg
86fa4c5662
Merge pull request #28 from penberg/staticlib
...
mvcc: build static library for C bindings
2023-05-09 11:30:52 +03:00
Piotr Sarna
d4da54b10b
mvcc: build static library for C bindings
...
That's how it's currently consumed by libSQL.
2023-05-09 10:28:26 +02:00
Pekka Enberg
f47eea1a72
Move DESIGN.md to docs
2023-05-09 11:00:00 +03:00
Pekka Enberg
19ea5c287b
Merge pull request #27 from penberg/core
...
Rename database directory to mvcc-rs
2023-05-09 10:59:19 +03:00
Pekka Enberg
b9575c4375
Rename database directory to mvcc-rs
2023-05-09 10:56:46 +03:00
Pekka Enberg
cc4db340ee
Merge pull request #26 from penberg/c-bindings
...
Improve C bindings
2023-05-09 10:51:39 +03:00
Pekka Enberg
41bed41544
Improve logging
2023-05-09 10:51:14 +03:00
Pekka Enberg
5ce2bc41f9
cargo fmt
2023-05-09 10:47:43 +03:00
Pekka Enberg
b2f46e156b
Improve C binding error reporting
2023-05-09 10:47:40 +03:00
Pekka Enberg
3ecb0fb2a9
Mark MVCCDatabaseOpen() as unsafe
2023-05-09 10:44:06 +03:00
Pekka Enberg
db1e313aca
Silence clippy
2023-05-09 10:43:42 +03:00
Pekka Enberg
1fc99181f1
Update README.md
2023-05-09 10:42:05 +03:00
Pekka Enberg
c94561a646
Add mvcc.h to the tree
2023-05-09 10:41:33 +03:00
Pekka Enberg
779ad3066a
Add error codes to C bindings
2023-05-09 10:41:13 +03:00
Pekka Enberg
34a4f1a269
Improve generated C bindings
...
Before:
```c
typedef LocalClock Clock;
typedef JsonOnDisk Storage;
typedef DatabaseInner<Clock, Storage> Inner;
typedef Database<Clock, Storage, Mutex<Inner>> Db;
typedef struct {
Db db;
Runtime runtime;
} DbContext;
extern "C" {
DbContext *mvccrs_new_database(const char *path);
void mvccrs_free_database(Db *db);
int32_t mvccrs_insert(DbContext *db, uint64_t id, const uint8_t *value_ptr, uintptr_t value_len);
} // extern "C"
```
After:
```c
typedef struct DbContext DbContext;
typedef const DbContext *MVCCDatabaseRef;
extern "C" {
MVCCDatabaseRef MVCCDatabaseOpen(const char *path);
void MVCCDatabaseClose(MVCCDatabaseRef db);
int32_t MVCCDatabaseInsert(MVCCDatabaseRef db, uint64_t id, const uint8_t *value_ptr, uintptr_t value_len);
} // extern "C"
```
2023-05-09 10:34:11 +03:00
Pekka Enberg
124446f17c
Generate C header file on cargo build
2023-05-09 10:34:11 +03:00
Pekka Enberg
d5b96d5edf
Move C bindings to separate crate
2023-05-09 10:34:11 +03:00
Pekka Enberg
69cee068ce
Merge pull request #25 from penberg/mvcc_write_cursor
...
add c_bindings feature for exposing functions to C
2023-05-08 15:59:07 +03:00
Piotr Sarna
488201cab2
add c_bindings feature for exposing functions to C
...
The library can now be compiled to a static or dynamic
native lib, with very basic functionality exposed.
2023-05-08 14:20:34 +02:00
Pekka Enberg
aac835fce9
Document persistent storage design ( #24 )
2023-05-06 20:15:08 +02:00
Pekka Enberg
eb52f3e1cd
Merge pull request #23 from psarna/compact_rowversions
2023-04-25 18:56:44 +03:00
Piotr Sarna
fb6ce70993
database: add dropping unused row versions
...
When a row version is not visible by any transactions,
active or future ones, it should be dropped.
2023-04-20 15:47:36 +02:00
Piotr Sarna
2a018ea9a3
fixup: move DatabaseError under a feature
2023-04-20 15:47:36 +02:00
Pekka Enberg
851871d24b
Merge pull request #22 from psarna/storfixup
...
fixup: implement Stream for JsonOnDiskStream under a feature
2023-04-20 16:03:51 +03:00
Piotr Sarna
b6b36a0d94
fixup: implement Stream for JsonOnDiskStream under a feature
2023-04-20 14:46:14 +02:00
Pekka Enberg
a94ee8666d
Merge pull request #19 from psarna/storage_v1
...
Add persistent storage trait
2023-04-17 17:50:18 +03:00
Piotr Sarna
04a78f73fb
treewide: add persistent storage trait
...
This draft adds a persistent storage trait that can be used
to store transaction logs and read the log for recovery purposes.
Work in heavy progress, because ideally the design should also
allow reading versions from the storage, so that data can be
spilled from memory to disk if there's not enough RAM available.
2023-04-17 14:46:39 +02:00
Piotr Sarna
7ca68b3d96
errors: Add I/O error class
2023-04-17 12:06:34 +02:00
Piotr Sarna
db71c7e4e3
database: make transactions (de)serializable
2023-04-17 12:06:22 +02:00
Pekka Enberg
028fb0cf0c
Merge pull request #17 from penberg/tx-gc
2023-04-15 20:48:18 +03:00
Pekka Enberg
74a4d2d11a
Garbage collect transactions
...
Fixes #2
2023-04-15 09:53:56 +03:00
Pekka Enberg
43544c9fb6
Update README.md
2023-04-14 21:32:31 +03:00
Pekka Enberg
c0881944e0
Update README.md
2023-04-14 21:31:19 +03:00
Pekka Enberg
438c342292
Merge pull request #16 from avinassh/visibility-bug
...
Bugfix: make committed rows visible (fixes #15 )
2023-04-14 21:26:18 +03:00
avi
87b9b27215
check if tx can see its own updates
2023-04-14 22:56:07 +05:30
avi
e006177480
fix typos
2023-04-14 22:06:55 +05:30
avi
aff901baea
bugfix: make committed rows visibile ( fixes #15 )
2023-04-14 21:59:35 +05:30