Commit Graph

3919 Commits

Author SHA1 Message Date
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="https://github.com/vitejs/vite/commit/3bb0883d22d59c
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="https://github.com/vitejs/vite/commit/fdb196e9f8672dba32cf5156
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=
"https://github.com/vitejs/vite/commit/f234b5744d8b74c95535a7b82cc88ed21
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="https://github.com/vitejs/vite/commit/b31faab2a81b839e4b74
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="https://github.com/vitejs/vite/commit/d0aa833296668f
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="https://github.com/vitejs/vite/commit/363d691b4995d72f26a14eb59ed8
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="https://github.com/vitejs/vite/commit/dc5395a27e4
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="https://github.com/vitejs/vite/commit/98b3160fa5916189e756cd
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="https://github.com/vitejs/vite/commit/2476391b2854aaa
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="https://github.com/vitejs/vite/commit/367d968fbf584e9f0e1719
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="https://github.com/vitejs/vite/commit/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="https://github.com/vitejs/vite/commit/f612e0fdf6810317b61fcca1ded1
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="https://github.com/vitejs/vite/commit/2fd2fc110738622651d361
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="https://github.com/vitejs/vite/commit/c0d36677cd305e8fa891
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="https://github.com/vitejs/vite/commit/d3dbf25fd5e21448f9ea6
cec8fb5ac45d220037b"><code>d3dbf25</code></a> release: v6.2.6</li>
<li><a href="https://github.com/vitejs/vite/commit/3bb0883d22d59cfd901ff
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="https://github.com/vitejs/vite/commit/c176acf70a113c33c33cb
24b63ab7260e713d4b2"><code>c176acf</code></a> release: v6.2.5</li>
<li><a href="https://github.com/vitejs/vite/commit/fdb196e9f8672dba32cf5
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="https://github.com/vitejs/vite/commit/037f801075ec35bb6e521
45d659f71a23813c48f"><code>037f801</code></a> release: v6.2.4</li>
<li><a href="https://github.com/vitejs/vite/commit/7a4fabab6a3aa24c89144
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="https://github.com/vitejs/vite/commit/16869d7c9917eb58d9a01
01e30064ab65e64fa91"><code>16869d7</code></a> release: v6.2.3</li>
<li><a href="https://github.com/vitejs/vite/commit/f234b5744d8b74c95535a
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="https://github.com/vitejs/vite/commit/b12911edba0cd9edbad17
0a0940d37bb1e16ef2c"><code>b12911e</code></a> release: v6.2.2</li>
<li><a href="https://github.com/vitejs/vite/commit/98b3160fa5916189e756c
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
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
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="https://github.com/PyO3/pyo3/commit/a213b368bd5bf859c2acb65
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="https://github.com/PyO3/pyo3/commit/d85a02d9b11f7c057e3627a
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="https://github.com/PyO3/pyo3/commit/c37a50a7a33e145f6bb87f4
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="https://github.com/PyO3/pyo3/commit/dcacb9bbbc8c130238bd884
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="https://github.com/PyO3/pyo3/commit/03c31c5c7affdd8805957b5
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="https://github.com/PyO3/pyo3/commit/0f49eb14b0358a8fe85c593
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="https://github.com/PyO3/pyo3/commit/1b00b0d27f1b49d4b4237bc
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="https://github.com/PyO3/pyo3/commit/5caaa371dce8fe8a93c64d7
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="https://github.com/PyO3/pyo3/commit/4aca459fd30441fa006c3eb
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="https://github.com/PyO3/pyo3/commit/0452c0ee5299a1af42f9d96
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
Pekka Enberg
e3a4400329 Merge 'Multi column indexes + index seek refactor' from Jussi Saurio
# Multi column indexes + index seek refactor
## PR reader guide
I would say mostly you should just focus on the content of
`optimizer.rs` and `plan.rs` because the rest is just small type
changes, or in the case of `main_loop.rs`, a bunch of logic was just
moved out of there and rewritten.
## New feature - multi column index seeks
This PR adds support for utilizing multi-column indexes properly, i.e.
using as many columns in the seek key as possible. Previously, we only
used max one column per index. I've modified the existing compound index
seek fuzz test to use this functionality.
## Refactoring of index seek related logic
This PR moves a lot of index seek related logic out of `main_loop.rs`
into `optimizer.rs` and `plan.rs` and introduces a bunch of helper
structures to model finding and using an index to perform a seek + scan.
## Examples
Here are some examples of multi-column seeks:
### Example table setup:
```sql
sqlite> CREATE TABLE t(a,b,c,d,e);
sqlite> CREATE INDEX abc ON t (a,b,c);
-- create 10000 rows with random values between 0-9 for all columns
sqlite >INSERT INTO t SELECT ABS(RANDOM() % 10),ABS(RANDOM() % 10),ABS(RANDOM() % 10),ABS(RANDOM() % 10),ABS(RANDOM() % 10) FROM generate_series(1,10000,1);
```
### Example bytecode plans, results and timings vs main branch:
```sql
limbo> EXPLAIN SELECT * FROM t WHERE a = 5 and b = 6 and c = 7;
addr  opcode             p1    p2    p3    p4             p5  comment
----  -----------------  ----  ----  ----  -------------  --  -------
0     Init               0     20    0                    0   Start at 20
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     Integer            7     8     0                    0   r[8]=7
8     SeekGE             1     19    6                    0   key=[6..8]
9       IdxGT            1     19    6                    0   key=[6..8]
10      DeferredSeek     1     0     0                    0
11      Column           0     0     1                    0   r[1]=t.a
12      Column           0     1     2                    0   r[2]=t.b
13      Column           0     2     3                    0   r[3]=t.c
14      Column           0     3     4                    0   r[4]=t.d
15      Column           0     4     5                    0   r[5]=t.e
16      ResultRow        1     5     0                    0   output=r[1..5]
17    NextAsync          1     0     0                    0
18    NextAwait          1     9     0                    0
19    Halt               0     0     0                    0
20    Transaction        0     0     0                    0   write=false
21    Goto               0     1     0                    0

limbo> SELECT * FROM t WHERE a = 5 and b = 6 and c = 7;
5|6|7|9|9
5|6|7|4|7
5|6|7|3|2
5|6|7|3|7
5|6|7|5|2
5|6|7|5|3
5|6|7|9|7

runtime (debug build, this branch): total: 2 ms (this includes parsing/coloring of cli app)
runtime (debud build, main branch): total: 67 ms (this includes parsing/coloring of cli app)

```
```sql
limbo> EXPLAIN SELECT * FROM t WHERE a = 5 and b = 6 and c < 7;
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     SeekGT             1     20    6                    0   key=[6..8]
9       Integer          7     8     0                    0   r[8]=7
10      IdxGE            1     20    6                    0   key=[6..8]
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

limbo> SELECT * FROM t WHERE a = 5 and b = 6 and c < 7;
5|6|0|0|3
5|6|0|5|1
5|6|0|3|1
5|6|0|6|3
5|6|0|8|1
5|6|0|2|7
5|6|0|9|9
5|6|0|5|3
5|6|0|4|2
5|6|0|4|2
5|6|0|0|2
5|6|0|7|2
5|6|1|8|5
5|6|1|7|5
5|6|1|7|2
5|6|1|1|2
5|6|1|6|5
5|6|1|1|5
5|6|1|5|7
5|6|1|1|9
5|6|1|4|3
5|6|1|1|2
5|6|1|2|2
5|6|1|4|4
5|6|1|9|6
5|6|1|2|5
5|6|1|2|4
5|6|1|7|1
5|6|2|0|9
5|6|2|6|9
5|6|2|4|5
5|6|2|9|3
5|6|2|5|2
5|6|2|9|0
5|6|2|7|1
5|6|3|6|5
5|6|3|8|5
5|6|3|5|4
5|6|3|5|2
5|6|3|1|1
5|6|3|2|0
5|6|3|9|3
5|6|3|6|9
5|6|3|7|6
5|6|3|3|5
5|6|3|0|8
5|6|3|6|4
5|6|4|1|1
5|6|4|9|8
5|6|4|3|7
5|6|4|1|3
5|6|4|8|9
5|6|4|9|7
5|6|4|7|9
5|6|4|8|8
5|6|4|3|1
5|6|4|2|6
5|6|4|5|7
5|6|4|2|6
5|6|4|4|3
5|6|5|2|4
5|6|5|6|7
5|6|5|3|8
5|6|5|7|8
5|6|5|9|6
5|6|5|2|7
5|6|5|1|7
5|6|5|0|6
5|6|6|2|4
5|6|6|9|4
5|6|6|4|9
5|6|6|5|6
5|6|6|2|2
5|6|6|0|6

runtime (debug build, this branch): total: 9 ms (this includes parsing/coloring of cli app)
runtime (debug build, main branch): total: 71 ms (this includes parsing/coloring of cli app)

```
```sql
limbo> EXPLAIN SELECT * FROM t WHERE a = 5 and b = 6 and c < 7 ORDER BY a desc, b desc, c desc;
addr  opcode             p1    p2    p3    p4             p5  comment
----  -----------------  ----  ----  ----  -------------  --  -------
0     Init               0     20    0                    0   Start at 20
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     Integer            7     8     0                    0   r[8]=7
8     SeekLT             1     19    6                    0   key=[6..8]
9       IdxLT            1     19    6                    0   key=[6..7]
10      DeferredSeek     1     0     0                    0
11      Column           0     0     1                    0   r[1]=t.a
12      Column           0     1     2                    0   r[2]=t.b
13      Column           0     2     3                    0   r[3]=t.c
14      Column           0     3     4                    0   r[4]=t.d
15      Column           0     4     5                    0   r[5]=t.e
16      ResultRow        1     5     0                    0   output=r[1..5]
17    PrevAsync          1     0     0                    0
18    PrevAwait          1     0     0                    0
19    Halt               0     0     0                    0
20    Transaction        0     0     0                    0   write=false
21    Goto               0     1     0                    0

limbo> SELECT * FROM t WHERE a = 5 and b = 6 and c < 7 ORDER BY a desc, b desc, c desc;
5|6|6|0|6
5|6|6|2|2
5|6|6|5|6
5|6|6|4|9
5|6|6|9|4
5|6|6|2|4
5|6|5|0|6
5|6|5|1|7
5|6|5|2|7
5|6|5|9|6
5|6|5|7|8
5|6|5|3|8
5|6|5|6|7
5|6|5|2|4
5|6|4|4|3
5|6|4|2|6
5|6|4|5|7
5|6|4|2|6
5|6|4|3|1
5|6|4|8|8
5|6|4|7|9
5|6|4|9|7
5|6|4|8|9
5|6|4|1|3
5|6|4|3|7
5|6|4|9|8
5|6|4|1|1
5|6|3|6|4
5|6|3|0|8
5|6|3|3|5
5|6|3|7|6
5|6|3|6|9
5|6|3|9|3
5|6|3|2|0
5|6|3|1|1
5|6|3|5|2
5|6|3|5|4
5|6|3|8|5
5|6|3|6|5
5|6|2|7|1
5|6|2|9|0
5|6|2|5|2
5|6|2|9|3
5|6|2|4|5
5|6|2|6|9
5|6|2|0|9
5|6|1|7|1
5|6|1|2|4
5|6|1|2|5
5|6|1|9|6
5|6|1|4|4
5|6|1|2|2
5|6|1|1|2
5|6|1|4|3
5|6|1|1|9
5|6|1|5|7
5|6|1|1|5
5|6|1|6|5
5|6|1|1|2
5|6|1|7|2
5|6|1|7|5
5|6|1|8|5
5|6|0|7|2
5|6|0|0|2
5|6|0|4|2
5|6|0|4|2
5|6|0|5|3
5|6|0|9|9
5|6|0|2|7
5|6|0|8|1
5|6|0|6|3
5|6|0|3|1
5|6|0|5|1
5|6|0|0|3

runtime (debug build, this branch): total: 9 ms (this includes parsing/coloring of cli app)
runtime (debug build, main branch): total: 71 ms (this includes parsing/coloring of cli app)
```

