SQLite

Timeline
Login

50 most recent check-ins

2026-08-11
14:50
Fix a problem in fts5 secure-delete code that could lead to a buffer overrun when dealing with a strategically corrupted database. Problem reported by YEONBA. (leaf check-in: 34171bee08 ... user: dan tags: branch-3.53)
14:16
Fix a problem in fts5 secure-delete code that could lead to a buffer overrun when dealing with a strategically corrupted database. Problem reported by YEONBA. (leaf check-in: 9cd4f9e920 ... user: dan tags: trunk)
10:46
Update preprocessor logic in test file fts5_tcl.c to use intptr_t when available. (check-in: fee71cd6f7 ... user: dan tags: trunk)
2026-08-10
21:08
Merge the latest trunk enhancements into the reuse-schema. (leaf check-in: cacf8d167d ... user: drh tags: reuse-schema)
20:51
Merge the latest trunk enhancements into the bedrock branch via wal2. (leaf check-in: 2137918d6a ... user: drh tags: bedrock)
20:46
Merge the latest trunk enhancements into the wal2 branch (leaf check-in: 78f78edbb7 ... user: drh tags: wal2)
20:39
Merge the latest trunk enhancements into the begin-concurrent branch (leaf check-in: cf07387f1f ... user: drh tags: begin-concurrent)
20:17
Performance improvement and size reduction in the vdbeRecordCompareInt() routine. (check-in: 15f719dde4 ... user: drh tags: trunk)
20:05
Performance improvement and size reduction in the OP_MakeRecord opcode. (check-in: 8b1f492374 ... user: drh tags: trunk)
19:54
Update the threaded-bytecode-experiment branch to include all the latest trunk changes. (leaf check-in: 9582383b40 ... user: drh tags: threaded-bytecode-experiment)
19:49
Add "include <stdint.h>" to test file fts5_tcl.c. (check-in: 9cf3f0079a ... user: dan tags: trunk)
19:38
Add an assert() to demonstrate that an arithmetic right-shift is being used where it is needed. (closed check-in: cce760dc6b ... user: drh tags: branchless-int-compare)
18:07
Fix the logic for big-endian CPUs. Add comments on how to test various limbs of the logic. (closed check-in: cf49f4fc96 ... user: drh tags: optimized-makerecord)
16:27
Fix the logic to prevent buffer overruns. (check-in: 82a8332ed9 ... user: drh tags: optimized-makerecord)
15:57
When comparing row values that are sub-selects, do not consider the collation sequences of the expressions returned by the sub-select when determining the collation sequences to use for the comparisons. i.e. in "(a, b)=(SELECT c, d)", do not consider the collation sequences of "c" or "d". Fix for problem 2026-08-09T09:33:49Z. (check-in: 88580851be ... user: dan tags: trunk)
15:36
Experimental changes to improve performance of the OP_MakeRecord opcode, and especially the code the writes integer content into the record. This change is not yet 100% correct. It is a work in progress. Parking on a branch because I need to stop and work on other things. (check-in: fa8dd2af6d ... user: drh tags: optimized-makerecord)
12:56
Make this optimization available to MSVC in addition to GCC. (check-in: 648ab3f7ae ... user: drh tags: branchless-int-compare)
12:45
Remove some stray debug output and obsolete bug-hunting comments. No functional changes. (check-in: 41443d5ffe ... user: stephan tags: trunk)
12:41
Merge the sqlite3Get8byte() enhancement from trunk (check-in: 661d0c7104 ... user: drh tags: branchless-int-compare)
12:41
Expose the sqlite3_backup APIs to JavaScript. (check-in: fa17d89f76 ... user: stephan tags: trunk)
12:35
Disable Module.instantiateWasm() in node builds to match branch-3.53's behavior. Fix a sqlite3_backup test (duplicate finalize). The aforementioned world-breaking bug was caused by my browser having gotten into a funky state and needing a restart. (closed check-in: 7d77bb0886 ... user: stephan tags: js-backup-bindings)
12:29
Replace the EIGHT_BYTE_U64 macro with the in-line function sqlite3Get8byte() which is more efficient cross-platform. (check-in: 9492183f2f ... user: drh tags: trunk)
12:18
Add tests for the sqlite3_backup JS bindings but they are disabled while tracking down an unrelated problem which prevents those tests from working (most of the sqlite3.capi methods are being mis-mapped to the sqlite3InitModule function for reasons unimaginable). (check-in: cb610a8a87 ... user: stephan tags: js-backup-bindings)
11:51
Fix a circular dep generated by mkwasmbuilds.c (check-in: f2514ace13 ... user: stephan tags: js-backup-bindings)
11:23
Merge trunk into the js-backup-bindings branch. (check-in: 692c4e8ad8 ... user: stephan tags: js-backup-bindings)
2026-08-09
19:03
Decode fixed-width integer serial types in vdbeRecordCompareInt() with a single eight-byte read and an arithmetic shift, replacing a switch that predicts poorly on mixed-width integer keys. (check-in: fad1a762e1 ... user: jeffchen tags: branchless-int-compare)
18:43
Hybrid full direct-threaded and for-loop designs. (check-in: 812968bda4 ... user: drh tags: threaded-bytecode-experiment)
16:22
Code and comment restructuring for clarity. Not much logic change. This version clearly shows that SQLITE_THREADED_BYTECODE=2 is faster than the default, though larger, while SQLITE_THREADED_BYTECODE=1 is slower and larger still. Unclear yet why that is the case. (check-in: 250d059db9 ... user: drh tags: threaded-bytecode-experiment)
09:51
Fix the SQLITE_THREADED_BYTECODE==1 case so that it uses local dispatch at the end of each opcode, rather than looping. Curiously, this makes the code both larger and slower. It seems like we should use only the SQLITE_THREADED_BYTECODE==2 case. (check-in: 2db8dab73e ... user: drh tags: threaded-bytecode-experiment)
09:29
Makefile working on MSVC (check-in: 4df67b7425 ... user: drh tags: threaded-bytecode-experiment)
2026-08-08
22:57
This is an attempt to use the labels as values feature of gcc to implement token-threaded bytecode. Inspired by Forum 2026-08-08T10:14:30Z but a completely different implementation. Shows only about half the performance gain. Still contains bugs. Experimental. Work-in-progress. (check-in: cce83bf9e9 ... user: drh tags: threaded-bytecode-experiment)
20:29
Remove unused variable from pragma.c. (check-in: 7e3ad0dcde ... user: dan tags: trunk)
19:47
Change the way fts5 test code casts between integers and pointers to avoid a ubsan error in some versions of gcc. Report 2026-08-08T15:54:04Z. (check-in: d275eb5b63 ... user: dan tags: trunk)
09:58
Improve the performance of the OP_Column opcode of the bytecode engine by in-lining the call to sqlite3VdbeSerialGet(). (check-in: d2dd7b3b13 ... user: drh tags: trunk)
2026-08-07
19:11
Fix a comment typo. Remove an unused function prototype. (closed check-in: b08d213daf ... user: drh tags: opcol-inline-ints)
18:41
Fix a harmless UBSAN warning. (check-in: eb492208fc ... user: drh tags: opcol-inline-ints)
18:18
Change the order of two operations in the REAL decoded in OP_Column for a small performance boost. (check-in: d3ab3da024 ... user: drh tags: opcol-inline-ints)
15:09
Code simplifications. This check-in actually gives up a few CPU cycles relative to the previous, according to speedtest.tcl, but not many. And in exchange, the binary is smaller. The branch has a whole is still much faster than trunk. (check-in: 20f50ea9c6 ... user: drh tags: opcol-inline-ints)
13:38
Fix a problem causing sessions module conflict handling to malfunction when used with a database handle configured with sqlite3_extended_result_codes(). On this branch, problem first appeared in [919d393a3b] and was released as part of 3.53.3. (check-in: f1731d8300 ... user: dan tags: branch-3.53)
13:33
Fix a problem introduced by [32c762bbb1] causing sessions module conflict handling to malfunction when used with a database handle configured with sqlite3_extended_result_codes(). Also ensure the "session_eec" permutation, which would have detected this, is run as part of release testing. (check-in: 8b3da5d6ce ... user: dan tags: trunk)
11:14
Further optimization to OP_Column along the lines of the prior check-in. (check-in: a4b3021d1f ... user: drh tags: opcol-inline-ints)
05:31
Lower the range of inputs accepted by the pstack allocator to address /bugs/4dbd096fe335f974. (check-in: fafefb5948 ... user: stephan tags: trunk)
00:00
Performance optimization in OP_Column: decode serial types 0 through 6, 8, and 9 (NULL and all integer widths) inline in a switch, avoiding the call and dispatch overhead of sqlite3VdbeSerialGet(). The wide-integer cases 5 and 6 add bulk, but omitting them would leave those types paying the switch miss plus the original call. Other serial types are decoded as before. (check-in: cf829cc21b ... user: jeffchen tags: opcol-inline-ints)
2026-08-06
17:20
Fix a hyperlink typo in the Lemon documentation (check-in: ee8ef5cd4e ... user: drh tags: trunk)
17:19
If the %token_destructor exists for a Lemon parser, then invoke it to delete the token after a stack reallocation failure. Forum 2026-08-06T16:33:31Z (leaf check-in: 5667cb4a5a ... user: drh tags: lemon-token-destructor)
2026-08-05
15:40
Merge in the errant wasm-updates branch, caused by developer PEBKAC. (check-in: 75d3343fa3 ... user: stephan tags: trunk)
15:30
Fix a compiler warning that comes up in gcc 4.0.1 for target powerpc-apple-darwin9 (check-in: 90fe33d9ed ... user: drh tags: trunk)
15:00
Strip out 42kb of ext/wasm/libcmpp.c (build tool) by using a destilled build shorn of the capabilities we don't use in this tree, like #pipe and loadable modules. (closed check-in: 3ec42b829e ... user: stephan tags: wasm-updates)
14:00
Small performance improvement and size reduction in the page cache. (check-in: 2c3ae5b8e1 ... user: drh tags: trunk)
13:29
Avoid an integer divide on the page-cache lookup fast path. The hash table size in pcache1 is always a power of two, so the bucket index in pcache1FetchNoMutex() can be computed with a mask instead of a modulo. An assert() verifies the power-of-two invariant in debug builds. (closed check-in: 750c37d404 ... user: jeffchen tags: jeffchen-opt-page-cache-lookup)
More ↓