Commit Graph

142 Commits

Author SHA1 Message Date
Pekka Enberg
78eb901940 sqlite3: Fix sqlite3_step() when I/O is submitted 2025-05-15 11:43:44 +03:00
Pekka Enberg
4553adf317 Merge 'Rename OwnedValue -> Value' from Pekka Enberg
We have not had enough merge conflicts for a while so let's do a tree-
wide rename.

Closes #1488
2025-05-15 10:31:36 +03:00
Pekka Enberg
b07738e54b sqlite3: Update sqlite3.h with cbindgen
...people have been manually tweaking the header, but it's out of date.
Let's just use "cbindgen", which is the sensible thing to do.
2025-05-15 10:07:54 +03:00
Pekka Enberg
e3f71259d8 Rename OwnedValue -> Value
We have not had enough merge conflicts for a while so let's do a
tree-wide rename.
2025-05-15 09:59:46 +03:00
Pekka Enberg
12238870b7 sqlite3/tests: Make Clippy happy
There nothing more important to me personally than keeping the computer happy.
2025-05-15 09:38:41 +03:00
Pekka Enberg
dde897d172 sqlite3/tests: Remove test case from test_wal_checkpoint_v2 2025-05-15 09:30:42 +03:00
Pekka Enberg
de8d4dfe4f sqlite3/tests: Remove test case from test_wal_checkpoint
Turns out SQLite SIGSEGVs on CI runs for this...
2025-05-15 09:15:47 +03:00
Pekka Enberg
cac464b49a sqlite3: Switch error to trace-level logging
...it's pretty pointless to spam the logs for this.
2025-05-15 09:15:35 +03:00
Pekka Enberg
7458848a56 sqlite3/tests: Remove C-based compat tests
...they're now just duplicating the Rust ones.
2025-05-15 09:15:35 +03:00
Pekka Enberg
0e5234ee86 sqlite3/tests: Skip compat test on Windows
We have linking issues with the static libraries so skip them for now.
2025-05-15 09:15:35 +03:00
Pekka Enberg
358a40928f sqlite3/tests: Make Clippy happy 2025-05-15 09:15:35 +03:00
Pekka Enberg
18dbf033d8 sqlite3/tests: Enable all test cases 2025-05-15 09:15:35 +03:00
Pekka Enberg
cf66dfcdaf sqlite3/tests: Remove invalid test_open_misuse test case
You can pass NULL to `sqlite3_open()` and it will open a private,
temporary on-disk database. Therefore, drop the broken test.
2025-05-15 09:15:35 +03:00
Pekka Enberg
fde5484e93 sqlite3/tests: Relax test_libversion_number assertion
...make it less dependent on specific version of SQLite.
2025-05-15 09:15:35 +03:00
Pekka Enberg
41e9d7f9b8 sqlite3/tests: Run Rust-based test suite also with SQLite
You can now run the tests with SQLite with:

```
cargo test --test compat --features sqlite3
```
2025-05-15 09:15:35 +03:00
Pere Diaz Bou
ee55116ca6 return row as reference to registers 2025-03-29 22:04:08 +01:00
Pere Diaz Bou
bf37fd3314 wip 2025-03-29 22:02:49 +01:00
Pere Diaz Bou
9291f60722 Introduce Register struct
OwnedValue has become a powerhouse of madness, mainly because I decided
to do it like that when I first introduced AggContext. I decided it was
enough and I introduced a `Register` struct that contains `OwnedValue`,
`Record` and `Aggregation`, this way we don't use `OwnedValue` for
everything make everyone's life harder.

This is the next step towards making ImmutableRecords the default
because I want to remove unnecessary allocations. Right now we clone
OwnedValues when we generate a record more than needed.
2025-03-27 17:53:02 +01:00
Pekka Enberg
7fc61b7b3d sqlite3: Add trace logging to sqlite3_exec() 2025-03-17 16:17:18 +02:00
Pekka Enberg
7ae1da0f3c Ignore some failing Rust SQLite test cases
...they fail on CI, but not locally so disable them until we got them sorted out.
2025-03-12 18:56:32 +02:00
Pere Diaz Bou
f7c8d4cc69 test_open_existing fix 2025-03-12 16:06:52 +01:00
Pere Diaz Bou
e65d76f51f fmt 2025-03-12 16:06:29 +01:00
Pere Diaz Bou
40a78c32b6 fix sqlite3 lib db test path 2025-03-12 16:00:46 +01:00
Pekka Enberg
cb68b2ec1b sqlite3: cargo fmt 2025-03-10 12:22:01 +02:00
karan
34876c4711 fixing erro code for sqlite open
Signed-off-by: karan <karanjanthe@gmail.com>
2025-03-08 09:52:43 +05:30
Pekka Enberg
96175cccf7 cli: Add --experimental-mvcc option to enable MVCC 2025-03-06 10:16:42 +02:00
Pere Diaz Bou
8daf7666d1 Make database Sync + Send 2025-03-05 14:07:48 +01:00
Pekka Enberg
936ae307b7 core: Kill value type
We currently have two value types, `Value` and `OwnedValue`. The
original thinking was that `Value` is external type and `OwnedValue` is
internal type. However, this just results in unnecessary transformation
between the types as data crosses the Limbo library boundary.

