Commit Graph

1082 Commits

Author SHA1 Message Date
Pekka Enberg
fe75ed275e Merge 'Bump PyO3 dependency' from Pekka Enberg
Github's bot reports a use-after-free issue so let's bump up the
version:
https://github.com/penberg/limbo/security/dependabot/4

Reviewed-by: Pere Diaz Bou <pere-altea@homail.com>

Closes #388
2024-11-16 09:02:10 +02:00
Pekka Enberg
0e2291a57e Merge 'build: Enable LTO for release builds' from Pekka Enberg
This reduces `liblimbo_sqlite3.a` binary size from 25 MB to 10 MB:
Before:
  $ -lh ../target/release/liblimbo_sqlite3.a
  -rw-r--r--  1 penberg  staff    25M 15 Mar 18:36
../target/release/liblimbo_sqlite3.a
After:
  $ penberg@vonneumann sqlite3 % ls -lh
../target/release/liblimbo_sqlite3.a
  -rw-r--r--  1 penberg  staff   9,9M 15 Mar 18:59
../target/release/liblimbo_sqlite3.a

Closes #389
2024-11-16 09:01:59 +02:00
Pekka Enberg
c3da75d260 build: Enable LTO for release builds
This reduces `liblimbo_sqlite3.a` binary size from 25 MB to 10 MB:

Before:

  $ -lh ../target/release/liblimbo_sqlite3.a
  -rw-r--r--  1 penberg  staff    25M 15 Mar 18:36 ../target/release/liblimbo_sqlite3.a

After:

  $ penberg@vonneumann sqlite3 % ls -lh ../target/release/liblimbo_sqlite3.a
  -rw-r--r--  1 penberg  staff   9,9M 15 Mar 18:59 ../target/release/liblimbo_sqlite3.a
2024-11-15 19:06:17 +02:00
Pekka Enberg
851ea65530 Bump PyO3 dependency
Github's bot reports a use-after-free issue so let's bump up the
version:

https://github.com/penberg/limbo/security/dependabot/4
2024-11-15 16:14:34 +02:00
Pekka Enberg
9d96b22b4a Merge 'core: create databases from limbo' from Pere Diaz Bou
Behold, the database emerges from within.

Reviewed-by: Pekka Enberg <penberg@iki.fi>

Closes #387
2024-11-15 15:55:48 +02:00
Pekka Enberg
44ececce7d github: Fix Pekka's email address 2024-11-15 15:55:33 +02:00
Pekka Enberg
5e1184d559 Update COMPAT.md 2024-11-15 13:49:15 +02:00
Pere Diaz Bou
6cd0f03643 core: create databases from limbo 2024-11-15 12:09:07 +01:00
Pere Diaz Bou
87c80b2a07 use core wal file for wasm 2024-11-14 17:54:20 +01:00
Pere Diaz Bou
4a55e0b26d Merge 'core: drop mutex on contents' from Pere Diaz Bou
There is no need to have mutexes on buffers, we will introduce mutexes
if we want later on a file level to introduce serializability.
This pr also includes a fix in the cacheflush procedure where a wait of
inflight writes weren't waited.

Reviewed-by: Pekka Enberg <penberg@ki.fi>

Closes #384
2024-11-13 19:26:50 +01:00
Pere Diaz Bou
a4b473ba59 fmt 2024-11-13 19:17:49 +01:00
Pere Diaz Bou
c46bd63b5a core: drop mutex on contents
There is no need to have mutexes on buffers, we will introduce mutexes
if we want later on a file level to introduce serializability.
2024-11-13 19:13:15 +01:00
Pere Diaz Bou
71ac1eacb7 Merge 'btree: cursor with lineal stack structure' from Pere Diaz Bou
Removed MemPage from the code in favor of an array to encode the stack
of the cursor. This is both simpler and better in terms of memory
access.
O_DIRECT was removed from WAL file as it introduces alignment
constraints that are too hard to follow in regular appends. Maybe in the
future?

Closes #378
2024-11-13 18:23:31 +01:00
Pere Diaz Bou
2a787aedb5 core: extract page stack and document a bit 2024-11-13 17:13:30 +01:00
Pere Diaz Bou
23923e4175 ignore wal checkpoint test 2024-11-13 14:09:38 +00:00
Pere Diaz Bou
9d7a3e8e60 ignore sequential test 2024-11-13 14:04:28 +00:00
Pere Diaz Bou
dfdd8083e2 remove ignore from wal tests 2024-11-13 13:58:05 +00:00
Pere Diaz Bou
cf86da0ecf remove extra workflow 2024-11-13 13:57:15 +00:00
Pere Diaz Bou
e2276c2e9d O_DIRECT disable on WAL 2024-11-13 13:45:42 +00:00
Pekka Enberg
0f2bc822b4 github: Disable Python requirements check
It's failing pretty often and, therefore, noisy...
2024-11-13 14:54:11 +02:00
Pekka Enberg
b4a9fbfe1e Update CHANGELOG 2024-11-13 14:46:49 +02:00
Pekka Enberg
9628c62f61 Merge 'bindings/wasm: Add Database.prepare() and Statement.all()' from Pekka Enberg
This adds `Database.prepare()` and `Statement.all()` APIs to the Wasm
bindings so that you can actually get something useful out of the
library.

