Pere Diaz Bou
39a75147d4
Page cache by page_number and frame_number
...
Since page cache is now shared by default, we need to cache pages by
page number and something else. I chose to go with max_frame of
connection, because this connection will have a max_frame set until from
the start of a transaction until the end of it.
With key pairs of (pgno, max_frame) we make sure each connection is
caching based on the snapshot it is at as two different connections
might have the same pageno being using but a different frame. If both
have same max_frame then they will share same page.
2024-12-13 21:57:27 +01:00
Pere Diaz Bou
352b3540ee
loop writing header while initializing
...
if somehow this doesn't finish in a single loop, do more just in case
2024-12-13 13:25:56 +01:00
Pere Diaz Bou
97dd95abea
core: change Rc<RefCell<Page>> to Arc<Page>
...
This includes an inner struct in Page wrapped with Unsafe cell to access
it. This is done intentionally because concurrency control of pages is
handled by pages and not by the page itself.
2024-12-13 13:09:13 +01:00
Pere Diaz Bou
3fda2d09b9
Extract multi threaded part from WalFile to WalFileShared
...
Since we expect to ensure thread safety between multiple threads in the
future, we extract what is important to be shared between multiple
connections with regards to WAL.
This is WIP so I just put whatever feels like important behind a RwLock
but expect this to change to Atomics in the future as needed. Maybe even
these locks might disappear because they will be better served with
transaction locks.
2024-12-13 13:09:13 +01:00
Pere Diaz Bou
a4297702bd
extract page cache to be multi threaded
2024-12-13 13:09:13 +01:00
krishvishal
1e23af7d24
Added last_insert_rowid()
function.
...
Need to fix its behavior. Problem is probably with `Cursor` implementation.
2024-12-09 17:41:28 +05:30
jussisaurio
3f9e60633f
select refactor: order by and basic agg kinda work
2024-11-26 17:31:51 +02:00
Lauri Virtanen
a7100d8e9b
Autofix clippy issues with cargo fix --clippy
2024-11-24 20:24:47 +02:00
Pere Diaz Bou
db343ac5ea
fix page1 balancing
2024-11-18 16:25:06 +01:00
Pere Diaz Bou
44e22c50cf
sim: improve simulator
2024-11-18 13:40:37 +01:00
Pere Diaz Bou
d1dee484df
properly format table and "if not exists" support
2024-11-16 17:02:53 +01:00
Pere Diaz Bou
090615b289
create btree table + parse schema
2024-11-16 16:24:28 +01:00
Pekka Enberg
cd5db55cf2
core: Make JSON support configurable
...
This adds a `json` feature flag, which allows users to disable JSON
support if needed.
2024-11-16 09:49:09 +02:00
Pere Diaz Bou
6cd0f03643
core: create databases from limbo
2024-11-15 12:09:07 +01:00
Pere Diaz Bou
87c80b2a07
use core wal file for wasm
2024-11-14 17:54:20 +01:00
Pere Diaz Bou
e2276c2e9d
O_DIRECT disable on WAL
2024-11-13 13:45:42 +00:00
Pere Diaz Bou
48f0e72e14
checkpoint on drop connection
2024-11-12 17:03:30 +01:00
Pere Diaz Bou
ce1367b76a
move wal creation
2024-11-07 13:51:02 +01:00
Pere Diaz Bou
0b46648c0e
write wal header on init
2024-11-07 13:29:57 +01:00
Pere Diaz Bou
eb8c462c5f
fix io submission on cacheflush
2024-11-06 16:25:42 +00:00
Pere Diaz Bou
f66e3925f3
fix imports
2024-11-05 15:29:54 +01:00
Pere Diaz Bou
f009eb35c6
suspendable checkpoint
2024-11-05 15:29:54 +01:00
Pere Diaz Bou
c0e51c4ca6
wip wal
2024-11-05 15:29:53 +01:00
김선우
f7304a15a6
Fix clippy
2024-09-18 17:59:11 +09:00
김선우
e9ba458514
Add support for sqlite_version
2024-09-18 17:57:51 +09:00
김선우
07c4ca9edd
Nit
2024-09-15 17:16:33 +09:00
jussisaurio
a108dea825
GROUP BY
2024-09-14 16:14:45 +03:00
Ajaya Agrawal
5861684d1c
fix
2024-09-03 00:46:53 +05:30
Ajaya Agrawal
dcc99148d2
fix
2024-09-03 00:46:53 +05:30
Ajaya Agrawal
cb275feaa2
Index lookup support
...
Adds support for parsing index structure
2024-09-03 00:46:53 +05:30
jussisaurio
2e32ca0bdb
More structured query planner
2024-08-16 19:42:03 +03:00
JeanArhancet
4050a3ebe2
refactor: impl json5 direclty
2024-08-04 12:47:08 +02:00
JeanArhancet
552090cb29
feat: add json support
2024-08-04 10:54:27 +02:00
Pekka Enberg
a290b2f102
core: Open WAL file and parse header
2024-08-03 12:48:16 +03:00
Pekka Enberg
ed4116e7c2
core: Introduce Wal trait
...
We're going to need it for WebAssembly anyway, which does not have
standard filesystem support.
2024-08-03 12:34:10 +03:00
Pekka Enberg
090a577dd5
core: Move DatabaseStorage to storage/database.rs
2024-08-03 10:41:10 +03:00
Pekka Enberg
8a54e31803
core: Rename PageIO to DatabaseStorage
2024-08-03 10:33:52 +03:00
Pekka Enberg
4349b946e5
core: Eliminate PageSource wrapper
...
The PageSource wrapper is useless. Let's inline it and use PageIO
directly.
2024-08-03 10:27:20 +03:00
Pekka Enberg
0affdada2a
core: Move datetime.rs to vdbe/
...
The file contains SQL functions invoked by the VDBE so let's move the
file there.
2024-08-02 17:34:10 +03:00
Pekka Enberg
0bf12ec1b3
core: Move buffer_pool.rs to storage module
2024-08-01 11:53:14 +03:00
Pekka Enberg
ed1c23bfe6
core: Move wal.rs to storage module
2024-08-01 11:52:50 +03:00
Pekka Enberg
f8a43361db
core: Move pager.rs to storage module
2024-08-01 11:52:50 +03:00
Pekka Enberg
7abc48303f
core: Move btree.rs to storage module
2024-08-01 11:52:50 +03:00
Pekka Enberg
73bdf1671f
Initial pass on WAL reader
...
These are mostly just stubs for now, but at least we have some code in
place as reminder what we need.
2024-08-01 11:31:17 +03:00
Pere Diaz Bou
845a1ea175
core: cacheflush and fix *Completion casting
2024-07-31 17:27:02 +02:00
Pekka Enberg
351242561d
Kill anyhow usage
...
Switch anyhow to explicit `LimboError` type using thiserror crate, which
lets us make error handling more structured.
2024-07-25 17:15:08 +03:00
jussisaurio
588ab1af06
Run formatting and enforce formatting in CI
2024-07-23 23:14:36 +03:00
gandeevanr
871fae3286
Implement the Date() method
2024-07-23 09:19:08 -07:00
Pekka Enberg
966ee39589
core: Move sorter.rs to vdbe/
2024-07-23 14:54:41 +03:00
Pekka Enberg
a5dd8fd92c
core: Move select.rs to translate/
2024-07-21 20:36:56 +03:00