Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
467 commits
Select commit Hold shift + click to select a range
23380a5
make next truly async and non blocking
pedrocarlo Oct 2, 2025
818a68b
ignore busy errors for `test_concurrent_unique_constraint_regression`
pedrocarlo Oct 2, 2025
22e9896
Refactor INSERT translation to a modular setup with emitter context
PThorpe92 Oct 14, 2025
d3bb8be
Run SQLite integrity check after stress test run
pedrocarlo Oct 14, 2025
20bdb11
fix clippy warnings
PThorpe92 Oct 14, 2025
792877d
add doc comments to InsertEmitCtx
PThorpe92 Oct 14, 2025
9dac7e0
relax check in the vector test
sivukhin Oct 14, 2025
a209718
Merge 'make comparison case sensitive' from Pavan Nambi
pereman2 Oct 14, 2025
427a145
fmt
sivukhin Oct 14, 2025
1a46466
Merge 'increment Changes() only once conditionally ' from Pavan Nambi
pereman2 Oct 14, 2025
aabc7b8
perf/throughput force sqlite to use fullfsync
pedrocarlo Oct 14, 2025
a6b0778
Merge 'Refactor INSERT translation to a modular setup with emitter co…
PThorpe92 Oct 14, 2025
74bbb0d
Merge 'Allow using indexes to iterate rows in UPDATE statements' from…
PThorpe92 Oct 14, 2025
e5a74b3
Merge 'relax check in the vector test' from Nikita Sivukhin
PThorpe92 Oct 14, 2025
2791f2f
Fix change counter incrementation
jussisaurio Oct 15, 2025
b1cb897
Merge 'Fix another "should have been rewritten" translation panic' fr…
jussisaurio Oct 15, 2025
0d8a3dd
Merge 'sql_generation: Fix implementation of LTValue and GTValue for …
jussisaurio Oct 15, 2025
ab2911b
Merge 'Fix change counter incrementation' from Jussi Saurio
penberg Oct 15, 2025
25cf56b
Fix expected error message
jussisaurio Oct 15, 2025
bae33cb
Avoid unwrapping failed f64 parsing attempts
jussisaurio Oct 15, 2025
d3aad90
Merge 'perf/throughput: force sqlite to use fullfsync' from Pedro Muniz
penberg Oct 15, 2025
4e6f373
Merge 'Fix: Evaluating expression in LIMIT and OFFSET clauses.' from
jussisaurio Oct 15, 2025
d3e8285
core/io: Never skip a completion in CompletionGroup::add()
penberg Oct 13, 2025
cdd6f6a
core/io: Fix completion group parent notification
penberg Oct 14, 2025
7ff427f
core/io: Fix completion group callback invocation for empty groups
penberg Oct 15, 2025
8087614
core/io: Add cancel() method to CompletionGroup
penberg Oct 13, 2025
07ba727
core/vdbe/sorter: Replace io_yield_many with completion groups
penberg Oct 13, 2025
986faa4
core/storage/pager: Replace io_yield_many with completion groups
penberg Oct 13, 2025
840d6a0
core/storage/btree: Replace io_yield_many with completion group in B-…
penberg Oct 13, 2025
ff7f462
core/vdbe/sorter: Replace IOCompletions::Many with completion group
penberg Oct 13, 2025
5fb93b8
core: Kill io_yield_many macro
penberg Oct 13, 2025
af3a90b
core: Kill Many variant from IOCompletions enum
penberg Oct 13, 2025
d7a7194
Fix: outer CTEs should be available in subqueries
jussisaurio Oct 15, 2025
8e107ab
slight reorder of operations
sivukhin Oct 15, 2025
ae8adc0
faster extend_from_slice
sivukhin Oct 15, 2025
dba195b
avoid allocations
sivukhin Oct 15, 2025
a6a5ffd
move read_varint_fast closer to the read_varint impl
sivukhin Oct 15, 2025
f19c738
simplify serial_type size calculation
sivukhin Oct 15, 2025
c0fdaeb
move more possible option higher
sivukhin Oct 15, 2025
68650cf
alternative read_variant implementation
sivukhin Oct 15, 2025
7c91931
use heap-sort style algorithm for order by ... limit k queries
sivukhin Oct 14, 2025
1a24139
fix limit for order by queries with heap-sort style execution
sivukhin Oct 14, 2025
5868270
fix clippy
sivukhin Oct 14, 2025
b065e7d
emit Sequence column for heap-sort in order to distinguish between ro…
sivukhin Oct 14, 2025
a1260ca
implement Sequence opcodes for any type of cursors
sivukhin Oct 14, 2025
a2dbaaf
add explicit test for multiple rows heap-sort bug
sivukhin Oct 14, 2025
af4c1e8
use proper register for limit
sivukhin Oct 14, 2025
dd34f7f
wip
sivukhin Oct 14, 2025
4b3689e
avoid doing work in case of heap-sort optimization
sivukhin Oct 15, 2025
08f010b
Document ThreadSanitizer in CONTRIBUTING.md
penberg Oct 15, 2025
2df3d3e
add more tests
Pavan-Nambi Oct 15, 2025
6fe9ea0
Merge 'Make Rust bindings actually async' from Pedro Muniz
penberg Oct 15, 2025
4873103
Merge 'Fix: outer CTEs should be available in subqueries' from Jussi …
PThorpe92 Oct 15, 2025
48eb456
Accept SEED env var for all fuzz tests
PThorpe92 Oct 16, 2025
0ae53e6
Merge 'tests/fuzz: Accept SEED env var for all fuzz tests' from Prest…
PThorpe92 Oct 16, 2025
41d2a0a
Add INSERT OR IGNORE handling and refactor INSERT further
PThorpe92 Oct 16, 2025
3112f55
Add TCL tests for INSERT OR IGNORE handling
PThorpe92 Oct 16, 2025
2a1be48
do not run build.rs on debug mode
pedrocarlo Oct 16, 2025
012ac00
Merge 'Document ThreadSanitizer in CONTRIBUTING.md' from Pekka Enberg
penberg Oct 16, 2025
25339a5
rename: CheckConstraints -> ConstraintsToCheck
jussisaurio Oct 16, 2025
95f3757
refactor: move condition outside init_autoincrement
jussisaurio Oct 16, 2025
f8e8ed6
Merge 'Run SQLite integrity check after stress test run' from Pedro M…
penberg Oct 16, 2025
b64ce77
Merge 'core: Don't run build.rs in debug mode' from Pedro Muniz
penberg Oct 16, 2025
bf5de92
core: Unsafe Send and Sync pushdown
penberg Oct 16, 2025
a450a43
dist: Add Linux/arm64 target for install package
penberg Oct 16, 2025
e9c0fdc
Turso 0.3.0-pre.2
penberg Oct 16, 2025
56d5702
Fix: rolling back tx should set autocommit to true
jussisaurio Oct 16, 2025
4de36d2
deps: add tracing to rust bindings
jussisaurio Oct 16, 2025
6f1bda1
Instrument test_drop() with tracing
jussisaurio Oct 16, 2025
213af28
rust bindings: make Statement::query:row() finish execution
jussisaurio Oct 16, 2025
e8e583a
Default ON CONFLICT behavior should be ROLLBACK
jussisaurio Oct 16, 2025
7cc351a
Merge 'translate/insert: more refactoring and support INSERT OR IGNOR…
PThorpe92 Oct 16, 2025
1f70345
Merge 'core: Unsafe Send and Sync pushdown' from Pekka Enberg
PThorpe92 Oct 16, 2025
d77dd84
bindings/rust: rollback dangling tx on next access of DB, instead of …
jussisaurio Oct 16, 2025
57eb63c
core/bree: remove duplicated code in BTreeCursor
pereman2 Oct 16, 2025
455f0fb
Set in_progress to false AFTER executing the statement
jussisaurio Oct 16, 2025
3929322
Propagate DropBehavior to dangling_tx so DropBehavior makes sense
jussisaurio Oct 16, 2025
7728f3a
Update DropBehavior related documentation to reflect reality
jussisaurio Oct 16, 2025
a1b6eaf
Merge 'Fix: rolling back tx on Error should set autocommit to true' f…
jussisaurio Oct 16, 2025
08cd93c
Merge 'core/bree: remove duplicated code in BTreeCursor' from Pere Di…
penberg Oct 16, 2025
afa89c6
Merge 'Replace io_yield_many with completion groups' from Pekka Enberg
penberg Oct 16, 2025
44fa0a4
Merge 'bindings/rust: propagate the DropBehavior of a dropped tx to n…
jussisaurio Oct 16, 2025
6e34c50
Fix build after I/O many completions removal
penberg Oct 16, 2025
79e4176
Merge 'cli: .tables and .indexes to show data from attached tables as…
PThorpe92 Oct 16, 2025
9d4813d
Reduce Antithesis runtime to 4 hours
penberg Oct 16, 2025
bd33b3f
Throw parse error on CHECK constraint in create table
PThorpe92 Oct 16, 2025
f033af4
Throw parse error on CHECK constraint in create table when opening ne…
PThorpe92 Oct 16, 2025
e417188
Fix panic when selecting explicit rowid from FROM clause subquery
PThorpe92 Oct 16, 2025
959df4c
Add TCL test for rowid from clause subquery panic
PThorpe92 Oct 16, 2025
06dc2b5
Merge 'Throw parse error on CHECK constraint in create table' from Pr…
PThorpe92 Oct 16, 2025
b31908f
Merge 'translate/select: Fix rewriting Rowid expression when no btree…
PThorpe92 Oct 16, 2025
75e86b2
Throw parse error on GENERATED constraint in create table when openin…
PThorpe92 Oct 16, 2025
04c9eee
Throw parse error on GENERATED constraint when creating new table
PThorpe92 Oct 16, 2025
9de9927
fix clippy warning
PThorpe92 Oct 16, 2025
2ca388d
WAL: don't hold shared lock across IO operations
jussisaurio Oct 16, 2025
563c67d
Merge 'core/translate: throw parse error on unsupported GENERATED col…
PThorpe92 Oct 16, 2025
edaa1b6
Prevent column definitions on CREATE TABLE or opening DB with ON CONF…
PThorpe92 Oct 16, 2025
119984d
Merge 'Prevent on conflict column definitions on CREATE TABLE or open…
PThorpe92 Oct 16, 2025
10c69b9
Prevent ambiguous self-join table reference
PThorpe92 Oct 16, 2025
79c5234
Add TCL test for self ambiguous join
PThorpe92 Oct 16, 2025
ddd674c
Move duplicate table identifier checking to parse_join to allow for n…
PThorpe92 Oct 16, 2025
a82e8c9
Merge 'translate/select: prevent multiple identical non-aliased table…
PThorpe92 Oct 16, 2025
bae3a42
stress: prevent thread from holding write lock and then stopping
jussisaurio Oct 17, 2025
56e9ba9
Merge 'WAL: don't hold shared lock across IO operations' from Jussi S…
jussisaurio Oct 17, 2025
d187be7
antithesis-tests: don't create CHECK constraints
jussisaurio Oct 17, 2025
62fff37
Merge 'stress: prevent thread from holding write lock and then stoppi…
penberg Oct 17, 2025
2d05d06
Merge 'antithesis-tests: don't create CHECK constraints' from Jussi S…
penberg Oct 17, 2025
e3ec4f7
sql_generation: Add support for predefined columns
penberg Sep 8, 2025
0fcb0b8
sql_generation: Fix predicate evaluation for JOIN operations
penberg Sep 8, 2025
6f71059
tests: Add rowid alias fuzz test case
penberg Sep 7, 2025
3020966
Turso 0.3.0-pre.3
penberg Oct 17, 2025
00e6ed8
Merge 'tests: Add rowid alias fuzz test case' from Pekka Enberg
penberg Oct 17, 2025
e03f6db
core/storage: Reduce logging level
penberg Oct 17, 2025
b837232
Remove tests that alter testing.db from views.test
PThorpe92 Oct 18, 2025
4368137
Add couple small helper utilities to rewrite column fk definition
PThorpe92 Oct 18, 2025
4dcabf3
Fix to_sql method on BTreeTable to include foreign keys
PThorpe92 Oct 18, 2025
25aa2b7
Properly reparse and revalidate parent and child foreign keys when al…
PThorpe92 Oct 18, 2025
fe3a4de
Add TCL tests for altering columns that have foreign keys
PThorpe92 Oct 18, 2025
ba2570d
cli:scrolling and enable suggestion for wrong commands
Pavan-Nambi Oct 19, 2025
3658a94
fmt
Pavan-Nambi Oct 19, 2025
055b387
more keybindings
Pavan-Nambi Oct 19, 2025
aad3c00
clippy
Pavan-Nambi Oct 19, 2025
583f2b3
Merge 'cli: Improve manual page display' from Pavan Nambi
penberg Oct 20, 2025
e6c70f2
Merge 'core/storage: Reduce logging level' from Pekka Enberg
penberg Oct 20, 2025
591b436
tests/integration: Disable rowid alias differential fuzz test case
penberg Oct 20, 2025
931a2a4
Merge 'tests/integration: Disable rowid alias differential fuzz test …
penberg Oct 20, 2025
c81c062
Merge 'Remove tests that alter testing.db from views.test' from Prest…
penberg Oct 20, 2025
bebe230
Regression test: deferred FK violations are checked before commit
jussisaurio Oct 20, 2025
1053254
Fix: check deferred FK violations before committing to WAL
jussisaurio Oct 20, 2025
97991a1
Merge 'Fix deferred FK violations check before committing to WAL' fro…
penberg Oct 20, 2025
b00a276
add scoped locking for SharedWalFile to avoid holding locks for longe…
pedrocarlo Oct 19, 2025
ba9a1eb
add mutable scoped locking for SharedWalFile
pedrocarlo Oct 19, 2025
baf649a
add insert randomblob benchmark
pedrocarlo Oct 20, 2025
5d7b057
Enable turso_stress to run in Miri
rwpeterson Oct 17, 2025
2cb0a9b
Use read_unaligned with *u8 cast to *u32
rwpeterson Oct 20, 2025
a614b51
change randomblob generation to use thread_rng
pedrocarlo Oct 20, 2025
b92f4cb
Make Miri easier to run
rwpeterson Oct 20, 2025
f4da219
Merge 'Shared WAL lock scoping' from Pedro Muniz
penberg Oct 21, 2025
1151f49
Merge 'core/translate: fix ALTER COLUMN to propagate other constraint…
penberg Oct 21, 2025
f764f30
Merge 'Add Miri support for turso_stress, with bash scripts to run' f…
penberg Oct 21, 2025
948bd55
use simsimd for dense operations
sivukhin Oct 21, 2025
b67fabd
Fix git directory resolution in simulator to support worktrees
jussisaurio Oct 21, 2025
2483d08
do not allocate if possible
sivukhin Oct 21, 2025
6139dde
Revert "Merge 'core/translate: fix ALTER COLUMN to propagate other co…
penberg Oct 21, 2025
74d4dd5
Merge 'Fix git directory resolution in simulator to support worktrees…
penberg Oct 21, 2025
16d1398
Merge 'Switch random blob creation to `get_random`' from Pedro Muniz
penberg Oct 21, 2025
7c746e4
Fix to_sql method on BTreeTable to not double write primary keys
PThorpe92 Oct 21, 2025
05bd752
tests/integration: Reduce collation fuzz test iterations
penberg Oct 21, 2025
06e3b96
Add helpers to rewrite REFERENCES from foriegn keys in ColumnDefinition
PThorpe92 Oct 21, 2025
2fbd4b7
Ensure op_alter_column and Func::AlterColumn are fixing table referen…
PThorpe92 Oct 21, 2025
c48d7a0
Add tcl tests for alter column fixes
PThorpe92 Oct 21, 2025
08197e3
Fix cdc test to assert for correct schema output
PThorpe92 Oct 21, 2025
51c5d6a
Merge 'tests/integration: Reduce collation fuzz test iterations' from…
penberg Oct 21, 2025
a327747
organize completion code in a separate file
pedrocarlo Oct 21, 2025
d2d995a
Merge 'Make sure explicit column aliases have binding precedence in o…
penberg Oct 21, 2025
00e382a
avoid unnecessary allocations
sivukhin Oct 21, 2025
ea04e90
core/mvcc: add btree_cursor under MVCC cursor
pereman2 Oct 21, 2025
edac1ff
core/mvcc/cursor: set null flag
pereman2 Oct 21, 2025
790859c
core/mvcc/cursor: fix exists
pereman2 Oct 21, 2025
0fee588
core/mvcc/cursor: add record cursor
pereman2 Oct 21, 2025
3f41a09
core/mvcc/cursor: add next rowid lock
pereman2 Oct 21, 2025
8857604
core/mvcc/cursor: fix rewind
pereman2 Oct 21, 2025
92c0e74
core/mvcc/cursor: implement seek_to_last
pereman2 Oct 21, 2025
128b426
core/mvcc/cursor: imports
pereman2 Oct 21, 2025
edea108
Merge 'avoid unnecessary allocations' from Nikita Sivukhin
penberg Oct 21, 2025
177e4f3
Merge 'Move completion code to separate file' from Pedro Muniz
penberg Oct 21, 2025
792e003
fix tests and clippy
sivukhin Oct 21, 2025
eb835c3
Merge 'core/vdbe: fix ALTER COLUMN to propagate constraints to other …
penberg Oct 21, 2025
4805c6b
antithesis-tests: Don't fail tests on ProgrammingError
penberg Oct 21, 2025
8501bc9
use workspace rand version
pedrocarlo Oct 5, 2025
8c0b9c6
add additional `fill_bytes` method to `IO` to deterministically generate
pedrocarlo Oct 21, 2025
72baf48
add random generation in simulator IO
pedrocarlo Oct 21, 2025
10ead9f
one more clippy fix
sivukhin Oct 21, 2025
3227caa
Merge 'core: move BTreeCursor under MVCC cursor' from Pere Diaz Bou
pereman2 Oct 21, 2025
892fcc8
Handle TRUE|FALSE literal case for default column constraint in the p…
PThorpe92 Oct 22, 2025
2f401c0
Add regression tcl test for #3796 default bool col constraints
PThorpe92 Oct 22, 2025
9005458
Merge 'antithesis-tests: Don't fail tests on ProgrammingError' from P…
penberg Oct 22, 2025
1aad1b2
Merge 'core/io: Make random generation deterministically simulated' f…
penberg Oct 22, 2025
d45a8da
Merge 'parser: translate boolean values to literal when parsing colum…
penberg Oct 22, 2025
7d423d3
avoid unnecessary time measures
sivukhin Oct 22, 2025
bf77862
Merge branch 'main' into order-by-heap-sort
sivukhin Oct 22, 2025
671d266
Revert "wip"
sivukhin Oct 22, 2025
ffc601b
Merge 'Return better syntax error messages' from Diego Reis
jussisaurio Oct 22, 2025
1aba105
Merge 'Vector speedup' from Nikita Sivukhin
penberg Oct 22, 2025
29b400c
tests: Separate integration and fuzz tests
penberg Oct 22, 2025
da82868
github: Run fuzz tests in a separate workflow
penberg Oct 22, 2025
c944bd3
Merge 'tests: Separate integration and fuzz tests' from Pekka Enberg
penberg Oct 22, 2025
4ac45e0
Merge 'github: Run fuzz tests in a separate workflow' from Pekka Enberg
penberg Oct 22, 2025
b984ddf
Turso 0.3.0-pre.4
penberg Oct 22, 2025
123a26b
Add AtomicEnum macro macros crate
PThorpe92 Oct 17, 2025
a8b257c
Replace several RwLock<Enum> values with new AtomicEnums
PThorpe92 Oct 17, 2025
0fb149c
fix bug
sivukhin Oct 22, 2025
689c11a
cargo fmt
sivukhin Oct 22, 2025
5dd503b
core/storage: Cache schema cookie in Pager
penberg Oct 14, 2025
7b6667d
Merge 'Add AtomicEnum proc macro to generate atomic wrappers to repla…
penberg Oct 22, 2025
8e1cec5
Revert "alternative read_variant implementation"
sivukhin Oct 22, 2025
b32d22a
Revert "move more possible option higher"
sivukhin Oct 22, 2025
53957b6
Revert "simplify serial_type size calculation"
sivukhin Oct 22, 2025
91ffb4e
Revert "avoid allocations"
sivukhin Oct 22, 2025
a071d40
Revert "faster extend_from_slice"
sivukhin Oct 22, 2025
6aa67c6
Revert "slight reorder of operations"
sivukhin Oct 22, 2025
6557a41
Refactor emit_fk_violation() to always issue a FkCounter instruction
jussisaurio Oct 21, 2025
d4a9797
Store two foreign key counters in ProgramState
jussisaurio Oct 21, 2025
ad80285
Rename is_scope to deferred and invert respective boolean logic
jussisaurio Oct 21, 2025
459c01f
Add subjournal module
jussisaurio Oct 21, 2025
8b15a06
Add Savepoint struct
jussisaurio Oct 21, 2025
2a03c1a
Add subjournal and savepoints to Pager struct
jussisaurio Oct 21, 2025
77be1f0
Pager: add open_subjournal method
jussisaurio Oct 21, 2025
aa1eebb
Pager: add open_savepoint() and release_savepoint() methods
jussisaurio Oct 21, 2025
e8226c0
Pager: add clear_savepoint() method
jussisaurio Oct 21, 2025
5b01605
Pager: add subjournal_page_if_required() method
jussisaurio Oct 21, 2025
86d5ad6
pager: allow upserted cached page not to be dirty
jussisaurio Oct 21, 2025
a19c5c2
Pager: add rollback_to_newest_savepoint() method
jussisaurio Oct 21, 2025
f4af7c2
Pager: add begin_statement() method
jussisaurio Oct 21, 2025
97177da
add missing imports
jussisaurio Oct 21, 2025
a8cf8e4
Pager: subjournal page if required when it's marked as dirty
jussisaurio Oct 21, 2025
25f8ba0
Pager: clear savepoints when tx rolls back
jussisaurio Oct 21, 2025
734eeb5
VDBE: constraint errors do not cause a tx rollback by default
jussisaurio Oct 21, 2025
f0548c2
ProgramState: add begin_statement() and end_statement()
jussisaurio Oct 21, 2025
904cbe5
VDBE: handle subtransaction commits/aborts in op_halt
jussisaurio Oct 21, 2025
086ba8c
VDBE: begin statement subtransaction in op_transaction
jussisaurio Oct 21, 2025
97aad78
Allow dead code - SQLITE_CONSTRAINT_FOREIGNKEY is currently unused
jussisaurio Oct 21, 2025
1fdc025
Unignore fk_deferred_constraints_fuzz because it doesnt fail anymore
jussisaurio Oct 21, 2025
2d3ac79
Modify fk_deferred_constraints_fuzz
jussisaurio Oct 21, 2025
d8cc57c
clippy: Remove unnecessary referencing
jussisaurio Oct 21, 2025
1dcfd3d
fix stale test: constraint errors do not roll back tx anymore
jussisaurio Oct 21, 2025
e9bfb57
Fix incorrectly implemented test
jussisaurio Oct 21, 2025
7376475
Do not start statement subtransactions when MVCC is enabled
jussisaurio Oct 21, 2025
a14bbde
Add assertion that page is loaded when pager.add_dirty() is called
jussisaurio Oct 21, 2025
e04c6c9
Mark pages_to_balance as dirty only after loading
jussisaurio Oct 21, 2025
ea98d80
Change default ON CONFLICT mode back to ABORT now that we support it
jussisaurio Oct 21, 2025
fe51804
Implement crude way of making opening subtransaction conditional
jussisaurio Oct 21, 2025
2b73260
Handle cases where DB grows or shrinks due to savepoint rollback
jussisaurio Oct 22, 2025
c2b84f7
Randomly inject txn control statements into index_mutation_upsert_fuzz
jussisaurio Oct 22, 2025
418fc90
Merge 'core/storage: Cache schema cookie in Pager' from Pekka Enberg
penberg Oct 23, 2025
64560a6
Merge 'Support statement-level rollback via anonymous savepoints' fro…
jussisaurio Oct 23, 2025
ae22468
Merge 'Order by heap sort' from Nikita Sivukhin
jussisaurio Oct 23, 2025
c463bab
perf/throughput: Use connection per transaction in rusqlite benchmark
penberg Oct 23, 2025
23cddbc
Return null terminated strings from sqlite3_column_text
PThorpe92 Oct 23, 2025
8ed4e7c
Add test for null terminated string from sqlite3_column_text
PThorpe92 Oct 23, 2025
87069fd
core/storage: Fix WAL already enabled issue
penberg Oct 23, 2025
30d183c
bindings/javascript: Improve open error messages
penberg Oct 23, 2025
a024265
Merge 'Return null terminated strings from sqlite3_column_text' from …
PThorpe92 Oct 23, 2025
4c59f29
Merge 'core/storage: Fix WAL already enabled issue' from Pekka Enberg
penberg Oct 23, 2025
fc0f83e
Merge 'perf/throughput: Use connection per transaction in rusqlite be…
penberg Oct 23, 2025
5f0bbf1
Merge 'bindings/javascript: Improve open error messages' from Pekka E…
penberg Oct 24, 2025
ff83b82
docs: Add vector search section to database manual
penberg Oct 24, 2025
e8f009a
Merge 'docs: Add vector search section to database manual' from Pekka…
penberg Oct 24, 2025
64bbca9
Fix op_must_be_int to use strict numeric cast
bit-aloo Oct 18, 2025
b2769af
add test
bit-aloo Oct 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,27 @@ on:
- main

