SQLite

Timeline
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

100 most recent check-ins

2025-06-30
21:07
More aggressive optimization of addrHalt for RIGHT JOIN. (Leaf check-in: 5e51d1c0df user: drh tags: empty-table-optimizations)
20:19
Compute WhereLevel.addrBrk and .addrHalt early so that those labels can be used to abort loops early. Use this to improve performance on two more of the cases described by forum post 52651713ac. (check-in: 6fc0b9ac23 user: drh tags: empty-table-optimizations)
16:41
Strive to skip the evaluation of scalar subqueries that are part of a larger expression if the result from the scalar subquery does not change the result of the overall expression. (Leaf check-in: 0083d5169a user: drh tags: trunk)
15:56
Correct ~/.local/config/... to ~/.config/... when looking for sqliterc when XDG_CONFIG_HOME is not set. Internal doc touchups. (Leaf check-in: ebb346c5aa user: stephan tags: shell-xdg-vars)
15:21
Add support for using $XDG_STATE_HOME/sqlite_history or ~/.local/state/sqlite_history before fallback back to the historical default of ~/.sqlite_history. Update sqlite3.1 (man page) with the new semantics. (check-in: 6b780655cc user: stephan tags: shell-xdg-vars)
12:14
For all binary operators, try to avoid computing subquery operands if the other operand is NULL. (Closed-Leaf check-in: d86eb16283 user: drh tags: optimize-null-values)
11:46
Preliminary refactoring of the XDG_CONFIG_HOME support to support the pending addition of other XDG-configurable options. In response to forum post 31db1a23f9. (check-in: 69b9244e3a user: stephan tags: shell-xdg-vars)
11:04
Slightly smaller and faster version of the previous check-in. (check-in: f6e6fd02f4 user: drh tags: optimize-null-values)
11:01
Minor API doc typo fixes from brickviking. (Leaf check-in: 581a088df7 user: stephan tags: branch-3.50)
11:00
Minor API doc typo fixes from brickviking. (check-in: b48d951916 user: stephan tags: trunk)
10:30
Factor out the code that tries to avoid evaluating subquery operands if the other operand is NULL into a subroutine, so that it can be more easily reused by other parts of the code generator. (check-in: 3c6c71bcea user: drh tags: optimize-null-values)
2025-06-29
07:32
Minor API doc typo fixes from brickviking. (check-in: 45acc26bb0 user: stephan tags: branch-3.50)
07:32
Minor API doc typo fixes from brickviking. (check-in: c7cf9dcb69 user: stephan tags: trunk)
2025-06-28
17:59
Improve the bytecode generated for comparisons so that if one operand is a subquery and the other operand evaluates to NULL, the subquery operand is not even computed. This fixes 5 of the 11 slow queries described in forum post 52651713ac. (check-in: f147bc0477 user: drh tags: optimize-null-values)
14:36
Merge all the latest trunk fixes and enhancements into the reuse-schema branch. (Leaf check-in: 6e1f97d99b user: drh tags: reuse-schema)
14:35
Merge the 3.50.2 changes into the reuse-schema-3.50 branch. (Leaf check-in: b66f853a24 user: drh tags: reuse-schema-3.50)
14:30
Merge the latest trunk fixes and enhancements into the bedrock branch. (Leaf check-in: a6f6fbe617 user: drh tags: bedrock)
14:24
Merge the latest trunk enhancements into the wal2 branch. (Leaf check-in: e7867c3992 user: drh tags: wal2)
14:16
Merge the latest trunk enhancements into the begin-concurrent branch. (Leaf check-in: 1ae8d60237 user: drh tags: begin-concurrent)
14:00
Version 3.50.2 (check-in: 2af157d77f user: drh tags: release, branch-3.50, version-3.50.2)
2025-06-27
19:56
Raise an error right away if the number of aggregate terms in a query exceeds the maximum number of columns. (check-in: 4ae45291e6 user: drh tags: branch-3.50)
19:02
Raise an error right away if the number of aggregate terms in a query exceeds the maximum number of columns. (check-in: 5508b56fd2 user: drh tags: trunk)
12:51
API doc typo fixes and closing DD element tags from brickviking. (check-in: 6113572247 user: drh tags: branch-3.50)
12:46
API doc typo fixes and closing DD element tags from brickviking. (check-in: c9ddd15b01 user: stephan tags: trunk)
2025-06-26
18:57
Work around an apparent GCC UBSAN bug. See forum thread 1d7c25d4a2d for details. (check-in: 23056532e5 user: drh tags: trunk)
15:41
Minor API doc fixes sent off-list from brickviking. (check-in: a9e9cefd05 user: drh tags: branch-3.50)
2025-06-25
20:42
Minor API doc fixes sent off-list from brickviking. (check-in: cb4d05633a user: stephan tags: trunk)
2025-06-24
18:27
Similar fix to the previous check-in, but this time for sqlite3_preupdate_new(). (check-in: 9aaff764d5 user: drh tags: trunk)
15:58
Range check the column index on the sqlite3_preupdate_old() interface and return SQLITE_MISUSE if too large. Forum post b617e49728. (check-in: 6a5701e6c7 user: drh tags: trunk)
07:38
API doc typo fixes and one rephrasing improvement from brickviking. (check-in: 85e8060c47 user: stephan tags: trunk)
2025-06-23
19:38
Improve some of the error messages emitted by fts5 when it encounters corruption. (check-in: 48044a6b57 user: dan tags: trunk)
19:00
Fix an SQL typo introduced by the previous check-in. (check-in: 72a81d247b user: drh tags: trunk)
16:51
Escape the "_" character in LIKE patterns in the CLI. Forum post 6a89702f5d. (check-in: cf61cd359e user: drh tags: trunk)
13:42
Fix a harmless compiler warning injected by [c978aed3b6f82b3d]. (check-in: f46500247b user: drh tags: trunk)
13:28
Improved "statement aborts at ..." log-file messages that identify the trigger that caused the abort. (check-in: 7691264fe3 user: drh tags: trunk)
2025-06-22
22:48
Add the --disable-rpath configure script flag to address forum post 13cac3b56516f849. (check-in: a59d9bb25e user: stephan tags: trunk)
12:04
API doc typo fixes from brickviking. (check-in: 18e07f8f53 user: stephan tags: trunk)
2025-06-21
16:33
Minor JS test cleanups prompted by a linter. (check-in: 764235a3d1 user: stephan tags: trunk)
16:18
Remove some duplicated JS tests. (check-in: d1cb9ed79d user: stephan tags: trunk)
16:02
Reduce the maximum --size flag for JS kvvfs speedtest1 from 4 to 2, as --size 3 and 4 are overflowing the kvvfs storage limits. (check-in: b77b3adc82 user: stephan tags: trunk)
15:58
Give oo1.Stmt.get() similar treatment to [8c187140a60b]. This is an internal change only - the API is unaffected. (check-in: f5a7abc0a4 user: stephan tags: trunk)
15:38
Extend the SEE-via-kvvfs tests to include all three key types. (check-in: fc001aa5ee user: stephan tags: trunk)
14:38
Rework how JS's oo1.DB.exec() flags its Stmt objects to make certain Stmt APIs illegal (i.e. throwing) if called while that Stmt is being step()ped by DB.exec() (which can happen via client-provided per-result-row callbacks). This is an internal change only - the API is unaffected. Remove some unrelated dead code. (check-in: 8c187140a6 user: stephan tags: trunk)
06:07
Numerous small doc typo from BrickViking. (check-in: 3aab4415de user: stephan tags: trunk)
2025-06-20
13:12
Enhance sqlite3BtreeSetPageSize() so that it detects early if no changes are needed and exists with SQLITE_OK. (check-in: c978aed3b6 user: drh tags: trunk)
2025-06-19
20:19
Fix an out-of-order local variable declaration in ext/misc/fileio.c. (check-in: a88bb75288 user: drh tags: trunk)
20:00
Improve the accuracy of sqlite3BtreeRowCountEst(). (check-in: e553fb538e user: drh tags: trunk)
19:33
Generalize the indexCellCompare() so that works on any index page, not just the current page that a cursor is pointing to. (check-in: b305a7f5db user: drh tags: trunk)
13:48
Cherry-pick of documentation updates from trunk - no code changes. (check-in: c53906260e user: drh tags: branch-3.50)
12:35
A slight doc rephrasing for clarity, suggested in the forum. (check-in: 0d6084a398 user: stephan tags: trunk)
10:46
Doc typo fixes from forum post 0bce273669. (check-in: 8f97e3f00d user: stephan tags: trunk)
10:25
Expose the column metadata APIs to WASM (which does not require a non-default sqlite3.c build, contrary to my prior mistaken claims). This adds only 424 bytes to sqlite3.wasm and 660 bytes to sqlite3.js. (check-in: 3cf983816c user: stephan tags: trunk)
2025-06-18
19:04
Extend the pedantic enforcement of type in STRICT tables to cover VIRTUAL columns. (check-in: b734c74e55 user: drh tags: trunk)
16:17
Enforce judgmental typing on STORED generated columns for STRICT tables. Forum post 6caf195248. (check-in: 5e9279bff0 user: drh tags: trunk)
15:37
Export the column-metadata APIs to WASM. Doing so requires a non-default build of sqlite3.c, so this is a proof-of-concept branch saved just in case SQLITE_ENABLE_COLUMN_METADATA ever becomes the default for sqlite3.c. Edit: that was a misunderstanding on my part. This build increases the .wasm file by only 424 bytes and the JS by 660, so there's no blocker to merging this. (Closed-Leaf check-in: 59db3f639d user: stephan tags: wasm-column-metadata)
15:22
Add the --enable-column-metadata flag to the configure script (off by default). It's only available in the canonical build, not the autoconf build, because it changes how sqlite3.c gets generated. (check-in: 986b601db1 user: stephan tags: trunk)
14:17
Eliminate configure/build discrepancies in how 'make tclextension-...' works vs other makefile-side handling of the extension, conforming to the former. (check-in: 7ca545fd3b user: stephan tags: trunk)
14:14
Change the definition of SQLITE_DYNAMIC to a function that has exactly the same type as sqlite3_destructor_type, in an effort to work around possible legacy compiler bugs. (check-in: 83553edf78 user: drh tags: trunk)
11:11
Add the --tclConfig.sh FILE flag to buildtclext.tcl to eliminate the discrepancy between the configure-time-detected tclConfig.sh and the one auto-detected by the tclextension family of makefile targets. Add the tclextension-all target to run all of the various tclextension-... targets in their natural order to facilitate testing changes like this one. Update the --help text to note that --with-tclsh should only be used if there's a specific need, and that --with-tcl is generall preferred. This is in response to Termux ticket 23268. (check-in: 928976abcb user: stephan tags: trunk)
2025-06-17
20:50
tea: remove the vsatisfies 8.6- enforcement from the extension because at least one platform with tcl 8.6 is inexplicably failing it. Forum post fde857fb8101a4be (check-in: 7331e32a76 user: stephan tags: trunk)
19:32
Avoid writing frames with no checksums into the wal file if a savepoint is rolled back after dirty pages have already been spilled into the wal file. Also fix a corner case in the previous check-in on this branch. (check-in: c232fa2bfc user: drh tags: branch-3.50)
19:10
Avoid writing frames with no checksums into the wal file if a savepoint is rolled back after dirty pages have already been spilled into the wal file. (check-in: 5973f9b9aa user: drh tags: trunk)
18:57
Fix a corner-case for [9441fff52cc4e19c]. (check-in: 336a59eb3a user: drh tags: trunk)
18:17
Update walcksum.test so that it works with SQLITE_DEFAULT_AUTOVACUUM=1 builds. (Closed-Leaf check-in: 0da16f6c62 user: dan tags: forum-b490f726db-fix)
17:15
Extend [b5c6cb13cff5] to use a wildcard on darwin* because some OSes report a version number in the suffix. Forum post 0c4bbc2962dfb06e. (check-in: d960bd6f92 user: stephan tags: trunk)
14:56
Minor proj.tcl portability fixes and cleanups suggested in forum post 7b218c3c9f. Tested on Linux, Msys, Cygwin, and Haiku. (check-in: b5c6cb13cf user: stephan tags: trunk)
14:37
proj.tcl portability fixes and cleanups suggested in forum post 7b218c3c9f. Branching so that it can be tested on msys/cygwin/haiku before committing to it. (Closed-Leaf check-in: 89552e9137 user: stephan tags: linux-named-apple)
11:36
Avoid writing frames with no checksums into the wal file if a savepoint is rolled back after dirty pages have already been spilled into the wal file. Possible fix for forum post b490f726db. (check-in: 3a3269fe8e user: dan tags: forum-b490f726db-fix)
2025-06-16
18:04
Fix an issue going back to version 3.39.0 with transitive IS constraints in queries that make use of RIGHT JOIN. (check-in: 6c5f4c8af9 user: drh tags: branch-3.50)
17:36
Fix an issue going back to version 3.39.0 with transitive IS constraints in queries that make use of RIGHT JOIN. Problem reported by forum post 68f29a2005. (check-in: 9441fff52c user: drh tags: trunk)
16:07
Improved debugging output for the transitive constraint optimization. (check-in: 94b53c20e9 user: drh tags: trunk)
15:34
Make the show-%p-az-zero hack of the previous check-in configurable at run-time using the 0x100000 bit of either .treetrace or .wheretrace. As before, this is all a no-op except for debugging builds. (check-in: a29627d7e7 user: drh tags: trunk)
13:51
Add an "#if 0" that can be changed to "1" to cause all %p output to render as 0, thus making comparisons of .treetrace and .wheretrace output easier. (check-in: 65e2704c0b user: drh tags: trunk)
2025-06-14
18:02
Generalize the indexCellCompare() so that works on any index page, not just the current page that a cursor is pointing to. (Leaf check-in: eda518028f user: drh tags: flex-search)
14:46
Fix issues with expression indexes for flex-search queries. (check-in: 711608e49b user: drh tags: flex-search)
13:18
Add the ability to disable the Flex-Search optimization using SQLITE_TESTCTRL_OPTIMIZATION. (check-in: 5319a55ab2 user: drh tags: flex-search)
09:54
Generates code to implement either an index search or a table scan, according to the results of the OP_IfUseIndex opcode. But does not always work. And the OP_IfUseIndex opcode is currently an unconditional "yes". (check-in: 9872df2b85 user: drh tags: flex-search)
2025-06-13
11:08
Further improvements to the EQP text for flex-search. (check-in: 40a83da503 user: drh tags: flex-search)
00:50
Change the flex-search EQP message to be "SEARCH ... OR SCAN" as this seems less disruptive and more readable. (check-in: 680e278c3e user: drh tags: flex-search)
00:25
Fix test cases on the expert extension. (check-in: c46feb36b5 user: drh tags: flex-search)
2025-06-12
19:02
Preliminary code generation for flex-search. Add a no-op IfUseIndex opcode as a placeholder. (check-in: 521948c64f user: drh tags: flex-search)
13:40
Merge latest trunk enhancements and fixes into the experimental flex-search branch. (check-in: 51c89c886f user: drh tags: flex-search)
13:27
Have sqlite3_setlk_timeout() take the database handle mutex. This fixes an assert() failure that could occur if sqlite3_setlk_timeout() were called on a threadsafe handle. (check-in: 954efdd30d user: drh tags: branch-3.50)
10:56
Help ext/wasm 'make snapshot' find the wasm docs dir when it's run from outside of my usual checkout structure. (check-in: 0e04136bc5 user: stephan tags: branch-3.50)
07:35
Have sqlite3_setlk_timeout() take the database handle mutex. This fixes an assert() failure that could occur if sqlite3_setlk_timeout() were called on a threadsafe handle. (check-in: a95d126e13 user: dan tags: trunk)
2025-06-11
17:24
Fix a problem with UPDATEs on fts5 tables that contain blob values. (check-in: 2b4577d83c user: drh tags: branch-3.50)
15:03
Fix a problem with UPDATEs on fts5 tables that contain blob values. (check-in: badf3014bd user: dan tags: trunk)
00:06
Increase the version number for this branch to 3.50.2. (check-in: e9652e398e user: drh tags: branch-3.50)
00:05
Fix the concat_ws() SQL function so that it includes empty strings in the concatenation. (check-in: e0ce6dab46 user: drh tags: branch-3.50)
00:01
Fix the concat_ws() SQL function so that it includes empty strings in the concatenation. Forum post 52503ac21d. (check-in: 80a78987da user: drh tags: trunk)
2025-06-10
20:06
Improved selection of the divisor when subdividing nested Bitvec objects. This fixes a potential stack overflow that can occur when the database size is within 60 pages of the maximum allowed by the file format. (check-in: 5d40152bfe user: drh tags: branch-3.50)
19:52
Improved selection of the divisor when subdividing nested Bitvec objects. This fixes a potential stack overflow that can occur when the database size is within 60 pages of the maximum allowed by the file format. (check-in: f7ab764ed9 user: drh tags: trunk)
18:26
Minor corrections to the new Bitvec testing logic. (check-in: 77b79ca127 user: drh tags: trunk)
17:22
Enhancements to sqlite3BitvecBuiltinTest() that allow testing code to create very large Bitvec objects that do not use the linear array cross-check. (check-in: c5680672ca user: drh tags: trunk)
16:56
Adjustments to ext/misc/fileio.c in an attempt to get it to build using mingw. (check-in: ac786b92e3 user: drh tags: branch-3.50)
16:02
Improved diagnostics for Bitvec: Add the sqlite3ShowBitvec() routine that can be called from a debugger (only available with SQLITE_DEBUG). Add new output opcodes for sqlite3BitvecBuiltinTest(). (check-in: dea1e37fa6 user: drh tags: trunk)
2025-06-09
22:38
Adjustments to ext/misc/fileio.c in an attempt to get it to build using mingw. (check-in: 96b14a3f11 user: drh tags: trunk)
16:32
Initial implementation of sqlite3BtreeEstimatedPosition() with the est_rank() SQL function used for testing. (check-in: e93048425b user: drh tags: flex-search)
2025-06-07
16:45
Query planner identifies loops where it might be advantageous to check the number of matching rows and fall back to a full table scan if the number of matching rows is large. (check-in: 87fd199257 user: drh tags: flex-search)
2025-06-06
23:10
Remove unnecessary whitespace and otherwise improve comments in the wherecode.c module. No coding changes. (check-in: 2eb4e9bf0f user: drh tags: trunk)