Commit Graph

249 Commits

Author SHA1 Message Date
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
Pekka Enberg
0aca6a9caf Improve micro-benchmarks 2023-09-02 19:24:24 +03:00
Pekka Enberg
ccee8c3336 Parse schema from database file
Fixes #1
2023-09-02 19:19:23 +03:00
Pekka Enberg
65d1d770b3 Switch to mimalloc
...it's faster.
2023-09-02 14:04:22 +03:00
Pekka Enberg
d33b70e3a8 Fix benchmark group name 2023-09-02 14:00:13 +03:00
Pekka Enberg
ef0c4f69cc Allocate vector with capacity
...reduces memory allocations.
2023-09-02 13:59:41 +03:00
Pekka Enberg
2c84aae66d Fix instruction tracing performance 2023-09-02 13:55:26 +03:00
Pekka Enberg
97d646cacc Add instructions to run benchmarks 2023-09-02 13:52:05 +03:00
Pekka Enberg
37baae3ed7 Benchmark 2023-09-02 13:43:07 +03:00
Pekka Enberg
ae709f04fe Make some opcodes wait for completion 2023-09-02 13:26:44 +03:00
Pekka Enberg
60376ed3dd Fix EXPLAIN when querying 2023-09-02 11:42:17 +03:00
Pekka Enberg
3ec9c0be7c Implement ResultRow opcode 2023-09-02 11:40:11 +03:00
Pekka Enberg
6e748a066e Register allocation 2023-09-02 08:52:30 +03:00
Pekka Enberg
fa51955b43 VDBE improvements 2023-09-02 08:46:01 +03:00
Pekka Enberg
4c64590a5c Decouple Program and ProgramState 2023-09-02 08:18:05 +03:00
Pekka Enberg
14fb12ecdf Translate SQL SELECT column values 2023-09-01 21:26:12 +03:00
Pekka Enberg
f954729fd9 Tune prompt some more 2023-09-01 21:02:52 +03:00
Pekka Enberg
ab96f27c56 Change prompt 2023-09-01 19:50:29 +03:00
Pekka Enberg
591e8df377 Disable tracing by default 2023-09-01 19:49:54 +03:00
Pekka Enberg
4b714311b5 Improve Column instruction 2023-08-31 22:05:05 +03:00
Pekka Enberg
b25f8c4daf Implement Cursor::next() 2023-08-31 21:45:04 +03:00
Pekka Enberg
05621e3286 Cursors 2023-08-30 20:26:15 +03:00
Pekka Enberg
b572d60dc5 B-Tree interface 2023-08-29 20:33:16 +03:00
Pekka Enberg
7c100ea217 Query sqlite_schema table 2023-08-29 19:46:07 +03:00
Pekka Enberg
61b1071d8d Update README.md 2023-08-27 21:22:21 +03:00
Pekka Enberg
b40438f778 Make EXPLAIN output more similar to SQLite 2023-08-27 21:21:42 +03:00
Pekka Enberg
9d7286bde0 Remove unused import 2023-08-27 21:19:43 +03:00
Pekka Enberg
6f1d03d64d Look up columns from table schema 2023-08-27 21:18:17 +03:00
Pekka Enberg
3b53f48400 Look up table root page from schema 2023-08-27 21:11:49 +03:00
Pekka Enberg
2615cdce2c Schema in-memory data structures 2023-08-27 20:40:35 +03:00
Pekka Enberg
6a2d36f4c1 Buffer pool 2023-08-27 12:17:20 +03:00
Pekka Enberg
fb72f9688b Initial commit 2023-08-27 09:59:12 +03:00