Closes #1288
2025-04-11 09:36:25 +03:00
Pekka Enberg
2752c77cc2 Merge 'simulator: Add Bug Database(BugBase)' from Alperen Keleş
Previously, simulator used `tempfile` for storing the resulting
interaction plans, database file, seeds, and all relevant information.
This posed the problem that this information became ephemeral, and we
were not able to properly use the results of previous runs for
optimizing future runs. This PR removes the CLI option `output_dir`,
bases the storage infrastructure on top of `BugBase` interface.

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

Closes #1276
2025-04-11 09:35:09 +03:00
Pekka Enberg
d67e1b604b Merge 'Added 'likelihood' scalar function' from Sachin Kumar Singh
The `likelihood(X,Y)` function returns argument X unchanged. The value Y
in likelihood(X,Y) must be a floating point constant between 0.0 and
1.0, inclusive.
```
sqlite> explain SELECT likelihood(42, 0.0);
addr  opcode         p1    p2    p3    p4             p5  comment
----  -------------  ----  ----  ----  -------------  --  -------------
0     Init           0     6     0                    0   Start at 6
1     Once           0     3     0                    0
2     Integer        42    2     0                    0   r[2]=42
3     Copy           2     1     0                    0   r[1]=r[2]
4     ResultRow      1     1     0                    0   output=r[1]
5     Halt           0     0     0                    0
6     Goto           0     1     0                    0
```
```
limbo> explain SELECT likelihood(42, 0.0);
addr  opcode             p1    p2    p3    p4             p5  comment
----  -----------------  ----  ----  ----  -------------  --  -------
0     Init               0     4     0                    0   Start at 4
1     Copy               2     1     0                    0   r[1]=r[2]
2     ResultRow          1     1     0                    0   output=r[1]
3     Halt               0     0     0                    0
4     Integer            42    2     0                    0   r[2]=42
5     Goto               0     1     0                    0
```

