Pekka Enberg
2f38d2ef04
Turso 0.2.0-pre.10
2025-09-27 16:52:35 +03:00
Pekka Enberg
92291ed736
Merge 'Fix offset variable handling' from Nikita Sivukhin
...
Before, db generated incorrect plan in case when offset parameter were
introduced as variable:
```
turso> EXPLAIN SELECT * FROM users LIMIT ? OFFSET ?;
addr opcode p1 p2 p3 p4 p5 comment
---- ----------------- ---- ---- ---- ------------- -- -------
0 Init 0 16 0 0 Start at 16
1 Variable 1 1 0 0 r[1]=parameter(1); OFFSET expr
2 MustBeInt 1 0 0 0
3 Variable 2 2 0 0 r[2]=parameter(2); OFFSET expr
4 MustBeInt 2 0 0 0
5 OffsetLimit 1 3 2 0 if r[1]>0 then r[3]=r[1]+max(0,r[2]) else r[3]=(-1)
6 OpenRead 0 2 0 0 table=users, root=2, iDb=0
7 Rewind 0 15 0 0 Rewind table users
8 Variable 2 2 0 0 r[2]=parameter(2); OFFSET expr
9 MustBeInt 2 0 0 0
10 IfPos 2 14 1 0 r[2]>0 -> r[2]-=1, goto 14
11 Column 0 0 4 0 r[4]=users.x
12 ResultRow 4 1 0 0 output=r[4]
13 DecrJumpZero 1 15 0 0 if (--r[1]==0) goto 15
14 Next 0 8 0 0
15 Halt 0 0 0 0
16 Transaction 0 1 1 0 iDb=0 tx_mode=Read
17 Goto 0 1 0 0
```
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>
Closes #3360
2025-09-27 08:20:54 +03:00
Preston Thorpe
ddbedecace
Merge 'fix encryption config in the sync-client' from Nikita Sivukhin
...
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>
Closes #3379
2025-09-26 19:01:27 -04:00
Pekka Enberg
222ab125c1
Turso 0.2.0-pre.9
2025-09-26 19:00:14 +03:00
Nikita Sivukhin
fe4bfb7c88
fix encryption config in the sync-client
2025-09-26 19:29:37 +04:00
Nikita Sivukhin
5bf69350b3
add simple tests for offset/limit binding
2025-09-26 18:06:20 +04:00
Nikita Sivukhin
a0c47b98b8
fix test
2025-09-26 17:42:11 +04:00
Nikita Sivukhin
52f3216211
fix avg aggregation
...
- ignore NULL rows as SQLite do
- emit NULL instead of NaN when no rows were aggregated
- adjust agg column alias name
2025-09-26 17:11:06 +04:00
Pekka Enberg
f8130d051f
Merge 'Fix JavaScript bindings' from Nikita Sivukhin
...
This PR makes all JS db packages to have uniform interface: `new
Database(...)` constructor with explicit `connect()` and `close()`
methods.
Also, this PR adds docstrings in the code and properly support few
better-sqlite options (readonly, fileMustExist, timeout)
Closes #3334
2025-09-25 17:24:03 +03:00
Nikita Sivukhin
27a7f7faa7
fix clippy
2025-09-25 12:12:39 +04:00
Nikita Sivukhin
3c0b04b530
fix clippy
2025-09-25 12:08:10 +04:00
Nikita Sivukhin
a938bdcf09
fix exec to run over multiple statements in the string
2025-09-25 12:03:52 +04:00
Nikita Sivukhin
ddfa77997d
adjust sync package napi-rs code
2025-09-25 10:54:50 +04:00
Nikita Sivukhin
f8d077c24b
replace cell with mutex
2025-09-25 10:54:31 +04:00
Nikita Sivukhin
6fe5a0b61e
add comments and small test adjustments
2025-09-25 10:52:18 +04:00
Nikita Sivukhin
d08bcb6a17
adjust sync package
2025-09-25 10:52:05 +04:00
Nikita Sivukhin
afbfa98a8d
adjust sync native package
2025-09-24 18:43:50 +04:00
Nikita Sivukhin
28c9850b57
properly guard access to the private fields
2025-09-24 17:24:27 +04:00
Nikita Sivukhin
cd9cf71568
cleanup napi-rs bindings Rust code
2025-09-24 17:06:52 +04:00
Nikita Sivukhin
2ccd50ad69
add explicit async connect method to the database instance
2025-09-24 17:06:23 +04:00
Nikita Sivukhin
a5c2d5beb7
get rid of global module variable - otherwise there will be a race when both database-browser and sync-browser are used
2025-09-24 12:01:27 +04:00
Pekka Enberg
f72600431b
Turso 0.2.0-pre.8
2025-09-24 09:08:34 +03:00
Nikita Sivukhin
1faafdb57e
use wasm-runtime from NPM instead of patched sources
2025-09-23 12:28:16 +04:00
Pekka Enberg
f6e3beda45
Turso 0.2.0-pre.7
Build & publish @tursodatabase/database / db-bindings-wasm32-wasip1-threads - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / db-bindings-x86_64-pc-windows-msvc - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / db-bindings-x86_64-unknown-linux-gnu - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-aarch64-apple-darwin - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-aarch64-unknown-linux-gnu - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-x86_64-unknown-linux-gnu - node@20 (push) Waiting to run
Python / configure-strategy (push) Waiting to run
Python / test (push) Blocked by required conditions
Build & publish @tursodatabase/database / sync-bindings-wasm32-wasip1-threads - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-x86_64-pc-windows-msvc - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / Test DB bindings on Linux-x64-gnu - node@20 (push) Blocked by required conditions
Build & publish @tursodatabase/database / Publish (push) Blocked by required conditions
Python / lint (push) Waiting to run
Python / linux (x86_64) (push) Waiting to run
Python / macos-arm64 (aarch64) (push) Waiting to run
Python / sdist (push) Waiting to run
Python / Release (push) Blocked by required conditions
Rust / test-sqlite (push) Waiting to run
Rust / cargo-fmt-check (push) Waiting to run
Rust / build-native (blacksmith-4vcpu-ubuntu-2404) (push) Waiting to run
Rust / build-native (macos-latest) (push) Waiting to run
Rust / build-native (windows-latest) (push) Waiting to run
Rust / clippy (push) Waiting to run
Rust / simulator (push) Waiting to run
Rust / test-limbo (push) Waiting to run
Rust Benchmarks+Nyrkiö / bench (push) Waiting to run
Rust Benchmarks+Nyrkiö / clickbench (push) Waiting to run
Rust Benchmarks+Nyrkiö / tpc-h-criterion (push) Waiting to run
Rust Benchmarks+Nyrkiö / tpc-h (push) Waiting to run
Rust Benchmarks+Nyrkiö / vfs-bench-compile (push) Waiting to run
2025-09-22 20:44:08 +03:00
Pekka Enberg
26f90257a6
Turso 0.2.0-pre.6
2025-09-22 11:44:21 +03:00
Pekka Enberg
f4b0fb17f7
Turso 0.2.0-pre.5
2025-09-22 11:34:22 +03:00
Pekka Enberg
fbad158213
Turso 0.2.0-pre.4
2025-09-22 09:15:55 +03:00
Nikita Sivukhin
c24e5219d2
remove log file
2025-09-19 14:24:42 +04:00
Nikita Sivukhin
cfc8728774
fix clippy
2025-09-19 14:15:04 +04:00
Nikita Sivukhin
7049f3ddae
fix clock implementation for OPFS IO
2025-09-19 13:21:00 +04:00
Nikita Sivukhin
bc2dbe9025
fix bug
2025-09-19 13:21:00 +04:00
Nikita Sivukhin
1d3c823c7b
wip
2025-09-19 13:19:30 +04:00
Nikita Sivukhin
66de28d84b
wip
2025-09-19 13:19:30 +04:00
Nikita Sivukhin
e68b642f4f
set longPollTimeoutMs from js bindings
2025-09-19 13:19:30 +04:00
Nikita Sivukhin
83303b8c5b
properly guard access to the sync engine with locks
2025-09-19 13:19:30 +04:00
Nikita Sivukhin
acc536d542
use global opfs IO in the sync
2025-09-19 13:19:30 +04:00
Nikita Sivukhin
974feac27b
move compute to the main thread for browser and node
...
- now, most of the work is happening on the main thread
- for database in browser, we still have dedicated WebWorker - but it is used only for OPFS access and only for that
- for syn in browser we still offload sync operations to the WebWorker
2025-09-19 13:19:30 +04:00
pedrocarlo
3c91ae206b
move as many dependencies as possible to workspace to avoid multiple versions of the same dependency
2025-09-15 17:19:36 -03:00
Nikita Sivukhin
9b5656d4dc
fix stats method
2025-09-15 11:05:49 +04:00
Nikita Sivukhin
23e8204bfc
yarn build
2025-09-15 10:57:03 +04:00
Nikita Sivukhin
e8b076ebe5
export SyncEngineStats type
2025-09-15 10:56:44 +04:00
Nikita Sivukhin
527d0cb1f3
expose revision in the stats method
2025-09-15 10:56:13 +04:00
Nikita Sivukhin
ebf042cf6b
refine error message
2025-09-15 10:55:43 +04:00
Nikita Sivukhin
aa65c910bf
fix sync-browser bug and add more tests
2025-09-15 10:55:01 +04:00
Pekka Enberg
5df05e05f8
Turso 0.2.0-pre.3
2025-09-12 18:40:06 +03:00
Nikita Sivukhin
99759b9efd
fix wasm-runtime package.json
2025-09-12 19:28:30 +04:00
Pekka Enberg
2651b597c6
Turso 0.2.0-pre.2
2025-09-12 17:38:30 +03:00
Jussi Saurio
b5f3da100b
Merge 'fix CI for apple builds' from Nikita Sivukhin
...
Build & publish @tursodatabase/database / db-bindings-wasm32-wasip1-threads - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / db-bindings-x86_64-pc-windows-msvc - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / db-bindings-x86_64-unknown-linux-gnu - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-aarch64-apple-darwin - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-aarch64-unknown-linux-gnu - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-wasm32-wasip1-threads - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-x86_64-pc-windows-msvc - node@20 (push) Waiting to run
Python / sdist (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-x86_64-unknown-linux-gnu - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / Test DB bindings on Linux-x64-gnu - node@20 (push) Blocked by required conditions
Build & publish @tursodatabase/database / Publish (push) Blocked by required conditions
Python / Release (push) Blocked by required conditions
Python / macos-arm64 (aarch64) (push) Waiting to run
Python / configure-strategy (push) Waiting to run
Python / test (push) Blocked by required conditions
Python / lint (push) Waiting to run
Python / linux (x86_64) (push) Waiting to run
Rust / cargo-fmt-check (push) Waiting to run
Rust / build-native (blacksmith-4vcpu-ubuntu-2404) (push) Waiting to run
Rust / build-native (macos-latest) (push) Waiting to run
Rust / build-native (windows-latest) (push) Waiting to run
Rust / clippy (push) Waiting to run
Rust / simulator (push) Waiting to run
Rust / test-limbo (push) Waiting to run
Rust / test-sqlite (push) Waiting to run
Rust Benchmarks+Nyrkiö / tpc-h (push) Waiting to run
Rust Benchmarks+Nyrkiö / bench (push) Waiting to run
Rust Benchmarks+Nyrkiö / clickbench (push) Waiting to run
Rust Benchmarks+Nyrkiö / tpc-h-criterion (push) Waiting to run
Rust Benchmarks+Nyrkiö / vfs-bench-compile (push) Waiting to run
Intel MAC builds were removed in https://github.com/tursodatabase/turso/
commit/3547bd10931e030a372bedb4968404301c2936c6 but arm builds were
broken after that.
This PR returns back proper ARM builds for Apple
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>
Closes #3054
2025-09-12 16:19:05 +03:00
Jussi Saurio
6559f23f85
Merge 'hack imports of wasm due to the issues in Vite and Next.js build systems' from Nikita Sivukhin
...
This tries to establish smooth as possible experience for browser
packages in web.
In order to do that this PR do the following tricks:
1. export `./vite` entry-point which should be used like `import {
connect } from "@tursodatabase/database-browser/vite"` for Vite bundler
* This entrypoint has fix for the issue
https://github.com/vitejs/vite/issues/8427 which breaks package in the
dev-server mode
* In order to overcome this we do 2 tricks:
- Inline WASM module in order to avoid loading it from the separate
file
- Use same file as entry-point for main thread and for the web
worker
* Note, that we do these tricks only for `development` build and
produce build will be chunked and optimized as usual with Vite and will
treat worker and WASM modules as separate fiels
3. export `./turbopack` entry-point which should be used like `import {
connect } from @tursodatabase/database-browser/turbopack"` for Turbopack
(Next.js) bundler
* This entrypoint has fix for the issue
https://github.com/vercel/next.js/issues/82520 '
* In order to overcome this for now we always inline WASM for Next.js
4. Bundle browser libraries in order to easily consume them without need
for bundlers:
* e.g. `import { connect } from
"https://unpkg.com/@tursodatabase/database-browser/bundle/main.es.js ";`
5. We vendor `@napi-rs/wasm-runtime` for now in order to fix runtime
errors due to accesses to `process.env.NODE_DEBUG_NATIVE` env var (not
defined in web)
* This should be very temporary solution because I already fixed
wasm-util dependency which cause this error
(https://github.com/toyobayashi/wasm-util/issues/4 ) and hope that napi-
rs PR will be merged soon: https://github.com/napi-rs/napi-rs/pull/2921
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>
Closes #3017
2025-09-12 16:18:47 +03:00
Nikita Sivukhin
ab6c1bd8c7
use arm target for apply builds
2025-09-12 16:50:02 +04:00