Commit graph

3959 commits

Author SHA1 Message Date
pedrocarlo
000d8756ec Implment VDestroy opcode 2025-04-13 17:06:12 -03:00
Jussi Saurio
472afdd841 Merge 'Add support for OpenEphemeral bytecode' from Diego Reis
First ~actual~ step to close #741, this time I'm following an approach
way closer to what SQLite does by just creating a normal `BTreeCursor`
and using an in-memory pager (thanks @krishvishal for the insight
🤝).

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

Closes #1139
2025-04-13 17:25:37 +03:00
Diego Reis
fd79ad2644 core/vdbe: Change is_btree to is_table in OpenEphemeral 2025-04-13 11:15:01 -03:00
Diego Reis
4c315e1bb6 core/vdbe: Update OpenEphemeral to use CreateBtreeFlags 2025-04-13 11:13:25 -03:00
Diego Reis
135330b736 core/pager: Fix page handling issue due change in wal type 2025-04-13 11:10:06 -03:00
Diego Reis
035e6dcef4 core/vdbe: Fix logic error during btree creation
I do thing we should change this 1,2 flag to 0,1 or just an enum, to be more rustacean. The current state can be very misleading
2025-04-13 11:10:06 -03:00
Diego Reis
61c324cca5 core/vdbe: Add missing work to get cursor and transient table usable 2025-04-13 11:10:06 -03:00
Diego Reis
bcac1fe778 core/vdbe: Rename page_io to db_file in OpenEphemeral 2025-04-13 11:10:06 -03:00
Diego Reis
09d83aadf3 Fix dumb conflict errors 2025-04-13 11:10:06 -03:00
Diego Reis
d9bf383507 core/io: Untie MemoryIO's lifetime of the IO layer 2025-04-13 11:10:06 -03:00
Diego Reis
79f8b83cbe Fix dumb clippy errors 2025-04-13 11:10:06 -03:00
Diego Reis
66e12e1c2d core/vdbe: Create OpenEphemeral bytecode
"Open a new cursor P1 to a transient table. The cursor is always opened read/write even if the main database is read-only. The ephemeral table is deleted automatically when the cursor is closed.

If the cursor P1 is already opened on an ephemeral table, the table is cleared (all content is erased)."

There is still some work to do, but this is a basic setup
2025-04-13 11:10:06 -03:00
Diego Reis
e5144bb6a9 core/storage: Create FileMemoryStorage
This is basically a copy of DatabaseStorage but outside the fs compilation flag, this way, we can access MemoryIO regardless the storage medium.
2025-04-13 11:10:06 -03:00
Diego Reis
b519509349 core/io: Add internal in-memory MemoryIO to all IO layers
Honestly I don't have 100% sure if this is a good idea, the reasoning is that in any IO we'll want to do memory only operations like creating tables etc, so may want a common way to access it
2025-04-13 11:10:05 -03:00
Diego Reis
65d4c68cf2 core/pager: Wrap wal with Option 2025-04-13 11:10:05 -03:00
Jussi Saurio
8e601959ad Merge 'Fuzz fix some operations' from Pedro Muniz
Me and @diegoreis42 were late at night, running the new fuzzer and saw
some errors with `Bit-Not` and `Not` operations. Added some tests as
well for those fixes.

Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>

Closes #1328
2025-04-13 17:02:19 +03:00
Jussi Saurio
cbe3500b7e Merge 'Code clean-ups' from Diego Reis
While developing I found that some things could be improved :)

Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>

Closes #1325
2025-04-13 17:02:12 +03:00
Jussi Saurio
b51f9bba23 Merge 'Return null when parameter is unbound' from Levy A.
Fix #1323.

Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>

Closes #1324
2025-04-13 17:02:03 +03:00
Jussi Saurio
f660c65199 Merge 'Enhance robusteness of optimization for Binary expressions' from Diego Reis
fix #1318

Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>

