Commit Graph

137 Commits

Author SHA1 Message Date
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
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
Pere Diaz Bou
377073e158 core: I/O write path 2024-06-19 21:26:40 +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
7232683dfe core: Fix benchmark 2024-05-08 11:13:29 -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
707cc53911 Explanation for pager interface 2024-05-07 07:50:42 -03:00
Pekka Enberg
40e5d58cea Fix RewindAwait branching when cursor is empty
Even if we have a page, the cursor can still be empty if there are no
records.
2024-05-07 06:46:03 -03:00
Pekka Enberg
5ebf51ae5a Add tracing to prepare() and query() 2024-05-07 06:38:13 -03:00
Pekka Enberg
a447ea0f49 Dynamic cursor ID allocation
With sorter, for example, we need more cursors per program.
2024-03-29 09:26:18 +02:00
Pekka Enberg
454b1047ce Simplify translate_select() 2024-03-29 09:22:02 +02:00
Pekka Enberg
a9eb6918d3 SELECT expression support 2024-03-28 19:41:21 +02:00
Pekka Enberg
3f17ac0e17 Simplify code 2024-03-28 19:32:38 +02:00
Pekka Enberg
9a73ded4fa Add a Cursor trait and use it
We need an abstract cursor trait to implement a sorter, for example.
2024-03-28 15:01:52 +02:00
Pekka Enberg
1dd33bedcd Remove commented out code 2024-03-28 14:33:59 +02:00
Pekka Enberg
88f335db16 Fix SQL identifiers to be case insensitive
SQLite seems to treat everything as case insensitive so let's do that
too.

Fixes #37
2024-03-27 21:00:47 +02:00
Pekka Enberg
81f003d29f Extract create_table() function 2024-03-27 20:44:52 +02:00
Pekka Enberg
ed9f3e6d1e Single-threaded architecture
Use Rc instead of Arc and replace the concurrent LRU with
single-threaded SIEVE.

Fixes #23
Fixes #29
2024-03-03 12:44:45 +02:00
Pekka Enberg
59822e2c6f core: Don't depend on pprof on Windows 2024-03-03 11:49:55 +02:00
Pekka Enberg
84a5115d77 core: Add Windows I/O module
It's a copy of the synchronous I/O module that we use on Darwin. In the
future, let's switch to Windows IOCP API.
2024-03-03 11:34:53 +02:00
Pekka Enberg
e0dc9dc86d Optimize trace_insn() 2024-01-28 13:14:39 +02:00
Pekka Enberg
3d1d4e5355 core: Make OwnedValue cloning cheaper 2024-01-28 12:56:34 +02:00
Pekka Enberg
07912ee139 Use OwnedRecord::new() 2024-01-28 10:22:22 +02:00
Pekka Enberg
2c55cc797d cargo clippy --fix 2024-01-28 10:21:38 +02:00
Pekka Enberg
9f733b5a73 Simplify Statement::step() 2024-01-28 10:20:45 +02:00
Pekka Enberg
64213766a2 Remove redundant lifetime parameter from Statement::step() 2024-01-28 10:19:31 +02:00
Pekka Enberg
d5bceaefdb Remove redundant loop from Statement::step() 2024-01-28 10:18:59 +02:00
Pekka Enberg
bb3cc32d6d Use RefCell instead of Mutex for DatabaseHeader 2024-01-28 10:17:23 +02:00
Pekka Enberg
f2cd403944 core: Replace Mutex with RefCell in BufferPool 2024-01-28 10:13:03 +02:00
Pekka Enberg
225ee98769 cargo fmt 2024-01-28 09:58:04 +02:00
Pekka Enberg
505e28aaeb Reduce memory allocations
Fixes #26
2024-01-28 09:57:12 +02:00
Pekka Enberg
af258a4958 core: Disable invalid UTF-8 sequence test case
We disabled UTF-8 validation in read_value() in
bb56ba0736 so let's fix the test case to
reflect that.
2024-01-27 10:16:59 +02:00
Pekka Enberg
3e6bf6892a core: Switch to Rc in Value::Text
Makes deallocation much faster...
2024-01-27 10:09:35 +02:00
Pekka Enberg
0b3db02451 core: Make Value::Text reference counted
Avoids lots of memory copies as values get passed through the different
layers.
2024-01-27 09:48:02 +02:00
Pekka Enberg
bb56ba0736 core: Skip UTF-8 validation in read_value()
The UTF-8 validation is very expensive. It's unclear if we ever need to
do it at read time and if we do, let's do it when we know the value is
actually going to be used. Speeds up read_value() a lot.
2024-01-27 09:46:20 +02:00
Pekka Enberg
2d625f34c5 core: Optimize Cursor::next() 2024-01-27 09:32:26 +02:00
Pekka Enberg
a06225d4ff Fix broken test case 2024-01-26 17:27:31 +02:00
Pekka Enberg
426b2d568b Revert "core: Optimize read_value() for strings"
This reverts commit 7c05149bcf.
2024-01-24 19:14:20 +02:00