Closes #1303
2025-04-11 09:34:36 +03:00
Pekka Enberg
13516fd53d Merge 'feat: Add timediff data and time function' from Sachin Kumar Singh
This PR implemets the `timediff(A,B)` function, which returns a string
that describes the amount of time that must be added to B in order to
reach time A. I used sqlite's timediff function for format reference:
https://github.com/sqlite/sqlite/blob/master/src/date.c#L1694
Op-codes seems to be in order:
```
limbo> explain SELECT timediff('12:30:45.123', '12:30:44.987');
addr  opcode             p1    p2    p3    p4             p5  comment
----  -----------------  ----  ----  ----  -------------  --  -------
0     Init               0     6     0                    0   Start at 6
1     String8            0     2     0     12:30:45.123   0   r[2]='12:30:45.123'
2     String8            0     3     0     12:30:44.987   0   r[3]='12:30:44.987'
3     Function           0     2     1     timediff       0   r[1]=func(r[2..3])
4     ResultRow          1     1     0                    0   output=r[1]
5     Halt               0     0     0                    0
6     Goto               0     1     0                    0
```
```
sqlite> explain SELECT timediff('12:30:45.123', '12:30:44.987');
addr  opcode         p1    p2    p3    p4             p5  comment
----  -------------  ----  ----  ----  -------------  --  -------------
0     Init           0     8     0                    0   Start at 8
1     Once           0     5     0                    0
2     String8        0     3     0     12:30:45.123   0   r[3]='12:30:45.123'
3     String8        0     4     0     12:30:44.987   0   r[4]='12:30:44.987'
4     Function       3     3     2     timediff(2)    0   r[2]=func(r[3..4])
5     Copy           2     1     0                    0   r[1]=r[2]
6     ResultRow      1     1     0                    0   output=r[1]
7     Halt           0     0     0                    0
8     Goto           0     1     0                    0
```
My first PR, I just followed the [contributing guides](https://github.co
m/tursodatabase/limbo/blob/main/CONTRIBUTING.md) and started.

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

