Skip to content

Conversation

arv
Copy link
Contributor

@arv arv commented Oct 10, 2025

We now have 4 sqlite kv store related exports

  • @rocicorp/zero/sqlite - Exports utility functions for creating new sqlite based stores.
  • @rocicorp/zero/expo-sqlite - Exports an implementation of the kv store using expo-sqlite.
  • @rocicorp/zero/op-sqlite - Exports an implementation of the kv store using @op-engineering/op-sqlite.
  • @rocicorp/zero/react-native - Deprecated, use @rocicorp/zero/expo-sqlite instead.

We now have 4 sqlite kv store related exports

`@rocicorp/zero/sqlite` - Exports utility functions for creating new
sqlite based stores.
`@rocicorp/zero/expo-sqlite` - Exports an implementation of the
kv store using `expo-sqlite`.
`@rocicorp/zero/op-sqlite` - Exports an implementation of the
kv store using `@op-engineering/op-sqlite`.
`@rocicorp/zero/react-native` - Deprecated, use `expo-sqlite` instead.
@arv arv requested a review from 0xcadams October 10, 2025 10:12
Copy link

vercel bot commented Oct 10, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
replicache-docs Ready Ready Preview Comment Oct 10, 2025 1:47pm
zbugs Error Error Comment Oct 10, 2025 1:47pm

Copy link

github-actions bot commented Oct 10, 2025

🐰 Bencher Report

Brancharv/split-sqlite-zero
Testbedself-hosted

🚨 1 Alert

BenchmarkMeasure
Units
ViewBenchmark Result
(Result Δ%)
Lower Boundary
(Limit %)
zpg: scan with one depth relatedThroughput
operations / second (ops/s)
📈 plot
🚷 threshold
🚨 alert (🔔)
403.07 ops/s
(-4.68%)Baseline: 422.88 ops/s
404.53 ops/s
(100.36%)

Click to view all benchmark results
BenchmarkThroughputBenchmark Result
operations / second (ops/s)
(Result Δ%)
Lower Boundary
operations / second (ops/s)
(Limit %)
zpg: (pk lookup) select * from track where id = 3163📈 view plot
🚷 view threshold
983.62 ops/s
(-1.64%)Baseline: 999.98 ops/s
917.12 ops/s
(93.24%)
zpg: (secondary index lookup) select * from track where album_id = 248📈 view plot
🚷 view threshold
1,073.79 ops/s
(+1.78%)Baseline: 1,055.01 ops/s
973.26 ops/s
(90.64%)
zpg: (table scan) select * from album📈 view plot
🚷 view threshold
743.32 ops/s
(+5.44%)Baseline: 704.97 ops/s
631.86 ops/s
(85.01%)
zpg: OR with empty branch and limit📈 view plot
🚷 view threshold
901.66 ops/s
(-1.08%)Baseline: 911.54 ops/s
825.57 ops/s
(91.56%)
zpg: OR with empty branch and limit with exists📈 view plot
🚷 view threshold
752.95 ops/s
(-0.92%)Baseline: 759.96 ops/s
677.65 ops/s
(90.00%)
zpg: all playlists📈 view plot
🚷 view threshold
5.51 ops/s
(+0.16%)Baseline: 5.50 ops/s
5.37 ops/s
(97.55%)
zpg: scan with one depth related📈 view plot
🚷 view threshold
🚨 view alert (🔔)
403.07 ops/s
(-4.68%)Baseline: 422.88 ops/s
404.53 ops/s
(100.36%)