Reviewed-by: Pere Diaz Bou <pere-altea@homail.com>

Closes #382
2024-11-13 14:46:13 +02:00
Pere Diaz Bou
94a45eab9e checkpoint inflight 2024-11-13 12:04:54 +00:00
Pere Diaz Bou
cbfb45e55b more trace logs 2024-11-13 11:31:22 +00:00
Pere Diaz Bou
87957bf4f2 checkpoint log state 2024-11-13 11:24:07 +00:00
Pere Diaz Bou
2d03e90840 remove test wal 2024-11-13 11:13:02 +00:00
Pere Diaz Bou
13a95b583f debug logs 2024-11-13 11:03:38 +00:00
Pekka Enberg
b7ca2c9823 bindings/wasm: Add Database.prepare() and Statement.all()
This adds `Database.prepare()` and `Statement.all()` APIs to the Wasm
bindings so that you can actually get something useful out of the
library.
2024-11-13 12:22:35 +02:00
Pere Diaz Bou
97ec01a220 fix missing ' 2024-11-13 10:20:16 +00:00
Pere Diaz Bou
cfb6046717 trace instead of debug on debug 2024-11-13 10:14:12 +00:00
Pekka Enberg
1f228db99f Merge 'Fix Wasm packaging' from Pekka Enberg
The `wasm-pack` too has a known bug where it forgets to add snippets to
`package.json`:
https://github.com/rustwasm/wasm-pack/issues/1206
Let's fix that with some bash magic.

Reviewed-by: Pere Diaz Bou <pere-altea@homail.com>

Closes #381
2024-11-13 12:02:20 +02:00
Pere Diaz Bou
6834f11e28 add dbug option rust.yml 2024-11-13 10:01:06 +00:00
Pere Diaz Bou
78118bae81 fmt 2024-11-13 09:34:36 +00:00
Pekka Enberg
40f517b03f Fix Wasm packaging
The `wasm-pack` too has a known bug where it forgets to add snippets to
`package.json`:

https://github.com/rustwasm/wasm-pack/issues/1206

Let's fix that with some bash magic.
2024-11-13 11:28:22 +02:00
Pere Diaz Bou
800354144a remove extra join test 2024-11-12 23:11:04 +00:00
Pere Diaz Bou
eb4105282b btree: fix btree traversal 2024-11-12 23:10:38 +00:00
Pere Diaz Bou
8d1d2d36cc core/linux: aligned wal header read 2024-11-12 17:53:59 +00:00
Pere Diaz Bou
19f1a00ca4 bindings/python: update bindings requirements-dev 2024-11-12 17:09:41 +01:00
Pere Diaz Bou
48f0e72e14 checkpoint on drop connection 2024-11-12 17:03:30 +01:00
Pere Diaz Bou
807496a146 core: load pages if not loaded
Since pages are now tracked with a single centralized structure, it is
possible for a page to have been unloaded a be kept in memory for
metadata purposes like going back in the stack.

Using the example of going to a parent page which was unloaded for
whatever reason: in this case we need to check if it's loaded, if not,
we load it. Locked still means the same thing, loaded just means the
contents of a page are present in memory and if they are present, they
must be in cache.
2024-11-12 14:44:25 +01:00
Pere Diaz Bou
cd2b61d838 btree: cursor with lineal stack structure
Removed MemPage from the code in favor of an array to encode the stack
of the cursor. This is both simpler and better in terms of memory
access.
2024-11-12 10:21:22 +01:00
Pere Diaz Bou
2ce57f6d34 Merge 'Write state machine' from Pere Diaz Bou
Returning on ongoing IO requires to save the current state, therefore a
state machine makes sense for write operations. This information is
encoded in WriteInfo/WriteState.

Closes #377
2024-11-12 10:21:00 +01:00
Pere Diaz Bou
ce8378793e btree: run until finished or IO + bug fixes 2024-11-11 17:03:15 +01:00
Pere Diaz Bou
74974d07e7 clippy fix 2024-11-08 11:14:29 +01:00
Pere Diaz Bou
e5836df160 write state machine
Returning on ongoing IO requires to save the current state, therefore a
state machine makes sense for write operations. This information is
encoded in WriteInfo/WriteState.
2024-11-08 11:10:49 +01:00
Pere Diaz Bou
ecfcd8835f rename get_page -> get_current_page 2024-11-07 15:37:21 +01:00
Pere Diaz Bou
86852935bc Merge 'Wal' from Pere Diaz Bou
This pr introduces first iteration of WAL with automatic checkpointing
of 1000 pages (not configurable right now).

Closes #344
2024-11-07 15:19:47 +01:00
Pere Diaz Bou
7d8fc80f4b use len instead of size 2024-11-07 14:01:35 +01:00
Pere Diaz Bou
ce1367b76a move wal creation 2024-11-07 13:51:02 +01:00
Pere Diaz Bou
218c32e0e6 remove unix import in windoews 2024-11-07 13:34:48 +01:00