Closes #1322
2025-04-13 17:01:53 +03:00
pedrocarlo
1297cb107c bit-not and boolean-not
Co-authored-by: Diego Reis <79876389+diegoreis42@users.noreply.github.com>
2025-04-13 02:45:12 -03:00
Diego Reis
51eb2af06a core(refactor): Add CreateBTreeFlags
Passing 1s and 0s with comments is not rustacean, and since we already follow the pattern of struct flags in other sections of the codebase it's better use it here too.
2025-04-13 01:46:30 -03:00
Diego Reis
da484b33aa core/storage: Add asserts to check invariants for current_page
While developing, I had an underflow issue during the casting: `current as usize`. Which could be found way faster with proper asserts.
2025-04-12 22:29:29 -03:00
Levy A.
d210ee1497 cargo fmt 2025-04-12 18:55:48 -03:00
Diego Reis
ff7a4e8297 core: Change always falseness of equivalence between variables expressions to be only on anonymous variables
Named variables are compared by name
2025-04-12 18:04:15 -03:00
Diego Reis
64f8aca823 core: Improve readability of Affinity's doc comment 2025-04-12 17:55:57 -03:00
Diego Reis
029d1d7cce Ignore any .log file inside testing 2025-04-12 17:47:16 -03:00
Levy A.
5c0b112125 fix: return null when parameter is unbound 2025-04-12 17:43:04 -03:00
Diego Reis
db0f07499d core/translate: Fix naive comparison between Binary expressions during register optimization 2025-04-12 16:39:30 -03:00
Diego Reis
73764e198e core: Fix equivalence between variable expressions to be always false
Since until the bind to a value they are treated as NULL. https://sqlite.org/lang_expr.html#varparam
2025-04-12 16:34:39 -03:00
Jussi Saurio
508df42075 Merge 'Check that index seek key members are not null' from Jussi Saurio
Fixes bug where e.g. `SELECT age FROM users WHERE age > NULL` would
return all rows, since NULL is lower than anything else in index keys,
but in comparison expressions it returns NULL.
Solution: check whether index seek key members can be null, and if they
are null, do not seek and instead exit the loop.
Example bytecode on a table with an index on (a,b,c):
```sql
sqlite> explain select * from t where a = 5 and b = 6 and c > NULL;
addr  opcode         p1    p2    p3    p4             p5  comment
----  -------------  ----  ----  ----  -------------  --  -------------
0     Init           0     18    0                    0   Start at 18
1     OpenRead       0     2     0     5              0   root=2 iDb=0; t
2     OpenRead       1     3     0     k(4,,,,)       0   root=3 iDb=0; abc
3     Integer        5     1     0                    0   r[1]=5
4     Integer        6     2     0                    0   r[2]=6
5     Null           0     3     0                    0   r[3]=NULL
6     IsNull         3     17    0                    0   if r[3]==NULL goto 17
7     SeekGT         1     17    1     3              0   key=r[1..3]
8       IdxGT          1     17    1     2              0   key=r[1..2]
9       DeferredSeek   1     0     0                    0   Move 0 to 1.rowid if needed
10      Column         1     0     4                    0   r[4]= cursor 1 column 0
11      Column         1     1     5                    0   r[5]= cursor 1 column 1
12      Column         1     2     6                    0   r[6]= cursor 1 column 2
13      Column         0     3     7                    0   r[7]= cursor 0 column 3
14      Column         0     4     8                    0   r[8]= cursor 0 column 4
15      ResultRow      4     5     0                    0   output=r[4..8]
16    Next           1     8     0                    0
17    Halt           0     0     0                    0
18    Transaction    0     0     2     0              1   usesStmtJournal=0
19    Goto           0     1     0                    0
sqlite> select * from t where a = 5 and b = 6 and c > NULL;

Limbo v0.0.19-pre.4
Enter ".help" for usage hints.
limbo> explain select * from t where a = 5 and b = 6 and c > NULL;
addr  opcode             p1    p2    p3    p4             p5  comment
----  -----------------  ----  ----  ----  -------------  --  -------
0     Init               0     21    0                    0   Start at 21
1     OpenReadAsync      0     2     0                    0   table=t, root=2
2     OpenReadAwait      0     0     0                    0
3     OpenReadAsync      1     3     0                    0   table=abc, root=3
4     OpenReadAwait      0     0     0                    0
5     Integer            5     6     0                    0   r[6]=5
6     Integer            6     7     0                    0   r[7]=6
7     Null               0     8     0                    0   r[8]=NULL
8     IsNull             8     20    0                    0   if (r[8]==NULL) goto 20
9     SeekGT             1     20    6                    0   key=[6..8]
10      IdxGT            1     20    6                    0   key=[6..7]
11      DeferredSeek     1     0     0                    0
12      Column           0     0     1                    0   r[1]=t.a
13      Column           0     1     2                    0   r[2]=t.b
14      Column           0     2     3                    0   r[3]=t.c
15      Column           0     3     4                    0   r[4]=t.d
16      Column           0     4     5                    0   r[5]=t.e
17      ResultRow        1     5     0                    0   output=r[1..5]
18    NextAsync          1     0     0                    0
19    NextAwait          1     10    0                    0
20    Halt               0     0     0                    0
21    Transaction        0     0     0                    0   write=false
22    Goto               0     1     0                    0
```