Let's just follow SQLite here and consolidate on a single value type
(where `sqlite3_value` is just an alias for the internal `Mem` type).
The way this will eventually work is that we can have bunch of
pre-allocated `OwnedValue` objects in `ProgramState` and basically
return a reference to them all the way to the application itself, which
extracts the actual value.
2025-02-26 10:57:45 +02:00
Tiago Ribeiro
d807b533f7 Update sqlite3 c binding to use the new retrieval methods to access Record values. 2025-02-10 00:27:52 -07:00
Pekka Enberg
c210821100 core: Move result row to ProgramState
Move result row to `ProgramState` to mimic what SQLite does where `Vdbe`
struct has a `pResultRow` member. This makes it easier to deal with result
lifetime, but more importantly, eventually lazily parse values at the edges of
the API.
2025-02-06 11:52:26 +02:00
Jorge López
86a4714711 syntactic changes: remove unneeded paths when the type is already imported 2025-01-18 18:29:12 +01:00
Pekka Enberg
276819369c sqlite3: Add in-memory support to sqlite3_open() 2025-01-04 10:58:51 +02:00
Daniel Kaluza
3b85015f55 Fix inconsistent SQLITE_NOTFOUND error code 2025-01-03 11:19:21 +01:00
Daniel Kaluza
34690e3b63 Remove dependency on system libsqlite headers from compatibility tests 2025-01-03 11:19:21 +01:00
PThorpe92
f6cd707544 Add clippy CI, fix or ignore warnings where appropriate 2024-12-29 10:25:41 -05:00
Pekka Enberg
f2ecebc357 Rename RowResult to StepResult
The name "row result" is confusing because it really *is* a result from
a step() call. The only difference is how a row is represented as we
return from VDBE or from a statement.

Therefore, rename RowResult to StepResult.
2024-12-27 10:20:41 +02:00
Pere Diaz Bou
5cd84a407f fmt 2024-12-24 18:42:58 +01:00
Pere Diaz Bou
aed14117c9 core: transaction support 2024-12-24 18:04:30 +01:00
Pekka Enberg
8387e7903c sqlite: Fix source formatting 2024-12-20 09:30:03 +02:00
Pekka Enberg
56710b0187 sqlite3: Implement sqlite3_free_table() 2024-12-20 09:18:31 +02:00
Pekka Enberg
d0fa9e07f7 Merge 'sqlite3: Add sqlite3_wal_checkpoint_*() API' from Pekka Enberg
This wires up checkpointing to the SQLite C API. We don't respect the
checkpointing mode because core does not have that nor do we report back
some stats.

Reviewed-by: Pere Diaz Bou <pere-altea@homail.com>

Closes #480
2024-12-20 09:06:04 +02:00
Diego Reis
3a0e56bca5 Implement basic sqlite3_get_table() API 2024-12-19 23:13:51 -03:00
Pere Diaz Bou
dbe6b8d899 Merge 'Add statement interruption support' from Pekka Enberg
This adds an interrupt() method to Statement that allows apps to
interrupt a running statement. Please note that this is different from
`sqlite3_interrupt()` which interrupts all ongoing operations in a
database. Although we want to support that too, per statement interrupt
is much more useful to apps.

Reviewed-by: Pere Diaz Bou <pere-altea@homail.com>

Closes #512
2024-12-19 12:59:19 +01:00
Pekka Enberg
e93ac38e55 Add statement interruption support
This adds an interrupt() method to Statement that allows apps to
interrupt a running statement. Please note that this is different from
`sqlite3_interrupt()` which interrupts all ongoing operations in a
database. Although we want to support that too, per statement interrupt
is much more useful to apps.
2024-12-19 12:30:32 +02:00
mag1c1an1
ab306e9550 Fix issue #499 (add crate-type in libmo_sqlite3)
Signed-off-by: mag1c1an1 <mag1cian@icloud.com>
2024-12-19 17:33:06 +08:00
Pekka Enberg
f1937ee47f sqlite3: Add sqlite3_wal_checkpoint_*() API
This wires up checkpointing to the SQLite C API. We don't respect the
checkpointing mode because core does not have that nor do we report back
some stats.

Refs: #478
2024-12-15 10:58:52 +02:00
Pekka Enberg
636b78d4ff Merge 'Minimal cargo-c support' from Luca Barbato
Fixes #437

Closes #458
2024-12-15 09:30:12 +02:00
Luca Barbato
eacbba2c07 Minimal cargo-c support 2024-12-14 15:19:50 +01:00
Pere Diaz Bou
3e59da439c fmt 2024-12-13 13:10:33 +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