Closes #1302
2025-04-11 09:34:04 +03:00
Sachin Singh
23ab387143 handle formatting issues 2025-04-11 09:59:27 +05:30
Pekka Enberg
2f428b7dcc Merge 'Fix overwrite cell with size less than cell size' from Pere Diaz Bou
We cannot simply paste a new payload into a cell with a payload with
less size because we need to track fragmentation + free blocks. Let's
keep it simple by only overwriting if size is the same.
Btw I feel like update is not re-entrant.

Reviewed-by: Preston Thorpe (@PThorpe92)

Closes #1301
2025-04-11 07:17:53 +03:00
Sachin Singh
01fa02364d correctly handle edge cases 2025-04-11 08:34:29 +05:30
Sachin Singh
5ffdd42f12 Additional tests 2025-04-11 06:02:07 +05:30
Sachin Singh
482e93bfd0 feat: add likelihood scalar function 2025-04-11 05:54:23 +05:30
Sachin Singh
05b4b7b9f1 edit compat.md 2025-04-11 04:41:59 +05:30
Sachin Singh
ded308ccfa additional tests 2025-04-11 04:40:09 +05:30
Sachin Singh
b7acfa490c feat: add timediff data and time function 2025-04-11 04:30:57 +05:30
Pere Diaz Bou
745c2b92d0 unnecessary dirty set on overwrite 2025-04-10 22:24:15 +02:00
Pere Diaz Bou
038d78f096 overwrite when payload is equal size as current cell only
Prevoiusly we would overwrite even though size less than cell size. This
was wrong because it didn't update any fragment size or free blocks it
could. To be safe let's just overwrite only if local size is the same
amount.
2025-04-10 22:24:15 +02:00
Pere Diaz Bou
506c1a236c find_free_cell fix use of no_offset writes 2025-04-10 22:24:15 +02:00
Pekka Enberg
17b206297e Merge 'Emit ANSI codes only when tracing is outputting to terminal' from Preston Thorpe
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>