Closes #1313
2025-04-12 11:11:57 +03:00
Jussi Saurio
02a2618da9 Merge 'Better diagnostics' from Pedro Muniz
On my journey of improving DX, I thought it would be a good idea to
improve a bit the Diagnostics that `miette` provides. This is the first
step to provide better errors in the CLI. I want to do better errors for
tables and columns afterwards by giving suggestions of possible names to
choose from, like we have in the Rust compiler or Clippy.
# Changed
- `Scanner` now passes its offset to Errors allowing `miette` to
correctly point to error in the sql statement.
- Some personalized help messages for `MalformedHexInteger`
- Help message for `BadNumber` printing the offending `String`
Examples:
| Before | After |
|--------|--------|
| <img width="458" alt="image" src="https://github.com/user-
attachments/assets/a9d62add-66fc-42c0-b5e9-8b1ef3c436d0" /> | <img
width="263" alt="image" src="https://github.com/user-
attachments/assets/e56af563-3225-4d7b-a303-30e5c9c38f5c" /> |
| <img width="458" alt="image" src="https://github.com/user-
attachments/assets/1f5145ee-3a1c-4616-ad0e-6459444cbb2e" /> | <img
width="277" alt="image" src="https://github.com/user-
attachments/assets/c87cba62-08af-477e-865b-fcca55ac725a" /> |
| <img width="458" alt="image" src="https://github.com/user-
attachments/assets/1601649e-5e2a-45c7-b47a-4f0830d7d78f" /> | <img
width="458" alt="image" src="https://github.com/user-
attachments/assets/9f0fef05-2f67-4b20-b8d2-bad7c44a534e" /> |
| <img width="458" alt="image" src="https://github.com/user-
attachments/assets/70b82de0-7d24-4c57-b953-333c758f6f63" /> | <img
width="458" alt="image" src="https://github.com/user-
attachments/assets/889d3654-0f91-44cf-ab8a-a01b462d3a5c" /> |

Closes #1316
2025-04-12 10:40:44 +03:00
Jussi Saurio
edbeced312 Merge 'simulator: provide high level commands on top of a single runner' from Alperen Keleş
Previously, the simulator only generated and ran a single run with the
given configurations, and anyone was free to implement retrial or
looping on top, which is still possible.
I still wanted to start adding some higher level commands on top,
especially now that we have access to bug base, so this PR adds the
following options;
- loop: run the simulator in a loop `n` times, with the option to short
circuit if any run fails.
- list: list all the bugs in the bug base.
- test: run the simulator against a specific bug by providing a
`filter`, this is useful when debugging a certain issue so you can first
run a bunch of tests in a `loop`, and rerun them using `test` when you
think you have a fix.

Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>

