Commit Graph

249 Commits

Author SHA1 Message Date
Pekka Enberg
1d4850df37 Fix invalid database path 2024-06-29 17:36:36 +03:00
Pekka Enberg
19e237ce17 Update README 2024-06-29 10:41:16 +03:00
Pekka Enberg
1d45b97903 New cover image for README 2024-06-29 10:37:37 +03:00
Pekka Enberg
cc101b1b00 Use larger and more realistic database for testing 2024-06-29 10:03:11 +03:00
Pekka Enberg
4d8e0f1214 core: Clean up translate.rs by moving update_pragma()
Makes the code flow read better from top to bottom.
2024-06-28 08:44:27 +03:00
Pekka Enberg
dc26db4f0d Remove duplicate default-run 2024-06-28 08:39:36 +03:00
Pekka Enberg
7a61c1a756 Merge pull request #56 from penberg/sim
Initial pass on deterministic simulator
2024-06-27 19:49:13 +03:00
Pekka Enberg
2684341bac Initial pass on deterministic simulator
The simulator does not do much, but does discover failures on Linux with
io_uring, though, so it's a start.
2024-06-27 18:32:04 +03:00
Pekka Enberg
df230dc830 Fix DecrJumpZero usage in translate_select()
SQLite special-cases `LIMIT 0` by emitting an explicit `Goto` to avoid
executing any `ResultRow` statements. We, however, hacked around this in
DecrJumpZero but also the placement of the generated instruction.

Let's follow SQLite codegen here. We still need to fix `LIMIT 0`,
though.
2024-06-24 21:43:19 +03:00
Pekka Enberg
6290c8167d Unify SELECT .. LIMIT handling in translate_select()
Working towards a saner translate_select(), let's unify `SELECT ..
LIMIT` handling across different types of select statements.
2024-06-24 21:36:34 +03:00
Pekka Enberg
bdbbbda84f Extract translate_column() function 2024-06-22 09:44:35 +03:00
Pekka Enberg
828fb813a8 core: Fix codegen for rowid alias
We should emit `Column` bytecode for a primary key, unless it is an alias for a rowid.
2024-06-21 13:10:21 +03:00
Pekka Enberg
8d4d2f32ee core: Fix INTEGER data type detection 2024-06-21 13:09:43 +03:00
Pekka Enberg
ffa999b458 Update SQLite compatibility table 2024-06-19 21:59:59 +03:00
Pekka Enberg
6c41e27bd2 Add test case for PRAGMA cache_size 2024-06-19 21:59:31 +03:00
Pekka Enberg
50720791ad Merge pull request #51 from pereman2/pragma_cache_size
core: pragma cache_size support
2024-06-19 21:59:05 +03:00
Pere Diaz Bou
427103b199 core,wasm: add missing write procedure to wasm 2024-06-19 20:54:55 +02:00
Pere Diaz Bou
932ae7bf3f core: update pragma in transalte 2024-06-19 20:37:17 +02:00
Pere Diaz Bou
7e03cc70d0 core: add minimum cache_size 2024-06-19 20:37:17 +02:00
Pere Diaz Bou
1884aab3b8 core: resize page cache
Abstract page cache with PageCache so that we can call resize inside
refcell
2024-06-19 20:37:17 +02:00
Pere Diaz Bou
53c348402a core: parse unary and write to disk 2024-06-19 20:37:15 +02:00
Pere Diaz Bou
d795a7a3ba core: introduce pseudo program with pragma
Introduced pragma statement parsing and update in memory of default page cache size.

There are some more "improvements" to the print insn procedure —  I couldn't decide what was the preferred way in rust to do printing on different int types so I went with the stupidest I could think of at the moment.
2024-06-19 20:32:21 +02:00
Pekka Enberg
17a22278c2 Merge pull request #52 from penberg/io-writepath
core: I/O write path
2024-06-19 21:30:36 +03:00
Pere Diaz Bou
377073e158 core: I/O write path 2024-06-19 21:26:40 +03:00
Pekka Enberg
d6fbea25ba testing: SELECT .. LIMIT test case 2024-06-19 17:48:24 +03:00
Pekka Enberg
ce9e6bd803 github: First build things, then test 2024-06-19 16:32:24 +03:00
Pekka Enberg
706c4e60ae Switch to using the testing hello.db database 2024-06-19 16:31:44 +03:00
Pekka Enberg
de11402a4a github: Fix compat-test workflow to checkout 2024-06-19 16:27:21 +03:00
Pekka Enberg
cc89238a09 github: Separate compatibility tests in own workflow 2024-06-19 16:25:23 +03:00
Pekka Enberg
805458e37f Drop wasm toolchain dependency for tests 2024-06-19 16:24:04 +03:00
Pekka Enberg
94c827d5ae First pass on compatibility tests
With some help from GPT, add a TCL script that has similar syntax as
some of the SQLite source tree tests.
2024-06-19 16:11:55 +03:00
Pekka Enberg
70b73e7535 Fix limbo output to match sqlite3
Fix the output of the `limbo` program to match `sqlite3` to simplify
testing.
2024-06-19 16:06:20 +03:00
Pekka Enberg
c89924c5a1 Update SQLite compatibility table some more 2024-06-19 14:34:57 +03:00
Pekka Enberg
76c4cd525d Update compatibility table 2024-06-19 14:29:28 +03:00
Pekka Enberg
ba1ed2ec09 Run I/O loop in benchmarks
Fixes #50
2024-06-08 08:43:15 +03:00
Pekka Enberg
a3c4efc13a Random code cleanups 2024-06-08 08:38:11 +03:00
Pekka Enberg
3f722d5827 core: Extract make_record() function 2024-05-09 07:48:49 -03:00
Pekka Enberg
3afc03cc65 Fix String8 opcode handling 2024-05-08 15:51:10 -03:00
Pekka Enberg
5c0f324b3c Improve EXPLAIN output 2024-05-08 14:22:38 -03:00
Pekka Enberg
4d4d1458e2 Update rustix in Cargo.lock
Fix for a security vulnerability that Dependabot complains about:

https://github.com/advisories/GHSA-c827-hfw6-qwvm
2024-05-08 13:47:30 -03:00
Pekka Enberg
7232683dfe core: Fix benchmark 2024-05-08 11:13:29 -03:00
Pekka Enberg
b52351f8b1 sqlite3: Implement sqlite3_column_text() 2024-05-08 07:58:29 -03:00
Pekka Enberg
6dd21c6717 sqlite3: Fix example program
...it was not running correctly even with sqlite3.
2024-05-08 07:19:57 -03:00
Pekka Enberg
042e5476f1 Fix source formatting with cargo fmt 2024-05-08 07:18:22 -03:00
Pekka Enberg
08165fc34e core: SELECT <string> support 2024-05-08 07:18:22 -03:00
Pekka Enberg
24e47f4648 Merge pull request #39 from penberg/sqlite3
SQLite C ABI compatibility
2024-05-08 07:11:30 -03:00
Pekka Enberg
f5cc3a08f0 Initial pass on SQLite C ABI
This adds initial SQLite C ABI compatibility to Limbo to make sure we
drive the Rust API in the right way that allows us to implement SQLite
semantics.
2024-05-08 07:05:56 -03:00
Pekka Enberg
3420556018 License 2024-05-07 16:33:44 -03:00
Pekka Enberg
cda036f18f Update README.md 2024-05-07 15:43:49 -03:00
Pekka Enberg
707cc53911 Explanation for pager interface 2024-05-07 07:50:42 -03:00