zql: (pk lookup) select * from track where id = 3163📈 view plot
🚷 view threshold
126,133.08 ops/s
(+3.17%)Baseline: 122,253.24 ops/s
109,540.80 ops/s
(86.85%)
zql: (secondary index lookup) select * from track where album_id = 248📈 view plot
🚷 view threshold
2,102.27 ops/s
(-2.61%)Baseline: 2,158.66 ops/s
2,013.56 ops/s
(95.78%)
zql: (table scan) select * from album📈 view plot
🚷 view threshold
6,766.59 ops/s
(+2.66%)Baseline: 6,590.98 ops/s
6,335.14 ops/s
(93.62%)
zql: OR with empty branch and limit📈 view plot
🚷 view threshold
58,941.76 ops/s
(+5.58%)Baseline: 55,828.34 ops/s
45,915.89 ops/s
(77.90%)
zql: OR with empty branch and limit with exists📈 view plot
🚷 view threshold
12,858.31 ops/s
(+4.31%)Baseline: 12,327.48 ops/s
11,268.11 ops/s
(87.63%)
zql: all playlists📈 view plot
🚷 view threshold
4.36 ops/s
(+2.18%)Baseline: 4.26 ops/s
4.01 ops/s
(91.99%)
zql: edit for limited query, inside the bound📈 view plot
🚷 view threshold
223,825.12 ops/s
(+1.89%)Baseline: 219,676.08 ops/s
207,211.61 ops/s
(92.58%)
zql: edit for limited query, outside the bound📈 view plot
🚷 view threshold
210,984.41 ops/s
(-2.07%)Baseline: 215,443.73 ops/s
193,024.74 ops/s
(91.49%)
zql: push into limited query, inside the bound📈 view plot
🚷 view threshold
110,064.29 ops/s
(+0.47%)Baseline: 109,546.83 ops/s
107,448.54 ops/s
(97.62%)
zql: push into limited query, outside the bound📈 view plot
🚷 view threshold
412,014.25 ops/s
(-3.51%)Baseline: 426,988.80 ops/s
394,915.60 ops/s
(95.85%)
zql: push into unlimited query📈 view plot
🚷 view threshold
328,446.27 ops/s
(-2.32%)Baseline: 336,243.24 ops/s
314,414.68 ops/s
(95.73%)
zql: scan with one depth related📈 view plot
🚷 view threshold
494.83 ops/s
(+4.03%)Baseline: 475.68 ops/s
441.64 ops/s
(89.25%)
zqlite: (pk lookup) select * from track where id = 3163📈 view plot
🚷 view threshold
41,927.32 ops/s
(-1.21%)Baseline: 42,442.36 ops/s
40,844.02 ops/s
(97.42%)
zqlite: (secondary index lookup) select * from track where album_id = 248📈 view plot
🚷 view threshold
10,125.86 ops/s
(+0.28%)Baseline: 10,097.77 ops/s
9,894.96 ops/s
(97.72%)
zqlite: (table scan) select * from album📈 view plot
🚷 view threshold
1,427.26 ops/s
(+7.22%)Baseline: 1,331.11 ops/s
1,248.72 ops/s
(87.49%)
zqlite: OR with empty branch and limit📈 view plot
🚷 view threshold
17,646.54 ops/s
(-2.24%)Baseline: 18,051.40 ops/s
17,349.51 ops/s
(98.32%)
zqlite: OR with empty branch and limit with exists📈 view plot
🚷 view threshold
5,547.26 ops/s
(+2.26%)Baseline: 5,424.81 ops/s
5,180.18 ops/s
(93.38%)
zqlite: all playlists📈 view plot
🚷 view threshold
1.45 ops/s
(+3.50%)Baseline: 1.40 ops/s
1.32 ops/s
(91.32%)
zqlite: edit for limited query, inside the bound📈 view plot
🚷 view threshold
118,036.65 ops/s
(+0.44%)Baseline: 117,521.75 ops/s
111,500.74 ops/s
(94.46%)
zqlite: edit for limited query, outside the bound📈 view plot
🚷 view threshold
121,077.57 ops/s
(+0.87%)Baseline: 120,028.83 ops/s
113,275.68 ops/s
(93.56%)
zqlite: push into limited query, inside the bound📈 view plot
🚷 view threshold
3,900.64 ops/s
(+1.67%)Baseline: 3,836.64 ops/s
3,707.59 ops/s
(95.05%)
zqlite: push into limited query, outside the bound📈 view plot
🚷 view threshold
149,582.22 ops/s
(+4.03%)Baseline: 143,785.92 ops/s
136,103.77 ops/s
(90.99%)
zqlite: push into unlimited query📈 view plot
🚷 view threshold
131,322.46 ops/s
(+6.39%)Baseline: 123,438.04 ops/s
111,456.54 ops/s
(84.87%)
zqlite: scan with one depth related📈 view plot
🚷 view threshold
163.23 ops/s
(+0.34%)Baseline: 162.67 ops/s
153.49 ops/s
(94.03%)
🐰 View full continuous benchmarking report in Bencher

Copy link

github-actions bot commented Oct 10, 2025

🐰 Bencher Report

Brancharv/split-sqlite-zero
TestbedLinux
Click to view all benchmark results
BenchmarkFile SizeBenchmark Result
kilobytes (KB)
(Result Δ%)
Upper Boundary
kilobytes (KB)
(Limit %)
zero-package.tgz📈 view plot
🚷 view threshold
1,374.46 KB
(+0.12%)Baseline: 1,372.78 KB
1,400.24 KB
(98.16%)
zero.js📈 view plot
🚷 view threshold
225.67 KB
(0.00%)Baseline: 225.67 KB
230.19 KB
(98.04%)
zero.js.br📈 view plot
🚷 view threshold
63.05 KB
(0.00%)Baseline: 63.05 KB
64.31 KB
(98.04%)
🐰 View full continuous benchmarking report in Bencher

Copy link

github-actions bot commented Oct 10, 2025

🐰 Bencher Report