jobs:
run-long-tests:
run-fuzz-tests:
runs-on: blacksmith-4vcpu-ubuntu-2404
timeout-minutes: 30

steps:
- uses: actions/checkout@v3
- uses: useblacksmith/rust-cache@v3
with:
prefix-key: "v1-rust" # can be updated if we need to reset caches due to non-trivial change in the dependencies (for example, custom env var were set for single workspace project)
- name: Set up Python 3.10
uses: useblacksmith/setup-python@v6
with:
python-version: "3.10"
- name: Build
run: cargo build --verbose
- name: Run ignored long tests
run: cargo test --test fuzz_tests
env:
RUST_BACKTRACE: 1

run-long-fuzz-tests:
runs-on: blacksmith-4vcpu-ubuntu-2404
timeout-minutes: 30

Expand Down
143 changes: 143 additions & 0 deletions .github/workflows/java-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
name: Publish Java Bindings to Maven Central

on:
# Manually trigger the workflow
workflow_dispatch:

env:
working-directory: bindings/java

jobs:
# Build native libraries for each platform
build-natives:
strategy:
matrix:
include:
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
make-target: linux_x86
artifact-name: linux-x86_64
- os: macos-latest
target: x86_64-apple-darwin
make-target: macos_x86
artifact-name: macos-x86_64
- os: macos-latest
target: aarch64-apple-darwin
make-target: macos_arm64
artifact-name: macos-arm64
- os: ubuntu-latest
target: x86_64-pc-windows-gnu
make-target: windows
artifact-name: windows-x86_64

