SQLite

Timeline
Login

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

50 most recent check-ins

2025-07-03
16:05
Fix a few cases where LIMIT clauses that were part of scalar sub-queries on virtual tables were not being passed to xBestIndex methods correctly. (Leaf check-in: 960a8e6fc9 user: dan tags: trunk)
15:50
Improvements to sqlite3_vtab_rhs_value() logging in the ext/misc/vtablog.c extension. (Closed-Leaf check-in: 25131ee84f user: drh tags: vtab-limit-fixes)
15:32
Make the value of an explicit LIMIT clause on a scalar sub-query available to xBestIndex for simple "LIMIT 0" and "LIMIT 1" queries. (check-in: 33b6a63caa user: dan tags: vtab-limit-fixes)
14:28
Make handling of LIMIT clauses in correlated sub-queries on virtual tables more efficient. (check-in: 7214cb2a5b user: dan tags: vtab-limit-fixes)
14:10
Enhancements to the xBestIndex output from the ext/misc/vtablog.c extension. (check-in: 8b31acc0b1 user: drh tags: trunk)
11:52
Fix an uninitialized variable added yesterday by [d27d34fb746280e7]. This problem was discovered overnight by OSSFuzz. (check-in: 6db4703f11 user: drh tags: trunk)
00:17
Minor tweaks to the exists-to-join optimization. (Leaf check-in: 9cb600ad57 user: drh tags: empty-table-optimizations)
2025-07-02
20:46
Merge in the exists-to-join optimization that has been modified to relax the requirement of having an indexed join constraint. (check-in: 1c1aef2b7f user: drh tags: empty-table-optimizations)
17:43
Fix VDBE coverage (check-in: ff593a16d6 user: drh tags: empty-table-optimizations)
15:29
Correct mis-placed OOM checks in valueToTextV2(). (Leaf check-in: 9226a2a3c6 user: stephan tags: column-text-blob-v2)
14:53
Early exit if one of the inner loops of a 3-way or larger join is an empty table. (check-in: eaad6ac707 user: drh tags: empty-table-optimizations)
13:24
Per /chat and forum discussions: (A) Remove the value type output pointer from text/blob_v2(). (B) Teach blob_v2() to return an opaque non-NULL pointer for length-0 blobs. (check-in: c96539beb5 user: stephan tags: column-text-blob-v2)
13:19
If the LHS for an EXCEPT or INTERSECT operator is empty, skip over the computation of the RHS. (check-in: 13f096ae8a user: drh tags: empty-table-optimizations)
11:47
Improve the bytecode for joins such that it exits earlier if it determines that no output is possible. (check-in: 2d2b61cba4 user: drh tags: trunk)
07:52
Add test1.c tcl bindings for sqlite3_column_text/blob_v2(). Replace, essentially randomly, some of the v1 API calls in capi2.test and capi2.test with the v2 calls to ensure identical results. Add a couple new tests comparing results between v1 and v2. (check-in: a3ca0adbaf user: stephan tags: column-text-blob-v2)
02:03
Ensure that Expr.op2 values for TK_AGG_FUNCTION nodes are adjusted when query flattening. (check-in: d27d34fb74 user: drh tags: trunk)
2025-07-01
23:17
Improved comments on bytecode used to implement aggregate queries, to aid in debugging. (check-in: a1a8b85cdb user: drh tags: trunk)
21:33
Remove an #if 0 block. (check-in: 0363c430b5 user: stephan tags: column-text-blob-v2)
21:06
Have sqlite3_value/column_text/blob_v2() return MISUSE for a NULL input object or output target only if SQLITE_ENABLE_API_ARMOR is in effect, for consistency with their sibling APIs. (check-in: 6290a8eadd user: stephan tags: column-text-blob-v2)
20:56
Have sqlite3_value/column_text/blob_v2() unconditionally return MISUSE for a NULL input object or output target, rather than only when API_ARMOR is in effect. This is debatable. (check-in: c8edbfc7e8 user: stephan tags: column-text-blob-v2)
20:32
Improved byte-code comments for the short-circuit optimization of [0083d5169a46104a], to aid in debugging. (check-in: 113f9d10e3 user: drh tags: trunk)
18:38
Parameter number doc corrections for the previous check-in. (check-in: 97b06c4594 user: stephan tags: column-text-blob-v2)
18:36
Add API docs for sqlite3_column_text_v2() and sqlite3_column_blob_v2(). (check-in: 60614fed44 user: stephan tags: column-text-blob-v2)
17:38
Random JS cleanups and docs. (check-in: 5a2734bbf8 user: stephan tags: column-text-blob-v2)
17:36
Cache and reuse virtual table cursors in the bytecode engine. (check-in: 2d187d4232 user: drh tags: trunk)
16:38
Experimentally add another output pointer to the text/blob_v2() family which gets the sqlite3_value_type() assigned to it if it's not NULL, based on feedback in the forum. (check-in: 4aab781d2a user: stephan tags: column-text-blob-v2)
16:21
Avoid an assert() failure in fts5 that may occur when processing corrupt records. (check-in: 8afd6ca857 user: dan tags: trunk)
15:13
Merge trunk fixes into the empty-table-optimizations branch. (Closed-Leaf check-in: 63306e447e user: drh tags: empty-table-optimizations)
14:44
Simplify the column_text/blob_v2() JS tests a bit and correct the text_v2() tests to call into both the column and value variants. (check-in: d5cb808043 user: stephan tags: column-text-blob-v2)
13:01
Initial implementations of sqlite3_column_text_v2(), sqlite3_column_blob_v2(), and their JS/WASM bindings/tests. (check-in: 1d065231ab user: stephan tags: column-text-blob-v2)
12:56
Increment the patch level to 3. (Leaf check-in: cf6d599ce9 user: drh tags: branch-3.50)
12:49
When attempting to optimize "expr AND false" to "false" and "expr IN ()" to "false", take care not to delete aggregate functions in the "expr" as doing so can change the meaning of the query. (check-in: 355c7902de user: drh tags: branch-3.50)
12:43
When attempting to optimize "expr AND false" to "false" and "expr IN ()" to "false", take care not to delete aggregate functions in the "expr" as doing so can change the meaning of the query. See forum thread f4878de3e7. (check-in: 77397bd67d user: drh tags: trunk)
09:02
Add tests which demonstrate the difference in behavior for zero-length results in sqlite3_value_text_v2() (empty string) vs sqlite3_value_blob_v2() (NULL). (check-in: 2e7cf00d16 user: stephan tags: column-text-blob-v2)
00:34
Add JS tests for SQLITE_ENABLE_API_ARMOR-shielded sqlite3_value_blob/text_v2() misuse. (check-in: 3c0de5b33c user: stephan tags: column-text-blob-v2)
00:17
Add JS basic tests for sqlite3_value_blob_v2(). Simplify the sqlite3_value_text_v2() tests a bit. (check-in: c371f92d5b user: stephan tags: column-text-blob-v2)
2025-06-30
23:49
Add JS bindings for sqlite3_value_text/blob_v2() and add basic JS tests for text_v2(). (check-in: 096c745f38 user: stephan tags: column-text-blob-v2)
23:17
Restart this branch using a different take: add new "v2" routines instead of refactoring the old ones, which eliminates any performance impact or risk of behavior change for existing APIs. None of this code is actually called from anywhere yet. (check-in: b0b1b4ccb9 user: stephan tags: column-text-blob-v2)
22:15
Initial experimental internal changes needed to support a hypothetical sqlite3_column_text/blob_v2(), as discussed in forum post 402a837960d9de45. This is just the first step: this change needs to cascade upwards a couple of levels, remove one level of porting-crutch API, and go through performance comparisons before we'll know whether it's really feasible. make devtest passes but there are corner error cases which require more precise testing to ensure that there are no visible changes in behavior. (Closed-Leaf check-in: 730c6a623e user: stephan tags: column-text-blob-v2)
21:07
More aggressive optimization of addrHalt for RIGHT JOIN. (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. (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. (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)