Brancharv/split-sqlite-zero
Testbedself-hosted
Click to view all benchmark results
BenchmarkThroughputBenchmark Result
operations / second (ops/s) x 1e3
(Result Δ%)
Lower Boundary
operations / second (ops/s) x 1e3
(Limit %)
src/size-of-value.bench.ts > getSizeOfValue performance > arrays > large array (100 items)📈 view plot
🚷 view threshold
1,680.90 ops/s x 1e3
(-0.62%)Baseline: 1,691.32 ops/s x 1e3
1,623.15 ops/s x 1e3
(96.56%)
src/size-of-value.bench.ts > getSizeOfValue performance > arrays > small array (10 items)📈 view plot
🚷 view threshold
5,463.43 ops/s x 1e3
(+0.88%)Baseline: 5,416.01 ops/s x 1e3
5,180.01 ops/s x 1e3
(94.81%)
src/size-of-value.bench.ts > getSizeOfValue performance > datasets > large dataset (100x512B)📈 view plot
🚷 view threshold
85.58 ops/s x 1e3
(+9.43%)Baseline: 78.20 ops/s x 1e3
62.44 ops/s x 1e3
(72.97%)
src/size-of-value.bench.ts > getSizeOfValue performance > datasets > small dataset (10x256B)📈 view plot
🚷 view threshold
751.69 ops/s x 1e3
(+7.87%)Baseline: 696.86 ops/s x 1e3
566.18 ops/s x 1e3
(75.32%)
src/size-of-value.bench.ts > getSizeOfValue performance > objects > nested object📈 view plot
🚷 view threshold
3,335.26 ops/s x 1e3
(+3.52%)Baseline: 3,221.80 ops/s x 1e3
2,865.35 ops/s x 1e3
(85.91%)
src/size-of-value.bench.ts > getSizeOfValue performance > objects > structured object (1KB)📈 view plot
🚷 view threshold
4,099.47 ops/s x 1e3
(+5.88%)Baseline: 3,871.68 ops/s x 1e3
3,293.55 ops/s x 1e3
(80.34%)
src/size-of-value.bench.ts > getSizeOfValue performance > objects > structured object (256B)📈 view plot
🚷 view threshold
4,037.48 ops/s x 1e3
(+5.37%)Baseline: 3,831.87 ops/s x 1e3
3,266.96 ops/s x 1e3
(80.92%)
src/size-of-value.bench.ts > getSizeOfValue performance > primitives > boolean📈 view plot
🚷 view threshold
7,687.10 ops/s x 1e3
(+2.46%)Baseline: 7,502.66 ops/s x 1e3
7,094.99 ops/s x 1e3
(92.30%)
src/size-of-value.bench.ts > getSizeOfValue performance > primitives > integer📈 view plot
🚷 view threshold
7,530.56 ops/s x 1e3
(+0.41%)Baseline: 7,499.90 ops/s x 1e3
7,133.88 ops/s x 1e3
(94.73%)
src/size-of-value.bench.ts > getSizeOfValue performance > primitives > null📈 view plot
🚷 view threshold
7,890.00 ops/s x 1e3
(+4.25%)Baseline: 7,568.09 ops/s x 1e3
7,080.83 ops/s x 1e3
(89.74%)
src/size-of-value.bench.ts > getSizeOfValue performance > primitives > string (100 chars)📈 view plot
🚷 view threshold
1,120.21 ops/s x 1e3
(+0.44%)Baseline: 1,115.34 ops/s x 1e3
1,066.99 ops/s x 1e3
(95.25%)
🐰 View full continuous benchmarking report in Bencher

Copy link

github-actions bot commented Oct 10, 2025

🐰 Bencher Report

Brancharv/split-sqlite-zero
Testbedself-hosted
Click to view all benchmark results
BenchmarkThroughputBenchmark Result
operations / second (ops/s) x 1e3
(Result Δ%)
Lower Boundary
operations / second (ops/s) x 1e3
(Limit %)
src/client/custom.bench.ts > big schema📈 view plot
🚷 view threshold
902.31 ops/s x 1e3
(+9.31%)Baseline: 825.46 ops/s x 1e3
652.16 ops/s x 1e3
(72.28%)
src/client/zero.bench.ts > basics > All 1000 rows x 10 columns (numbers)📈 view plot
🚷 view threshold
2.84 ops/s x 1e3
(+1.05%)Baseline: 2.81 ops/s x 1e3
2.67 ops/s x 1e3
(94.27%)
src/client/zero.bench.ts > pk compare > pk = N📈 view plot
🚷 view threshold
43.00 ops/s x 1e3
(-1.55%)Baseline: 43.68 ops/s x 1e3
41.61 ops/s x 1e3
(96.76%)
src/client/zero.bench.ts > with filter > Lower rows 500 x 10 columns (numbers)📈 view plot
🚷 view threshold
4.11 ops/s x 1e3
(-1.57%)Baseline: 4.17 ops/s x 1e3
4.01 ops/s x 1e3
(97.76%)
🐰 View full continuous benchmarking report in Bencher

"zero-solid": "0.0.0",
"zqlite": "0.0.0"
},
"peerDependencies": {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome

Copy link
Member

@0xcadams 0xcadams left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM with some minor tweaks

@0xcadams
Copy link
Member

(and cyclical dependency?)

@arv arv disabled auto-merge October 11, 2025 18:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants