Commit Graph

354 Commits

Author SHA1 Message Date
Pekka Enberg
b0d27c90aa Turso 0.2.0-pre.11 2025-09-29 18:11:59 +03:00
Pekka Enberg
f4bf635129 Merge 'javascript: Rename "browser" packages to "wasm"' from Pekka Enberg
Closes #3417
2025-09-29 18:11:30 +03:00
Pekka Enberg
57c279e2b0 javascript: Rename "browser" packages to "wasm" 2025-09-29 17:02:34 +03:00
Nikita Sivukhin
70e18ce3f7 validate zero limit at the beginning in the VDBE program
- before, we validated that condition during program emit - which works for fixed values of parameters but doesn't work with variables provided externally to the prepared statement
2025-09-29 15:32:36 +04:00
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 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