Closes #1317
2025-04-12 10:35:52 +03:00
alpaylan
e13b5bc698 fix min/max-tests bug 2025-04-11 15:33:32 -04:00
alpaylan
84e3ea5d19 Merge branch 'main' of https://github.com/tursodatabase/limbo 2025-04-11 14:10:19 -04:00
alpaylan
9d08693e8f add simulator subcommands 2025-04-11 14:10:12 -04:00
Pekka Enberg
cfe8aed40e Merge 'build(deps-dev): bump vite from 6.0.7 to 6.2.6 in /bindings/wasm/test-limbo-pkg' from dependabot[bot]
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite)
from 6.0.7 to 6.2.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v6.2.6</h2>
<p>Please refer to <a href="https://github.com/vitejs/vite/blob/v6.2.6/p
ackages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p>
<h2>v6.2.5</h2>
<p>Please refer to <a href="https://github.com/vitejs/vite/blob/v6.2.5/p
ackages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p>
<h2>v6.2.4</h2>
<p>Please refer to <a href="https://github.com/vitejs/vite/blob/v6.2.4/p
ackages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p>
<h2>v6.2.3</h2>
<p>Please refer to <a href="https://github.com/vitejs/vite/blob/v6.2.3/p
ackages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p>
<h2>v6.2.2</h2>
<p>Please refer to <a href="https://github.com/vitejs/vite/blob/v6.2.2/p
ackages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p>
<h2>create-vite@6.2.1</h2>
<p>Please refer to <a href="https://github.com/vitejs/vite/blob/create-
vite@6.2.1/packages/create-vite/CHANGELOG.md">CHANGELOG.md</a> for
details.</p>
<h2>v6.2.1</h2>
<p>Please refer to <a href="https://github.com/vitejs/vite/blob/v6.2.1/p
ackages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p>
<h2>create-vite@6.2.0</h2>
<p>Please refer to <a href="https://github.com/vitejs/vite/blob/create-
vite@6.2.0/packages/create-vite/CHANGELOG.md">CHANGELOG.md</a> for
details.</p>
<h2>v6.2.0</h2>
<p>Please refer to <a href="https://github.com/vitejs/vite/blob/v6.2.0/p
ackages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p>
<h2>v6.2.0-beta.1</h2>
<p>Please refer to <a href="https://github.com/vitejs/vite/blob/v6.2.0-
beta.1/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p>
<h2>v6.2.0-beta.0</h2>
<p>Please refer to <a href="https://github.com/vitejs/vite/blob/v6.2.0-
beta.0/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p>
<h2>v6.1.5</h2>
<p>Please refer to <a href="https://github.com/vitejs/vite/blob/v6.1.5/p
ackages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p>
<h2>v6.1.4</h2>
<p>Please refer to <a href="https://github.com/vitejs/vite/blob/v6.1.4/p
ackages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p>
<h2>v6.1.3</h2>
<p>Please refer to <a href="https://github.com/vitejs/vite/blob/v6.1.3/p
ackages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p>
<h2>v6.1.2</h2>
<p>Please refer to <a href="https://github.com/vitejs/vite/blob/v6.1.2/p
ackages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p>
<h2>create-vite@6.1.1</h2>
<p>Please refer to <a href="https://github.com/vitejs/vite/blob/create-
vite@6.1.1/packages/create-vite/CHANGELOG.md">CHANGELOG.md</a> for
details.</p>
<h2>v6.1.1</h2>
<p>Please refer to <a href="https://github.com/vitejs/vite/blob/v6.1.1/p
ackages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/vitejs/vite/blob/v6.2.6/
packages/vite/CHANGELOG.md">vite's changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->6.2.6 (2025-04-10)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: reject requests with <code>#</code> in request-target (<a href=
"https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19830">#1
9830</a>) (<a href="3bb0883d22
fd901ff18f338e8b4bf11395f7">3bb0883</a>), closes <a href="https://redire
ct.github.com/vitejs/vite/issues/19830">#19830</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.2.5 (2025-04-03)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: backport <a href="https://github.com/vitejs/vite/tree/HEAD/pack
ages/vite/issues/19782">#19782</a>, fs check with svg and relative paths
(<a href="fdb196e9f8
c81665c7e82ac581">fdb196e</a>), closes <a href="https://redirect.github.
com/vitejs/vite/issues/19782">#19782</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.2.4 (2025-03-31)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: fs check in transform middleware (<a href="https://github.com/v
itejs/vite/tree/HEAD/packages/vite/issues/19761">#19761</a>) (<a href="h
ttps://github.com/vitejs/vite/commit/7a4fabab6a3aa24c89144e15a13d78f92b5
2e588">7a4faba</a>), closes <a href="https://redirect.github.com/vitejs/
vite/issues/19761">#19761</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.2.3 (2025-03-24)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: fs raw query with query separators (<a href="https://github.com
/vitejs/vite/tree/HEAD/packages/vite/issues/19702">#19702</a>) (<a href=
"f234b5744d
44263c1">f234b57</a>), closes <a href="https://redirect.github.com/vitej
s/vite/issues/19702">#19702</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.2.2 (2025-03-14)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: await client buildStart on top level buildStart (<a href="https
://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19624">#19624</
a>) (<a href="b31faab2a8
7baeb9c7a7cbb724f8d2">b31faab</a>), closes <a href="https://redirect.git
hub.com/vitejs/vite/issues/19624">#19624</a></li>
<li>fix(css): inline css correctly for double quote use strict (<a href=
"https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19590">#1
9590</a>) (<a href="d0aa833296
c420a27a1ea88ecdbdeacdbce7">d0aa833</a>), closes <a href="https://redire
ct.github.com/vitejs/vite/issues/19590">#19590</a></li>
<li>fix(deps): update all non-major dependencies (<a href="https://githu
b.com/vitejs/vite/tree/HEAD/packages/vite/issues/19613">#19613</a>) (<a
href="363d691b49
8a9483b1f931">363d691</a>), closes <a href="https://redirect.github.com/
vitejs/vite/issues/19613">#19613</a></li>
<li>fix(indexHtml): ensure correct URL when querying module graph (<a hr
ef="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19601"
>#19601</a>) (<a href="dc5395a27e
4066ef7725278c4057d9f1071a53f">dc5395a</a>), closes <a href="https://red
irect.github.com/vitejs/vite/issues/19601">#19601</a></li>
<li>fix(preview): use preview https config, not server (<a href="https:/
/github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19633">#19633</a>
) (<a href="98b3160fa5
7c5aae87e0d8f1978e">98b3160</a>), closes <a href="https://redirect.githu
b.com/vitejs/vite/issues/19633">#19633</a></li>
<li>fix(ssr): use optional chaining to prevent &quot;undefined is not an
object&quot; happening in `ssrRewriteStac (<a href="https://github.com/v
itejs/vite/commit/43097550a1aa8ff633c39fb197b5f9ac1222119b">4309755</a>)
, closes <a href="https://redirect.github.com/vitejs/vite/issues/19612">
#19612</a></li>
<li>feat: show friendly error for malformed <code>base</code> (<a href="
https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19616">#19
616</a>) (<a href="2476391b28
67d0ed317b6d0c462e68028f7">2476391</a>), closes <a href="https://redirec
t.github.com/vitejs/vite/issues/19616">#19616</a></li>
<li>feat(worker): show asset filename conflict warning (<a href="https:/
/github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19591">#19591</a>
) (<a href="367d968fbf
2b816e92e8045c6217">367d968</a>), closes <a href="https://redirect.githu
b.com/vitejs/vite/issues/19591">#19591</a></li>
<li>chore: extend commit hash correctly when ambigious with a non-commit
object (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/
issues/19600">#19600</a>) (<a href="https://github.com/vitejs/vite/commi
t/89a62873243805518b672212db7e317989c5c197">89a6287</a>), closes <a href
="https://redirect.github.com/vitejs/vite/issues/19600">#19600</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.2.1 (2025-03-07)<!-- raw HTML omitted
--></h2>
<ul>
<li>refactor: remove <code>isBuild</code> check from preAliasPlugin (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/1958
7">#19587</a>) (<a href="c9e086d35
ac35ee1c6d85d48369e8a67a2ba6bfe">c9e086d</a>), closes <a href="https://r
edirect.github.com/vitejs/vite/issues/19587">#19587</a></li>
<li>refactor: restore endsWith usage (<a href="https://github.com/vitejs
/vite/tree/HEAD/packages/vite/issues/19554">#19554</a>) (<a href="https:
//github.com/vitejs/vite/commit/6113a9670cc9b7d29fe0bffe033f7823e36ded00
">6113a96</a>), closes <a href="https://redirect.github.com/vitejs/vite/
issues/19554">#19554</a></li>
<li>refactor: use <code>applyToEnvironment</code> in internal plugins
(<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/
19588">#19588</a>) (<a href="https://github.com/vitejs/vite/commit/f6784
42d5701a00648a745956f9d884247e4e710">f678442</a>), closes <a href="https
://redirect.github.com/vitejs/vite/issues/19588">#19588</a></li>
<li>fix(css): stabilize css module hashes with lightningcss in dev mode
(<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/
19481">#19481</a>) (<a href="https://github.com/vitejs/vite/commit/92125
b41e4caa3e862bf5fd9b1941546f25d9bf2">92125b4</a>), closes <a href="https
://redirect.github.com/vitejs/vite/issues/19481">#19481</a></li>
<li>fix(deps): update all non-major dependencies (<a href="https://githu
b.com/vitejs/vite/tree/HEAD/packages/vite/issues/19555">#19555</a>) (<a
href="f612e0fdf6
25755f261d78">f612e0f</a>), closes <a href="https://redirect.github.com/
vitejs/vite/issues/19555">#19555</a></li>
<li>fix(reporter): fix incorrect bundle size calculation with non-ASCII
characters (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/v
ite/issues/19561">#19561</a>) (<a href="https://github.com/vitejs/vite/c
ommit/437c0ed8baa6739bbe944779b9e7515f9035046a">437c0ed</a>), closes <a
href="https://redirect.github.com/vitejs/vite/issues/19561">#19561</a></
li>
<li>fix(sourcemap): combine sourcemaps with multiple sources without
matched source (<a href="https://github.com/vitejs/vite/tree/HEAD/packag
es/vite/issues/18971">#18971</a>) (<a href="https://github.com/vitejs/vi
te/commit/e3f6ae14f7a93118d7341de7379967f815725c4b">e3f6ae1</a>), closes
<a href="https://redirect.github.com/vitejs/vite/issues/18971">#18971</a
></li>
<li>fix(ssr): named export should overwrite export all (<a href="https:/
/github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19534">#19534</a>
) (<a href="2fd2fc1107
488767734cc23c34dd">2fd2fc1</a>), closes <a href="https://redirect.githu
b.com/vitejs/vite/issues/19534">#19534</a></li>
<li>feat: add <code>*?url&amp;no-inline</code> type and warning for
<code>.json?inline</code> / <code>.json?no-inline</code> (<a href="https
://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19566">#19566</
a>) (<a href="c0d36677cd
53ed6305f0e0df43d289">c0d3667</a>), closes <a href="https://redirect.git
hub.com/vitejs/vite/issues/19566">#19566</a></li>
<li>test: add glob import test case (<a href="https://github.com/vitejs/
vite/tree/HEAD/packages/vite/issues/19516">#19516</a>) (<a href="https:/
/github.com/vitejs/vite/commit/aa1d8075cc7ce7fbba62fea9e37ccb9b304fc039"
>aa1d807</a>), closes <a href="https://redirect.github.com/vitejs/vite/i
ssues/19516">#19516</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="d3dbf25fd5
cec8fb5ac45d220037b"><code>d3dbf25</code></a> release: v6.2.6</li>
<li><a href="3bb0883d22
18f338e8b4bf11395f7"><code>3bb0883</code></a> fix: reject requests with
<code>#</code> in request-target (<a href="https://github.com/vitejs/vit
e/tree/HEAD/packages/vite/issues/19830">#19830</a>)</li>
<li><a href="c176acf70a
24b63ab7260e713d4b2"><code>c176acf</code></a> release: v6.2.5</li>
<li><a href="fdb196e9f8
156c81665c7e82ac581"><code>fdb196e</code></a> fix: backport <a href="htt
ps://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19782">#19782
</a>, fs check with svg and relative paths</li>
<li><a href="037f801075
45d659f71a23813c48f"><code>037f801</code></a> release: v6.2.4</li>
<li><a href="7a4fabab6a
e15a13d78f92b52e588"><code>7a4faba</code></a> fix: fs check in transform
middleware (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/v
ite/issues/19761">#19761</a>)</li>
<li><a href="16869d7c99
01e30064ab65e64fa91"><code>16869d7</code></a> release: v6.2.3</li>
<li><a href="f234b5744d
7b82cc88ed2144263c1"><code>f234b57</code></a> fix: fs raw query with
query separators (<a href="https://github.com/vitejs/vite/tree/HEAD/pack
ages/vite/issues/19702">#19702</a>)</li>
<li><a href="b12911edba
0a0940d37bb1e16ef2c"><code>b12911e</code></a> release: v6.2.2</li>
<li><a href="98b3160fa5
d7c5aae87e0d8f1978e"><code>98b3160</code></a> fix(preview): use preview
https config, not server (<a href="https://github.com/vitejs/vite/tree/H
EAD/packages/vite/issues/19633">#19633</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/vitejs/vi
te/commits/v6.2.6/packages/vite">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-
badges.githubapp.com/badges/compatibility_score?dependency-
name=vite&package-manager=npm_and_yarn&previous-version=6.0.7&new-
version=6.2.6)](https://docs.github.com/en/github/managing-security-
vulnerabilities/about-dependabot-security-updates#about-compatibility-
scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/tursodatabase/limbo/network/alerts).
</details>

Closes #1315
2025-04-11 19:47:45 +03:00
pedrocarlo
c99c6a4be5 Activate Bench for comparison 2025-04-11 13:40:56 -03:00
dependabot[bot]
5d85ec0d2a
build(deps-dev): bump vite in /bindings/wasm/test-limbo-pkg
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.0.7 to 6.2.6.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.2.6/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.6/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.2.6
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-11 15:57:58 +00:00
Pekka Enberg
df11562f69 Merge 'simulator: updates to bug base, refactors' from Alperen Keleş
- Fixes https://github.com/tursodatabase/limbo/issues/1200
- Fixes https://github.com/tursodatabase/limbo/issues/1306
- Adds detailed run information to bug base
- Fixes a bug in the differential testing with SQLite

Closes #1314
2025-04-11 18:52:28 +03:00
alpaylan
7a8fb34004 Merge branch 'main' of https://github.com/tursodatabase/limbo 2025-04-11 11:23:24 -04:00
alpaylan
d4707fe391 add non-zero exit code in case of failures, remove the interactive initalization option in bug base for now, fix bugs in differential mode, add detailed information regarding runs to the bug base 2025-04-11 11:23:03 -04:00
Jussi Saurio
6bea4de30f Check that index seek key members are not null 2025-04-11 17:22:46 +03:00
pedrocarlo
946b59f4ee even better BadNumber 2025-04-11 11:01:35 -03:00
pedrocarlo
a2ca9e5a46 better BadNumber 2025-04-11 10:09:00 -03:00
pedrocarlo
4d1ecd2d50 better MalformedHexInteger 2025-04-11 09:44:02 -03:00
Jussi Saurio
1fd9a7ad9c Merge 'btree: remove IterationState' from Jussi Saurio
iteration direction must be known when seeking, and transitively when
using move_to() since seek() uses it, but otherwise IterationState just
brings way too much noise to the code -- it was meant to encode
invariants about how a cursor can be iterated, but it's not worth it.
iteration direction for seek()/move_to() can be inferred from the
SeekOp:
GE/GT/EQ: forward
LT/LE: backward
and get_next_record()/get_prev_record() already have different logic for
their respective iteration directions.

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

Closes #1311
2025-04-11 13:54:11 +03:00
Jussi Saurio
2cbb903b06 Add doc comments to SeekOp 2025-04-11 13:45:10 +03:00
Jussi Saurio
029a0c86b2 btree: remove IterationState
iteration direction must be known when seeking, and transitively
when using move_to() since seek() uses it, but otherwise IterationState
just brings way too much noise to the code -- it was meant to encode
invariants about how a cursor can be iterated, but it's not worth it.

iteration direction for seek()/move_to() can be inferred from the
SeekOp:

GE/GT/EQ: forward
LT/LE: backward

and get_next_record()/get_prev_record() already have different
logic for their respective iteration directions.
2025-04-11 13:40:51 +03:00
Pekka Enberg
9dffddac3c Merge 'build(deps): bump pyo3 from 0.24.0 to 0.24.1' from dependabot[bot]
Bumps [pyo3](https://github.com/pyo3/pyo3) from 0.24.0 to 0.24.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pyo3/pyo3/releases">pyo3's
releases</a>.</em></p>
<blockquote>
<h2>v0.24.1</h2>
<p>This release is a security fix for the
<code>PyString::from_object</code> method, which passed
<code>&amp;str</code> data to the Python C API without checking for  a
terminating nul byte. All historical PyO3 versions are affected, and we
recommend you upgrade if you are using
<code>PyString::from_object</code>. Thank you to <a
href="https://github.com/vthib"><code>@​vthib</code></a> for the report
and <a href="https://github.com/Dr-Emann"><code>@​Dr-Emann</code></a>
for the fix. A RUSTSEC advisory will be published shortly.</p>
<p>Aside from the security fix, this release contains a number of other
non-breaking additions:</p>
<ul>
<li>An <code>abi3-py313</code> feature to support compiling with the
Python 3.13 stable ABI.</li>
<li><code>PyAnyMethods::getattr_opt</code> to get optional attributes
without paying the cost of a Python exception when the attribute in
question does not exist.</li>
<li>Constructor for <code>PyInt::new</code>.</li>
<li><code>with_critical_section2</code> for locking two objects at the
same time on the free-threaded build.</li>
<li>Fix for a PyO3 0.24.0 regression with
<code>Option&lt;&amp;str&gt;</code> and
<code>Option&lt;&amp;T&gt;</code> (where <code>T: PyClass</code>)
function arguments no longer being permitted</li>
</ul>
<p>There are also a few other small bug fixes for edge cases, mostly
related to compile errors from PyO3's macro code.</p>
<p>Thank you to the following contributors for the improvements:</p>
<p><a href="https://github.com/bschoenmaeckers"><code>@​bschoenmaeckers<
/code></a>
<a href="https://github.com/davidhewitt"><code>@​davidhewitt</code></a>
<a href="https://github.com/Dr-Emann"><code>@​Dr-Emann</code></a>
<a href="https://github.com/emmagordon"><code>@​emmagordon</code></a>
<a href="https://github.com/epontan"><code>@​epontan</code></a>
<a href="https://github.com/Icxolu"><code>@​Icxolu</code></a>
<a
href="https://github.com/IvanIsCoding"><code>@​IvanIsCoding</code></a>
<a href="https://github.com/jelmer"><code>@​jelmer</code></a>
<a href="https://github.com/jonaspleyer"><code>@​jonaspleyer</code></a>
<a href="https://github.com/ngoldbaum"><code>@​ngoldbaum</code></a>
<a href="https://github.com/Owen-CH-Leung"><code>@​Owen-CH-
Leung</code></a>
<a href="https://github.com/Tpt"><code>@​Tpt</code></a>
<a
href="https://github.com/Trolldemorted"><code>@​Trolldemorted</code></a>
<a href="https://github.com/XuehaiPan"><code>@​XuehaiPan</code></a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/PyO3/pyo3/blob/v0.24.1/CHANGELOG.md">pyo3's
changelog</a>.</em></p>
<blockquote>
<h2>[0.24.1] - 2025-03-31</h2>
<h3>Added</h3>
<ul>
<li>Add <code>abi3-py313</code> feature. <a
href="https://redirect.github.com/PyO3/pyo3/pull/4969">#4969</a></li>
<li>Add <code>PyAnyMethods::getattr_opt</code>. <a
href="https://redirect.github.com/PyO3/pyo3/pull/4978">#4978</a></li>
<li>Add <code>PyInt::new</code> constructor for all supported number
types (i32, u32, i64, u64, isize, usize). <a
href="https://redirect.github.com/PyO3/pyo3/pull/4984">#4984</a></li>
<li>Add <code>pyo3::sync::with_critical_section2</code>. <a
href="https://redirect.github.com/PyO3/pyo3/pull/4992">#4992</a></li>
<li>Implement <code>PyCallArgs</code> for <code>Borrowed&lt;'_, 'py,
PyTuple&gt;</code>, <code>&amp;Bound&lt;'py, PyTuple&gt;</code>, and
<code>&amp;Py&lt;PyTuple&gt;</code>. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5013">#5013</a></li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix <code>is_type_of</code> for native types not using same
specialized check as <code>is_type_of_bound</code>. <a
href="https://redirect.github.com/PyO3/pyo3/pull/4981">#4981</a></li>
<li>Fix <code>Probe</code> class naming issue with
<code>#[pymethods]</code>. <a
href="https://redirect.github.com/PyO3/pyo3/pull/4988">#4988</a></li>
<li>Fix compile failure with required <code>#[pyfunction]</code>
arguments taking <code>Option&lt;&amp;str&gt;</code> and
<code>Option&lt;&amp;T&gt;</code> (for <code>#[pyclass]</code> types).
<a href="https://redirect.github.com/PyO3/pyo3/pull/5002">#5002</a></li>
<li>Fix <code>PyString::from_object</code> causing of bounds reads whith
<code>encoding</code> and <code>errors</code> parameters which are not
nul-terminated. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5008">#5008</a></li>
<li>Fix compile error when additional options follow after
<code>crate</code> for <code>#[pyfunction]</code>. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5015">#5015</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="a213b368bd
5bfed029e17c3b447"><code>a213b36</code></a> release: 0.24.1 (<a
href="https://redirect.github.com/pyo3/pyo3/issues/5021">#5021</a>)</li>
<li><a href="d85a02d9b1
0393d5d9b876dbc0a"><code>d85a02d</code></a> split
<code>PyFunctionArgument</code> to specialize <code>Option</code> (<a
href="https://redirect.github.com/pyo3/pyo3/issues/5002">#5002</a>)</li>
<li><a href="c37a50a7a3
0cb89cf85f9e5fac7"><code>c37a50a</code></a> Add example of more complex
exceptions (<a
href="https://redirect.github.com/pyo3/pyo3/issues/5014">#5014</a>)</li>
<li><a href="dcacb9bbbc
80fc53074e445b4fc"><code>dcacb9b</code></a> Simplify PyFunctionArgument
impl on &amp;Bound&lt;T&gt; (<a
href="https://redirect.github.com/pyo3/pyo3/issues/5018">#5018</a>)</li>
<li><a href="03c31c5c7a
944bd8ca05d1bdec8"><code>03c31c5</code></a> fix
<code>#[pyfunction]</code> option parsing (<a
href="https://redirect.github.com/pyo3/pyo3/issues/5015">#5015</a>)</li>
<li><a href="0f49eb14b0
0db84c5c404f97dd7"><code>0f49eb1</code></a> docs: Remove examples with
outdated PyO3 and unmaintained projects (<a
href="https://redirect.github.com/pyo3/pyo3/issues/4952">#4952</a>)</li>
<li><a href="1b00b0d27f
616d99016b06c1bd8"><code>1b00b0d</code></a> implement
<code>PyCallArgs</code> for borrowed types (<a
href="https://redirect.github.com/pyo3/pyo3/issues/5013">#5013</a>)</li>
<li><a href="5caaa371dc
a465c3c2c80ce6e2f"><code>5caaa37</code></a> fix: convert to cstrings in
PyString::from_object (<a
href="https://redirect.github.com/pyo3/pyo3/issues/5008">#5008</a>)</li>
<li><a href="4aca459fd3
388c812047f5465ce"><code>4aca459</code></a> docs: guide - add link to
tables and traits (<a
href="https://redirect.github.com/pyo3/pyo3/issues/5001">#5001</a>)</li>
<li><a href="0452c0ee52
6ba3d136a79edb15d"><code>0452c0e</code></a> replace quansight-
labs/setup-python with actions/setup-python (<a
href="https://redirect.github.com/pyo3/pyo3/issues/5007">#5007</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pyo3/pyo3/compare/v0.24.0...v0.24.1">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-
badges.githubapp.com/badges/compatibility_score?dependency-
name=pyo3&package-manager=cargo&previous-version=0.24.0&new-
version=0.24.1)](https://docs.github.com/en/github/managing-security-
vulnerabilities/about-dependabot-security-updates#about-compatibility-
scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/tursodatabase/limbo/network/alerts).
</details>

Closes #1307
2025-04-11 10:14:54 +03:00
dependabot[bot]
a56e6ebc7d
build(deps): bump pyo3 from 0.24.0 to 0.24.1
Bumps [pyo3](https://github.com/pyo3/pyo3) from 0.24.0 to 0.24.1.
- [Release notes](https://github.com/pyo3/pyo3/releases)
- [Changelog](https://github.com/PyO3/pyo3/blob/v0.24.1/CHANGELOG.md)
- [Commits](https://github.com/pyo3/pyo3/compare/v0.24.0...v0.24.1)

---
updated-dependencies:
- dependency-name: pyo3
  dependency-version: 0.24.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-11 07:01:07 +00:00