Closes #1289
2025-04-10 20:54:21 +03:00
Pekka Enberg
ef893da6c7 Merge 'core/btree: Add PageContent::new() helper' from Pekka Enberg
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>

Closes #1294
2025-04-10 20:53:41 +03:00
Pekka Enberg
a27126cd05 Merge 'B-Tree code cleanups' from Pekka Enberg
Reviewed-by: Pere Diaz Bou <pere-altea@homail.com>

Closes #1290
2025-04-10 20:53:33 +03:00
Jussi Saurio
4daad0a858 Fix bug: accidentally skipped index selection for other tables except first found 2025-04-10 18:57:14 +03:00
Pekka Enberg
1d748de273 Merge 'btree index selection on rightmost pointer in balance_non_root' from Pere Diaz Bou
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>

Closes #1297
2025-04-10 18:39:51 +03:00
Pekka Enberg
712a4caa22 stress: Fix per-thread query generation 2025-04-10 18:39:20 +03:00
Pere Diaz Bou
62d0febdb6 panic on corruption 2025-04-10 16:01:24 +02:00
Pere Diaz Bou
b35d805a81 tracing lock stress 2025-04-10 16:01:24 +02:00
Pere Diaz Bou
8e93471d00 fix cell index selection while balancing
Cell index doesn't move in `move_to` unless we don't need to check next
cell. On the other hand, with rightmost pointer, we advance cell index
by 1 even though where we are moving to was to that page
2025-04-10 16:01:24 +02:00
Pere Diaz Bou
4755acb571 init tracing in stress tool 2025-04-10 16:01:24 +02:00
Pere Diaz Bou
0c4e56ecf9 Merge 'Add support to load log file with stress test' from Pere Diaz Bou
run with: `RUST_BACKTRACE=1 cargo run -p limbo_stress -- -t 1 -l`
and then if you want to repeat same plan: `RUST_BACKTRACE=1 cargo run -p
limbo_stress -- -t 1 -L`

Closes #1296
2025-04-10 16:01:11 +02:00
Jussi Saurio
457bded14d optimizer: refactor optimizer to support multicolumn index scans 2025-04-10 15:53:02 +03:00
Jussi Saurio
afad06fb23 vdbe/explain: add key info to Seek/Idx insns 2025-04-10 15:06:45 +03:00
Jussi Saurio
3d1b4c5292 test/fuzz: modify compound index scan fuzz to utilize both pk columns in where clause 2025-04-10 15:06:18 +03:00
Pere Diaz Bou
cdcbcafbdd clipppy 2025-04-10 13:46:40 +02:00
Pere Diaz Bou
f795a9e331 Add support to load log file with stress test 2025-04-10 13:41:10 +02:00
Jussi Saurio
579d04f521 Merge 'io/linux: make syscallio the default (io_uring is really slow)' from Jussi Saurio
context: https://github.com/tursodatabase/limbo/issues/1275

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

Closes #1295
2025-04-10 13:55:06 +03:00
Jussi Saurio
60a13c129f io/linux: make syscallio the default (io_uring is really slow) 2025-04-10 13:32:26 +03:00
Pekka Enberg
53633e8b6f core/btree: Add PageContent::new() helper 2025-04-10 13:14:38 +03:00
Pekka Enberg
6ffa9cf56a Merge 'Stress improvements' from Pekka Enberg
Closes #1292
2025-04-10 12:18:53 +03:00
Pekka Enberg
277efeb5ee Merge 'VDBE code cleanups' from Pekka Enberg
Closes #1291
2025-04-10 12:10:22 +03:00
Pekka Enberg
3fd378cf9f Fix Antithesis Dockerfile to include JavaScript bindings 2025-04-10 12:08:31 +03:00
Pekka Enberg
441cd637b5 stress: Make database file configurable 2025-04-10 11:59:25 +03:00
Pekka Enberg
c4d983bcfe stress: Log SQL statements to a file 2025-04-10 11:59:25 +03:00
Pekka Enberg
39cee1b146 stress: Increase default number of iterations 2025-04-10 11:59:25 +03:00