Commit Graph

81 Commits

Author SHA1 Message Date
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
Pekka Enberg
49c19b55ab Unify sync I/O 2023-09-08 20:27:32 +03:00
Pekka Enberg
890d71b17f Add support for raw output mode 2023-09-08 09:16:59 +03:00
Pekka Enberg
0a942f0fd0 Implement full table scan 2023-09-07 21:59:33 +03:00
Pekka Enberg
e75fa010dc Add tests for SerialType::try_from() 2023-09-06 22:06:29 +03:00
Pekka Enberg
7977b23ae5 Fix read_value() and read_varint() corner cases 2023-09-06 19:46:18 +03:00
Pekka Enberg
04bf7324eb Document how to generate test coverage report 2023-09-06 19:41:49 +03:00
Pekka Enberg
7c894f3b70 Parse BTree table interior cells 2023-09-04 21:59:00 +03:00
Pekka Enberg
0cdf54a8c7 Fix column affinity detection
As it turns out, column affinity is tricky in SQLite...

https://www.sqlite.org/datatype3.html#determination_of_column_affinity
2023-09-04 21:19:12 +03:00
Pekka Enberg
b113fa2d10 Fix read_varint() implementation
It was giving wrong results when reading a database file.
2023-09-04 21:11:11 +03:00
Pekka Enberg
df39421f17 Add script for generating a test database 2023-09-04 20:39:22 +03:00
Pekka Enberg
c4a7766fa1 Switch test database to WAL mode 2023-09-03 08:15:17 +03:00
Pekka Enberg
9b268dcc6f Compare performance to rusqlite 2023-09-02 21:22:38 +03:00
Pekka Enberg
f92a83d083 Switch to LRU page cache
Fixes #5
2023-09-02 21:12:41 +03:00
Pekka Enberg
f6f1f97171 Switch cursor lookup to use BTreeMap
We're storing integers into the HashMap, BTreeMap is faster because
it avoid the hash function. Furthermore, we expect only to have very few
cursors here anyway, so BTreeMap is perfect.
2023-09-02 20:59:22 +03:00
Pekka Enberg
942239fab1 Simplify ProgramState register allocation
...it's faster this way.
2023-09-02 20:55:20 +03:00
Pekka Enberg
f34ccb0f43 Simplify read_varint() function
It's in the hot path so let's get rid of the redundant `Result` return type.
2023-09-02 20:40:58 +03:00
Pekka Enberg
7784f4415d Allocate vector with capacity in read_record()
...it's faster that way.
2023-09-02 20:39:15 +03:00
Pekka Enberg
9d2e7c89d7 Page cache 2023-09-02 19:32:49 +03:00