runs-on: ${{ matrix.os }}
timeout-minutes: 30

defaults:
run:
working-directory: ${{ env.working-directory }}

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}

- name: Verify and install Rust target
run: |
echo "Installing target: ${{ matrix.target }}"
rustup target add ${{ matrix.target }}
echo "Installed targets:"
rustup target list --installed
echo "Rust version:"
rustc --version

- name: Install cross-compilation tools (Windows on Linux)
if: matrix.target == 'x86_64-pc-windows-gnu'
run: |
sudo apt-get update
sudo apt-get install -y mingw-w64

- name: Build native library
run: make ${{ matrix.make-target }}

- name: Verify build output
run: |
echo "Build completed for ${{ matrix.target }}"
ls -lah libs/
find libs/ -type f

- name: Upload native library
uses: actions/upload-artifact@v4
with:
name: native-${{ matrix.artifact-name }}
path: ${{ env.working-directory }}/libs/
retention-days: 1

# Publish to Maven Central with all native libraries
publish:
needs: build-natives
runs-on: ubuntu-latest
timeout-minutes: 30

defaults:
run:
working-directory: ${{ env.working-directory }}

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '8'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3

- name: Install Rust (for test builds)
uses: dtolnay/rust-toolchain@stable

- name: Download all native libraries
uses: actions/download-artifact@v4
with:
pattern: native-*
path: ${{ env.working-directory }}/libs-temp
merge-multiple: true

