Commit Graph

10455 Commits

Author SHA1 Message Date
Pekka Enberg
e0a3d2741b Merge 'simulator: Clean up code to use extract_if()' from Pavan Nambi
As we are in rust 1.88 rn, we can safely use extract_if

Reviewed-by: Pedro Muniz (@pedrocarlo)

Closes #2911
2025-09-10 14:59:42 +03:00
Jussi Saurio
2ff5e15f58 Add scripts that help debug bugs from simulator
1. Add script that cleans simulator logs into just the SQL statements
2. Add script that bisects a set of SQL statements to find the minimal
   prefix set of statements that fails SQLite integrity check
2025-09-10 14:56:58 +03:00
Jussi Saurio
618f51330a advance despite skip_advance flag if cursor not pointing at record 2025-09-10 14:54:51 +03:00
Jussi Saurio
80f8794fda add comments 2025-09-10 14:54:51 +03:00
Jussi Saurio
53eaf56a63 let's apply clippy's suggestion that makes the code less readable 2025-09-10 14:54:51 +03:00
Jussi Saurio
36ec654631 Seek with GE after delete balancing and skip next advance 2025-09-10 14:54:51 +03:00
Jussi Saurio
813bdc088b Adjust fuzz test to do a WHERE-less update or delete sometimes 2025-09-10 14:54:51 +03:00
Jussi Saurio
f469113d9f Don't crash if DELETE uses index 2025-09-10 14:54:51 +03:00
Jussi Saurio
e0ca0cf8af Enable access path optimizer for DELETE 2025-09-10 14:54:51 +03:00
Jussi Saurio
6d43bdbf71 emit the Delete instruction for the iteration index cursor, and do it last 2025-09-10 14:54:51 +03:00
Jussi Saurio
df83b56083 check freelist count in integrity check 2025-09-10 14:53:28 +03:00
Pekka Enberg
c620a15a55 Merge 'core: Support ceiling modifier in datetime' from Ceferino Patino
Resolves #2677
- Implements the modifier for Floor on the datetime object.
- Implements the modifier for Ceiling on the datetime object.
- Includes additional testing changes in testing/scalar-functions-
datetime.test to test the sql functionality.
Consolidation PR of #2678 and #2679 since the functions ended up being
much more complicated than I initially thought and had to be done in a
single PR.

Closes #2757
2025-09-10 14:46:07 +03:00
Pekka Enberg
a3d23c2738 Merge 'Fix jsonb functions check valid json string binary' from
closes: #2820
```
turso> select user->>'age' as age from json_user;
┌─────┐
│ age │
├─────┤
│  30 │
└─────┘
```

Closes #2821
2025-09-10 14:44:54 +03:00
Pekka Enberg
2131a04b7d core: Rename IO::run_once() to IO::step()
The `run_once()` name is just a historical accident. Furthermore, it now
started to appear elsewhere as well, so let's just call it IO::step() as we
should have from the beginning.
2025-09-10 14:36:02 +03:00
Pekka Enberg
0b91f8a715 Merge 'IO: handle errors properly in io_uring' from Preston Thorpe
Because `io_uring` may have many other I/O submission events queued
(that are relevant to the operation) when we experience an error,
marking our `Completion` objects as aborted is not sufficient, the
kernel will still execute queued I/O, which can mutate WAL or DB state
after we’ve declared failure and keep references (iovec arrays, buffers)
alive and stall reuse. We need to stop those in-flight SQEs at the
kernel and then drain the ring to a known-empty state before reusing any
resources.
The following methods were added to the `IO` trait:
`cancel`: which takes a slice of `Completion` objects and has a default
implementation that simply marks them as `aborted`.
`drain`: which has a default noop implementation, but the `io_uring`
backend implements this method to drain the ring.
CC @sivukhin

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

Closes #2787
2025-09-10 14:24:43 +03:00
Pekka Enberg
f3ee355fa1 testing/compare.test: Clean up tests by using in-memory database
Suggested by Jussi
2025-09-10 14:14:46 +03:00
Pekka Enberg
22b352bc2f Merge 'core: Fix integer/float comparison' from Pavan Nambi
closes #2957

Closes #2958
2025-09-10 14:13:15 +03:00
Pekka Enberg
1ec6233fe1 Merge 'pager: fix incorrect freelist page count bookkeeping' from Jussi Saurio
When we use a freelist trunk page, the freelist count should decrease,
not increase
file under: lmao
Closes #2992

Closes #3000
2025-09-10 14:10:48 +03:00
Pekka Enberg
ab871b70b1 Merge 'core/vdbe: Don't rollback transaction when write upgrade fails' from Pekka Enberg
If upgrade from read to write transaction fails, don't roll back the
transaction. Instead restore the transaction into its original state,
which allows deferred transactions that have not read anything to
restart automatically.
Fixes #2984

