Pekka Enberg
2bb56ade4b
Tracing improvements
2024-01-14 15:47:54 +02:00
Pekka Enberg
725eed964b
Tracing improvements
2024-01-14 15:36:59 +02:00
Pekka Enberg
1d3560f9a7
Merge pull request #24 from penberg/fix-wasm
...
Fix WebAssembly build
2024-01-14 15:32:34 +02:00
Pekka Enberg
44dcd48071
Fix WebAssembly build
2024-01-14 15:29:27 +02:00
Pekka Enberg
6c0fb89671
wasm: Fix IO.get() function signature
2024-01-14 15:04:05 +02:00
Pekka Enberg
9af2a285b1
Fix build on Darwin
2024-01-13 09:14:26 +02:00
Pekka Enberg
08b40f2af7
core/linux: Move I/O completion to io_uring
...
Move the Completion::complete() call to the io_uring machinery. We still
essentially do synchronous I/O because of the call to submit_and_wait()
in pread(), but let's take one step at a time...
2024-01-13 09:11:35 +02:00
Pekka Enberg
5ea214083a
core: Switch to using Arc<Completion>
...
We need to be able to leak a reference for io_uring so switch to
Arc<Completion> in the code.
2024-01-13 09:03:21 +02:00
Pekka Enberg
ae2f403838
core: Fix step() return path when page is under I/O
2024-01-12 17:35:55 +02:00
Pekka Enberg
e5798838a0
core: Split page reading into I/O and parsing
...
In preparation for actually making page reads async, split page reading
into two parts: I/O submission with `begin_read_btree_page()` and
parsing with `finish_read_btree_page()`. Also wire up completion to
perform the read parsing.
Next step is to move the Completion.complete() call somewhere in the I/O
layer and make sure we return from the VM correctly if page is under
I/O.
2024-01-12 17:23:46 +02:00
Pekka Enberg
a39f5c68b4
core: Populate page contents lazily
...
We need to be able to allocate a new page and insert it into a page
cache without contents for asynchronoous I/O. Let's do that by making
`contents` optional in Page. (We perhaps ought to rename it to
`inner`...)
2024-01-12 16:38:11 +02:00
Pekka Enberg
93670b0505
core: Add Completion.complete() helper
2024-01-12 15:51:10 +02:00
Pekka Enberg
2724b0f411
Simplify Buffer and Completion
...
Eliminate the explicit lifetime parameter from Buffer to simplify the code.
2024-01-05 16:32:21 +02:00
Pekka Enberg
9a463c636c
Update README.md
2023-12-28 12:49:44 +02:00
Pekka Enberg
9a81ff7fdd
Merge pull request #14 from penberg/penberg-patch-1
...
Configure GitHub Actions
2023-12-28 12:45:27 +02:00
Pekka Enberg
458dcc6204
Configure GitHub Actions
2023-12-28 12:42:41 +02:00
Pekka Enberg
c28544530e
Prepare for asynchronous I/O with page flags
...
We want to submit I/O asynchronously with io_uring, which means we can
have multiple concurrent lookups to the page that is under I/O.
Therefore, let's add three page flags: up-to-date, locked, and error, so
that the higher level layers can just look up a page, but wait if
there's I/O happening.
2023-11-18 12:19:44 +02:00
Pekka Enberg
509b322f8a
Fix build on Linux
2023-11-11 09:21:13 +02:00
Pekka Enberg
2267ee121b
Introduce Completion type
2023-11-09 21:11:48 +02:00
Pekka Enberg
9781b2fdf2
Add publication
2023-10-26 15:02:56 +03:00
Pekka Enberg
76d16cb506
Fix I/O module compilation on wasm target
2023-10-24 19:05:34 +03:00
Pekka Enberg
dad0b6d627
Disable mimalloc for wasm target
2023-10-24 19:01:22 +03:00
Pekka Enberg
20eba95383
Fix get_next_record() for all pages with right-most pointer
...
The right-most pointer is always kept separate from the cells in an
interior page so let's traverse it in all cases.
2023-10-18 17:54:20 +03:00
Pekka Enberg
0e9cc6b21f
Fix full table scans
...
A full table scan missed some of the last rows because we don't consider
sibling pages when there is no parent.
2023-10-17 16:53:24 +03:00
Pekka Enberg
e17eea96ab
Add support for executing SQL directly without REPL
2023-10-06 20:03:02 +03:00
Pekka Enberg
97185bfefc
Pin buffer into memory
...
Make sure the buffer is pinned into memory for I/O.
2023-09-30 19:24:09 +03:00
Pekka Enberg
9db164b319
Update README.md
2023-09-30 15:58:36 +03:00
Pekka Enberg
9098744a37
Rename to Limbo
2023-09-30 15:40:35 +03:00
Pekka Enberg
de6f327a4a
Move raw buffer to I/O module
2023-09-30 14:19:55 +03:00
Pekka Enberg
1e1e096a48
Refactor I/O and storage layers
2023-09-16 09:34:17 +03:00
Pekka Enberg
b49c242266
Rename PageSource to File
2023-09-10 22:01:45 +03:00
Pekka Enberg
fe41f46bc0
I/O trait
2023-09-10 21:57:36 +03:00
Pekka Enberg
58eab38066
I/O layer cleanups
2023-09-10 21:02:23 +03:00
Pekka Enberg
72e92820d6
Share I/O ring across multiple files
2023-09-10 20:57:54 +03:00
Pekka Enberg
917bf258d9
Fixup gen-database.py
2023-09-10 13:48:23 +03:00
Pekka Enberg
8b0d4e731a
Update README.md
2023-09-10 13:48:14 +03:00
Pekka Enberg
f59aea7dd9
Update README.md
2023-09-10 13:45:01 +03:00
Pekka Enberg
e08d23a008
Implement LIMIT clause
...
Note that we handle `LIMIT 0` a bit different from SQLite, which just
detects the case and generates an unconditional jump doing nothing.
Fixes #3
2023-09-10 13:42:57 +03:00
Pekka Enberg
a2202ed31e
Implement reading primary key columns
2023-09-10 13:19:17 +03:00
Pekka Enberg
bc9c53ec52
Switch to raw output mode by default
2023-09-10 12:44:33 +03:00
Pekka Enberg
28854b3606
Merge branch 'main' of github.com:penberg/lig
2023-09-10 12:43:21 +03:00
Pekka Enberg
25ab9afd65
Silence function not used warning
2023-09-10 12:43:08 +03:00
Pekka Enberg
031071d80e
Eliminate enum warning
2023-09-10 12:41:07 +03:00
Pekka Enberg
f6cbd9cd6c
Eliminate unused variables
2023-09-10 12:39:30 +03:00
Pekka Enberg
e38c816ee8
Move translate() into its own file
2023-09-10 12:37:17 +03:00
Pekka Enberg
a80fa36d1e
Fix compliation on Linux
2023-09-09 12:43:08 +03:00
Pekka Enberg
caf56bdc77
Fix build on macOS
2023-09-09 12:42:22 +03:00
Pekka Enberg
60abb68cef
io_uring support
2023-09-09 12:36:54 +03:00
Pekka Enberg
29a6c6b877
Fix benchmark compilation
2023-09-09 10:24:08 +03:00
Pekka Enberg
4a5c71ab7a
I/O interface refactoring
2023-09-09 10:22:26 +03:00