- name: Organize native libraries
run: |
# Move downloaded artifacts to libs directory
rm -rf libs
mv libs-temp libs
echo "Native libraries collected:"
ls -R libs/

- name: Build test natives
run: make build_test

- name: Run tests
run: ./gradlew test

- name: Publish to Maven Central
env:
MAVEN_UPLOAD_USERNAME: ${{ secrets.MAVEN_UPLOAD_USERNAME }}
MAVEN_UPLOAD_PASSWORD: ${{ secrets.MAVEN_UPLOAD_PASSWORD }}
MAVEN_SIGNING_KEY: ${{ secrets.MAVEN_SIGNING_KEY }}
MAVEN_SIGNING_PASSPHRASE: ${{ secrets.MAVEN_SIGNING_PASSPHRASE }}
run: |
echo "Building, signing, and publishing to Maven Central..."
./gradlew clean publishToMavenCentral --no-daemon --stacktrace

- name: Upload bundle artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: maven-central-bundle
path: ${{ env.working-directory }}/build/maven-central/*.zip
retention-days: 7
165 changes: 165 additions & 0 deletions .github/workflows/perf_nightly.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
name: Nightly Benchmarks on Nyrkiö Runners (stability)

on:
workflow_dispatch:
branches: ["main", "notmain", "master"]
schedule:
- cron: '24 4 * * *'
push:
# branches: ["main", "notmain", "master"]
branches: ["notmain"]
pull_request:
# branches: ["main", "notmain", "master"]
branches: ["notmain"]

env:
CARGO_TERM_COLOR: never

jobs:
bench:
runs-on: nyrkio_perf_server_4cpu_ubuntu2404
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- uses: useblacksmith/setup-node@v5
with:
node-version: 20
# cache: 'npm'
# - name: Install dependencies
# run: npm install && npm run build

- name: Bench
run: make bench-exclude-tpc-h 2>&1 | tee output.txt
- name: Analyze benchmark result with Nyrkiö
uses: nyrkio/change-detection@HEAD
with:
name: nightly/turso
tool: criterion
output-file-path: output.txt

# What to do if a change is immediately detected by Nyrkiö.
# Note that smaller changes are only detected with delay, usually after a change
# persisted over 2-7 commits. Go to nyrkiö.com to view those or configure alerts.
# Note that Nyrkiö will find all changes, also improvements. This means fail-on-alert
# on pull events isn't compatible with this workflow being required to pass branch protection.
fail-on-alert: false
comment-on-alert: true
comment-always: true
# Nyrkiö configuration
# Get yours from https://nyrkio.com/docs/getting-started
nyrkio-token: ${{ secrets.NYRKIO_JWT_TOKEN }}
# HTTP requests will fail for all non-core contributors that don't have their own token.
# Don't want that to spoil the build, so:
never-fail: true
# Make results and change points public, so that any oss contributor can see them
nyrkio-public: true

# parameters of the algorithm. Note: These are global, so we only set them once and for all.
# Smaller p-value = less change points found. Larger p-value = more, but also more false positives.
nyrkio-settings-pvalue: 0.0001
# Ignore changes smaller than this.
nyrkio-settings-threshold: 0%

clickbench:
runs-on: nyrkio_perf_server_4cpu_ubuntu2404
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- uses: useblacksmith/setup-node@v5
with:
node-version: 20

- name: Clickbench
run: make clickbench

- name: Analyze TURSO result with Nyrkiö
uses: nyrkio/change-detection@HEAD
with:
name: nightly/clickbench/turso
tool: time
output-file-path: clickbench-tursodb.txt
# What to do if a change is immediately detected by Nyrkiö.
# Note that smaller changes are only detected with delay, usually after a change
# persisted over 2-7 commits. Go to nyrkiö.com to view those or configure alerts.
# Note that Nyrkiö will find all changes, also improvements. This means fail-on-alert
# on pull events isn't compatible with this workflow being required to pass branch protection.
fail-on-alert: false
comment-on-alert: true
comment-always: true
# Nyrkiö configuration
# Get yours from https://nyrkio.com/docs/getting-started
nyrkio-token: ${{ secrets.NYRKIO_JWT_TOKEN }}
# HTTP requests will fail for all non-core contributors that don't have their own token.
# Don't want that to spoil the build, so:
never-fail: true
# Make results and change points public, so that any oss contributor can see them
nyrkio-public: true

- name: Analyze SQLITE3 result with Nyrkiö
uses: nyrkio/change-detection@HEAD
with:
name: nightly/clickbench/sqlite3
tool: time
output-file-path: clickbench-sqlite3.txt
fail-on-alert: false
comment-on-alert: true
comment-always: false
nyrkio-token: ${{ secrets.NYRKIO_JWT_TOKEN }}
never-fail: true
nyrkio-public: true

tpc-h-criterion:
runs-on: nyrkio_perf_server_4cpu_ubuntu2404
timeout-minutes: 60
env:
DB_FILE: "perf/tpc-h/TPC-H.db"
steps:
- uses: actions/checkout@v3
- uses: useblacksmith/rust-cache@v3
with:
prefix-key: "v1-rust" # can be updated if we need to reset caches due to non-trivial change in the dependencies (for example, custom env var were set for single workspace project)

- name: Cache TPC-H
id: cache-primes
uses: useblacksmith/cache@v5
with:
path: ${{ env.DB_FILE }}
key: tpc-h
- name: Download TPC-H
if: steps.cache-primes.outputs.cache-hit != 'true'
env:
DB_URL: "https://github.com/lovasoa/TPCH-sqlite/releases/download/v1.0/TPC-H.db"
run: wget -O $DB_FILE --no-verbose $DB_URL

- name: Bench
run: cargo bench --bench tpc_h_benchmark 2>&1 | tee output.txt
- name: Analyze benchmark result with Nyrkiö
uses: nyrkio/change-detection@HEAD
with:
name: nightly/tpc-h
tool: criterion
output-file-path: output.txt

# What to do if a change is immediately detected by Nyrkiö.
# Note that smaller changes are only detected with delay, usually after a change
# persisted over 2-7 commits. Go to nyrkiö.com to view those or configure alerts.
# Note that Nyrkiö will find all changes, also improvements. This means fail-on-alert
# on pull events isn't compatible with this workflow being required to pass branch protection.
fail-on-alert: false
comment-on-alert: true
comment-always: true
# Nyrkiö configuration
# Get yours from https://nyrkio.com/docs/getting-started
nyrkio-token: ${{ secrets.NYRKIO_JWT_TOKEN }}
# HTTP requests will fail for all non-core contributors that don't have their own token.
# Don't want that to spoil the build, so:
never-fail: true
# Make results and change points public, so that any oss contributor can see them
nyrkio-public: true

# parameters of the algorithm. Note: These are global, so we only set them once and for all.
# Smaller p-value = less change points found. Larger p-value = more, but also more false positives.
nyrkio-settings-pvalue: 0.0001
# Ignore changes smaller than this.
nyrkio-settings-threshold: 0%

2 changes: 1 addition & 1 deletion .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:
- name: Test
env:
RUST_LOG: ${{ runner.debug && 'turso_core::storage=trace' || '' }}
run: cargo test --verbose --features checksum
run: cargo test --verbose --features checksum --test integration_tests
timeout-minutes: 20

clippy:
Expand Down
1 change: 1 addition & 0 deletions COMPAT.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ Turso aims to be fully compatible with SQLite, with opt-in features not supporte
| UPDATE | Yes | |
| VACUUM | No | |
| WITH clause | Partial | No RECURSIVE, no MATERIALIZED, only SELECT supported in CTEs |
| WINDOW functions | Partial | only default frame definition, no window-specific functions (rank() etc) |

#### [PRAGMA](https://www.sqlite.org/pragma.html)

Expand Down
Loading
Loading