Closes #2996
2025-09-10 14:09:29 +03:00
Jussi Saurio
5c8afc5caf pager: fix incorrect freelist page count bookkeeping 2025-09-10 14:02:17 +03:00
Pekka Enberg
9655b455ed Clippy you are so smart 2025-09-10 13:54:42 +03:00
Pekka Enberg
a2f0725a62 Fix publish-create.sh script 2025-09-10 13:49:55 +03:00
Pekka Enberg
e04938eaf5 Turso 0.1.5 2025-09-10 13:30:18 +03:00
Pekka Enberg
f3d1c8c1a4 Update CHANGELOG 2025-09-10 13:30:04 +03:00
TcMits
eeef8b85fa always use consume instead of run_query, handle_dot_command 2025-09-10 16:54:51 +07:00
TcMits
688dc6dde3 minor 2025-09-10 16:31:57 +07:00
TcMits
65f5fbd1f6 no errors in consume 2025-09-10 16:31:12 +07:00
TcMits
ddf0df0aea merge main 2025-09-10 15:59:56 +07:00
TcMits
dbcd01bf8b make consume safer 2025-09-10 15:56:20 +07:00
Pekka Enberg
0287512a47 stress: Disable database reopen and reconnect
Nikita noticed that database reopen and reconnet cause most database
operations to return "database locked", which means we're not getting
the coverage we need.
2025-09-10 11:50:22 +03:00
Pekka Enberg
1d34122414 Turso 0.1.5-pre.5 2025-09-10 11:40:21 +03:00
Pekka Enberg
086dac3a8c Merge 'add missing module type for browser package' from Nikita Sivukhin
Follow up after #2799

Closes #2994
2025-09-10 11:37:01 +03:00
Jussi Saurio
a874530db8 Fix semantics of transaction isolation test
- Busy errors do not rollback the transaction
- Transaction takes snapshot of DB state after its first successful
  access of the DB, not before its first attempt to access the DB
2025-09-10 11:13:50 +03:00
Mayank Verma
12104df16a await on .close() 2025-09-10 13:42:21 +05:30
Jussi Saurio
11339fc941 Merge 'Fix clear_page_cache method and rollback' from Preston Thorpe
Previously we were iterating over every entry in the page cache,
clearing the dirty flag from each page.

Reviewed-by: Pere Diaz Bou <pere-altea@homail.com>
Reviewed-by: Nikita Sivukhin (@sivukhin)

Closes #2988
2025-09-10 11:11:37 +03:00
Jussi Saurio
ab9dbba17c Merge 'Fix read_entire_wal_dumb: incrementally build the frame cache' from Preston Thorpe
closes #2240
Incrementally build the frame cache by reading the WAL file in chunks
instead of reading the entire file into memory.
<img width="247" height="254" alt="image" src="https://github.com/user-
attachments/assets/803645ab-002a-4efd-ac47-b2f690e63fc7" />

Reviewed-by: Pere Diaz Bou <pere-altea@homail.com>
Reviewed-by: Nikita Sivukhin (@sivukhin)

Closes #2986
2025-09-10 11:09:42 +03:00
Jussi Saurio
b6d99cd188 Merge 'clean print_query_result' from Lâm Hoàng Phúc
different between output modes is how we handle `Ok(StepResult::Row)` so
let introduce `row_step_result_query` macro to reduce duplicated code.

Closes #2979
2025-09-10 11:08:40 +03:00
Pekka Enberg
8161badbf4 core/vdbe: Don't rollback transaction when write upgrade fails
If upgrade from read to write transaction fails, don't roll back the
transaction. Instead restore the transaction into its original state,
which allows deferred transactions that have not read anything to
restart automatically.

Fixes #2984
2025-09-10 10:51:52 +03:00
Mayank Verma
aa38c9e099 make reconnect() async 2025-09-10 13:08:06 +05:30
Pekka Enberg
cd88681261 Merge 'update update-script to properly handle JS workspace' from Nikita Sivukhin
Closes #2989
2025-09-10 09:18:49 +03:00
TcMits
e8b853ed25 pretty mode's table need a line break 2025-09-10 12:03:59 +07:00
Pavan-Nambi
e5d3594fa2 fmt 2025-09-10 07:35:20 +05:30
Pavan-Nambi
a04bde12a9 resolve errors that came after merging 2025-09-10 07:34:59 +05:30
Pavan-Nambi
6728384b47 Merge remote-tracking branch 'origin/main' into cdc_fail_autoincrement 2025-09-10 07:30:22 +05:30
Preston Thorpe
9d21f3be15 Merge 'Make 'faultless' sim profile create some indexes too' from Jussi Saurio
Reviewed-by: Preston Thorpe <preston@turso.tech>

Closes #2991
2025-09-09 21:42:58 -04:00
Nikita Sivukhin
f3f69598c5 add missing module type for browser package 2025-09-10 03:06:34 +04:00
Preston Thorpe
b2638968fa Merge 'no need QueryStatistics if self.opts.timer is not set' from Lâm Hoàng Phúc
Reviewed-by: Preston Thorpe <preston@turso.tech>

Closes #2980
2025-09-09 17:59:32 -04:00
Jussi Saurio
f5a15bfb3d run 50% of AWS sims with faultless profile 2025-09-10 00:38:37 +03:00
Jussi Saurio
23c55eab6c Make 'faultless' sim profile create some indexes too 2025-09-10 00:32:09 +03:00
Mayank Verma
745feb131f add Connection.reconnect() to serverless driver 2025-09-10 02:17:12 +05:30