SQLite

Timeline
Login

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

127 check-ins for the month beginning 2024-05-01

Following month ↑
2024-05-31
20:32
Further tests for OR constraints on virtual tables. (check-in: ff4a30056f user: dan tags: xbestindex-or-terms)
19:26
Better handle WHERE terms that are common to two or more OR branches when planning virtual table queries. (check-in: 4edd9b29f5 user: dan tags: xbestindex-or-terms)
15:39
Do not even try star-schema detection if the join has fewer than 5 tables, since 5 is the minimum for a positive detection. (check-in: a07ec16bbc user: drh tags: trunk)
14:39
Document the OP_Explain opcode. Add the WhereLoop.rRun value as P3 in OP_Explain opcodes associated with WhereLoops, for testing purposes. (check-in: 996c46e61d user: drh tags: trunk)
2024-05-30
21:54
Back out [dcc2bb2c562e97e090174], as it breaks the --with-wasi-sdk builds. (check-in: 62199562c2 user: stephan tags: trunk)
17:56
Remove the unconditional SQLITE_OMIT_WAL when building in wasi-sdk mode, per requests in the forum. (check-in: dcc2bb2c56 user: stephan tags: trunk)
13:27
Ensure that the second pass call to wherePathSolver() always reports a positive value for the estimated number of output rows. This fixes a long-standing (though exceedingly minor) problem that was only revealed by a new assert() added yesterday. dbsqlfuzz 545d6debc2da496ab2b915e33ea34d9a35a935df (check-in: a47c644fef user: drh tags: trunk)
11:25
Experimentally enable linenoise multiline mode in shell.c. (Closed-Leaf check-in: 33ad9d8a3c user: stephan tags: linenoise-multiline)
11:14
Update shell.c to use the msteve fork of linenoise, per /chat discussion. (check-in: ee92fa8366 user: stephan tags: trunk)
2024-05-29
15:16
Remove an unused parameter from fts5ConfigParseSpecial(). Compiler-warning fix only - no functional changes. (check-in: c08dd245f7 user: drh tags: trunk)
15:08
Use a heuristic of artifically lowering the cost of fact tables in a star-schema query in order to prevent plans where the fact tables are in outer loops from being trimmed by the path limiter. This helps to generate better (faster) query plans in those particular cases. (check-in: 38db9b5c83 user: drh tags: trunk)
14:32
Change an assert() (incorrectly) added by the previous check-in into a testcase(). (Closed-Leaf check-in: 5e64b541d1 user: drh tags: star-schema)
14:04
Small performance enhancement in wherePathSolver() (check-in: bdab69641d user: drh tags: star-schema)
13:29
Improvements to comments and debugging output. (check-in: 85164ee155 user: drh tags: star-schema)
10:40
Remember the amount of the heuristic cost adjustment associated with star schemas and compensate when computing whether or not to use Bloom filters. (check-in: 21daf2463e user: drh tags: star-schema)
09:53
Fix typos in the star-schema test cases. (check-in: 4080937353 user: drh tags: star-schema)
03:35
Fix sqldiff out-of-bounds char classification error mentioned in the forum. (check-in: b31933d873 user: larrybr tags: trunk)
00:38
Use a heuristic in the query planner to help it better cope with large star schema queries. (check-in: a98be0f548 user: drh tags: star-schema)
2024-05-28
19:08
Fix a couple of assert() statements so that they cannot fire when the SQLITE_TESTCTRL_INTERNAL_FUNCTIONS debugging capability is activated. dbsqlfuzz f5b347cf167a62fbe08062b2feee65cb9306e363. (check-in: 273504b74c user: drh tags: trunk)
18:53
Tweaks to the query planner so that it is better able to deal with star queries with many dimensions and bad indexes. (check-in: 1e49081001 user: drh tags: trunk)
18:41
Fix another problem with the sqlite3_log() message identifying the table or index that a conflicting page belongs to. (check-in: 19d5fd8a48 user: dan tags: bedrock)
18:35
Fix another problem with the sqlite3_log() message identifying the table or index that a conflicting page belongs to. (check-in: d033d94350 user: dan tags: begin-concurrent)
15:37
For query planning purposes, assume every table holds at least 100 rows, as this seems to give better worst-case performance if the table row count estimate turns out to be inaccurate. Park this change on a branch for now and consider it for a future enhancement. (Leaf check-in: 76c7d9334f user: drh tags: min-row-estimate)
12:41
Increase the number of parallel paths in the query solver from 12 to 20. In the .wheretrace output, sort the parallel paths in order of increasing cost. (check-in: 8ba2c2f5cb user: drh tags: trunk)
11:24
Documentation typo fix. Forum post 772d6688f5. (check-in: 1f2f9c709e user: drh tags: trunk)
10:57
Fix a problem with the error message reported by fts5 in some OOM cases. (check-in: c7aaa28f78 user: dan tags: trunk)
00:16
Improve the automatic-index decision such that no attempt is made to create an automatic index on a column that is known to be non-selective because if its use in other indexes that have been analyzed. See ticket [8ff324e120d5e9bd] and forum post b21c2101a559be0a. (check-in: 2a7603c327 user: drh tags: trunk)
00:01
Query planner tuning: Increase the maximum number of simultaneous solutions to track in the solver from 10 to 12. (check-in: fe2e1dadba user: drh tags: trunk)
2024-05-27
21:55
Avoid creating an automatic index on a column that is known to be not very selective. (Closed-Leaf check-in: 70409763f7 user: drh tags: auto-index-improvements)
19:52
The previous check-in was a little two aggressive about skipping the initialization of entries in the CellArray.ixNx array. Fixed here. (check-in: 1b6d1fbcde user: drh tags: trunk)
18:15
Fix typo in comment used to generate parts of the documentation. Forum post da5a2ca4db. (check-in: 428aadf0c7 user: drh tags: trunk)
15:13
Very small performance increase and size reduction by removing unnecessary ALWAYS() macros from the btree balance logic and replacing them with special initialization of CellArray and some assert()s. (check-in: 32b79041d9 user: drh tags: trunk)
13:41
Doc typo fix. No code changes. (check-in: eaf07fe69f user: stephan tags: trunk)
13:24
For compatibility with PostgreSQL, when right-hand side of the ->> operator is negative, it should index from the right side of the JSON array on the left-hand side. (check-in: 82365a45b9 user: drh tags: trunk)
11:38
Fix a possible buffer overwrite in the ".import" command. (check-in: 55eee9f920 user: drh tags: branch-3.46)
11:35
Fix a possible buffer overwrite in the ".import" command. forum post 0c447f0548. (check-in: 0fd958fa9b user: dan tags: trunk)
11:31
Add new assert() statements to help out a static analyzer. Response to forum post 17fe8ac32e0de4f5. (check-in: 857f6d5309 user: drh tags: trunk)
2024-05-25
23:17
Ensure that sqlite3ViewGetColumnNames() returns non-zero on any error. (check-in: 01ead0a2d9 user: drh tags: branch-3.46)
23:13
Ensure that sqlite3ViewGetColumnNames() returns non-zero on any error. dbsqlfuzz d9de2a508f693e5a228d7a01d5341e3c64326fbb. (check-in: 57aeb3a287 user: drh tags: trunk)
2024-05-24
23:44
Ensure that queries like "SELECT func(a) FROM tab GROUP BY 1" only call the func() function once per row. Fix for the issue described in forum thread bf8f43aa522c2299. (check-in: 663f5dd32d user: drh tags: trunk)
21:38
Fix another fts5 problem related to unknown tokenizer modules. (check-in: e78b778304 user: dan tags: trunk)
21:23
Fix a crash in fts5 that could occur within "PRAGMA integrity_check" if the specified tokenizer was unknown. (check-in: 061d7b69e6 user: dan tags: trunk)
20:18
When omitting result columns for the vector-IN optimization, make sure that any result-set column references in both the ORDER BY clause and the GROUP BY clause are updated appropriately. (Closed-Leaf check-in: f890812df0 user: drh tags: group-by-consistency)
18:31
Ensure that queries like "SELECT indeterministic(a) FROM tbl GROUP BY 1" invoke the indeterministic function only once for each row of tbl. (check-in: 4555d66547 user: dan tags: group-by-consistency)
14:16
Add the stmtrand() extension function for use in testing. (check-in: 5c97a5b9d1 user: drh tags: trunk)
13:33
Fix an "ifcapable" expression in values.test. (check-in: b8442d2a60 user: dan tags: trunk)
2024-05-23
23:34
Increase the version number to 3.46.1 (check-in: 170e3a91d5 user: drh tags: branch-3.46)
23:30
Fix the window-function group_concat() so that it returns an empty string if it has one or more empty string inputs. (check-in: 7fe11274fc user: drh tags: branch-3.46)
23:26
Fix the window-function group_concat() so that it returns an empty string if it has one or more empty string inputs. This fixes a bug introduced by [c6da39115d3e2b0f] on 2019-03-26 (version 3.28.0) and reported by forum post bf8f43aa522c2299. (check-in: cec6bb3fc9 user: drh tags: trunk)
15:05
Merge various enhancements that were being held on a branch until after the 3.46.0 release. (1) Allow arbitrary expressions in the second argument to the RAISE() function. (2) Performance optimization to the OP_OpenRead and OP_OpenWrite bytecode operators. (3) Allow FTS5 tables to be dropped even if the associated tokenizer is not available. (4) Performance optimizations in FTS5. (5) Generate better bytecode to improve performance of ONEROW scans. (check-in: 1e5385ffc3 user: drh tags: trunk)
14:58
Increase the version number to 3.47.0 to begin the next development cycle. (check-in: 20e228a22e user: drh tags: trunk)
14:09
Version 3.46.0 for the reuse-schema branch (check-in: 8f6b859413 user: drh tags: reuse-schema)
14:09
Version 3.46.0 for the bedrock branch (check-in: 483d112ab4 user: drh tags: bedrock)
14:05
Version 3.46.0 for the wal2 branch. (check-in: fdc0e1480a user: drh tags: wal2)
14:04
Version 3.46.0 for the begin-concurrent branch (check-in: e3f8c70ef5 user: drh tags: begin-concurrent)
13:25
Version 3.46.0 (check-in: 96c92aba00 user: drh tags: trunk, release, major-release, version-3.46.0)
2024-05-21
17:37
Ensure an sqlite_dbdata cursor is properly reset before being used again, even if it has already encountered database corruption. (check-in: 3210e1ca4d user: dan tags: trunk)
15:24
Merge the latest trunk enhancements into the bedrock branch. (check-in: c65a82f1fa user: drh tags: bedrock)
15:20
Merge the lates trunk enhancements into the reuse-schema branch. (check-in: 97e0af8882 user: drh tags: reuse-schema)
15:20
Merge the latest trunk enhancements into the wal2 branch. (check-in: d4217d9f70 user: drh tags: wal2)
15:17
Merge the latest trunk enhancements into the begin-concurrent branch. (check-in: 5c1c8651d1 user: drh tags: begin-concurrent)
14:54
Do not attempt to run mmapcorrupt.test with builds that do not support mmap(). (check-in: 54a49f1847 user: dan tags: trunk)
13:34
Fix harmless compiler warnings. (check-in: aab59f9f7c user: drh tags: trunk)
11:11
Fix the -> and ->> operators so that when the RHS is a string that looks like a number, it is still treated as a string, because that is what PG does. Forum post 9e52cdfe15c3926e. (check-in: de8182cf17 user: drh tags: trunk)
2024-05-20
19:59
Omit a capi3 test from 2007 that depends upon undefined behavior (UAF). (check-in: a60a0b7513 user: drh tags: trunk)
19:51
Do not run the tests in recovercorrupt4.test with the inmemory_journal permutation. (check-in: c13205d66b user: dan tags: trunk)
17:52
Improvements to the documentation of sqlite3_vtab_distinct(). Do not allow sqlite3_vtab_distinct() to return 2 or 3 if the rowid column of the virtual table is used, as doing so might lead to an incorrect answer. (check-in: 08058d66d1 user: drh tags: trunk)
16:00
Improvements to the sqlite3_vtab_distinct() documentation. (Closed-Leaf check-in: 6ee041d34f user: drh tags: vtab-distinct-fix)
2024-05-18
20:00
Fix the definition of sqlite3_vtab_distinct() such that return codes 2 and 3 mean that all rows must be distinct over "colUsed" which is a superset of "aOrderBy". Also, disallow return codes 2 and 3 if the rowid of the virtual table is accessed. (check-in: 922731ce98 user: drh tags: vtab-distinct-fix)
15:21
JS error message and doc typos reported in the forum. No code changes. (check-in: 1a073f9acf user: stephan tags: trunk)
2024-05-17
22:51
Improvements to a VDBE comment. No changes to anything that affects queries. (check-in: c2188da860 user: drh tags: trunk)
14:26
Merge branches "fix-onerow-opt", "faster-openread", "fts5-delay-tokenizer" and "enhanced-raise", each containing minor enhancements prepared for 3.46, into this branch. (Closed-Leaf check-in: 6dc6472175 user: dan tags: pending-3.46)
13:56
Fix a problem in where.c preventing SQLite from identifying some ONEROW scans, leading to (slightly) sub-optimal byte-code. (Closed-Leaf check-in: b41e71208a user: dan tags: fix-onerow-opt)
2024-05-16
16:22
Add extra tests for the error messages generated by sqlite3_declare_vtab() when passed something other than a well-formed CREATE TABLE statement. (check-in: 5fa0c2a026 user: dan tags: trunk)
15:57
The sqlite3_declare_vtab() interface should return SQLITE_ERROR, not SQLITE_MISUSE when a nonsense SQL input is provided, for legacy compatibility. Forum post 4b875d7b2a. (check-in: 1ec2961a03 user: drh tags: trunk)
00:20
Fix a case where an error in the ORDER BY clause of an aggregate function that is part of a trigger body might cause an assert() to fail in an ALTER TABLE command. dbsqlfuzz 899d9255555a07f1fe11a0bb51a2fe197b3150cd (check-in: 953271f29e user: drh tags: trunk)
2024-05-15
23:36
Back out the assert() fixes from [a9443dbfbe25e588] and [3afaeac56dff58db] (but keep the corresponding test cases) because they are both made obsolete by the previous fix on this branch. (Closed-Leaf check-in: 3120c7c8a3 user: drh tags: alter-table-fix)
21:38
Fix a case where an error in the ORDER BY clause of an aggregate function that is part of a trigger body might cause an assert() to fail in an ALTER TABLE command. (check-in: b79a8be37b user: dan tags: alter-table-fix)
15:11
If there is no data available for a field in a corrupted record, but the type is available, have the recovery extension substitute 0, 0.0, '' or X'' instead of a NULL value. (check-in: 7805135925 user: dan tags: branch-3.45)
15:06
If there is no data available for a field in a corrupted record, but the type is available, have the recovery extension substitute 0, 0.0, '' or X'' instead of a NULL value. (check-in: 8eb326c249 user: dan tags: trunk)
2024-05-14
19:41
Optimize queries against fts5vocab(row) tables that do use the "cnt" column. (Closed-Leaf check-in: 96a591c202 user: dan tags: fts5-delay-tokenizer)
19:09
Avoid calculating the value of the "cnt" column for fts5vocab(row) queries that do not use it. (check-in: c0c91e306c user: dan tags: fts5-delay-tokenizer)
17:16
Have fts5 tables delay initializing the tokenizer until it is first used in all cases where the tokenizer is not "trigram". (check-in: ca4fdcb8ae user: dan tags: fts5-delay-tokenizer)
2024-05-13
20:06
Allow existing fts5 tables to be dropped even if the associated tokenizer is not available. (check-in: 69ef47eeee user: dan tags: fts5-delay-tokenizer)
2024-05-12
00:26
Optimization in the implementation of OP_OpenRead and OP_OpenWrite (Closed-Leaf check-in: 3a256a1667 user: drh tags: faster-openread)
2024-05-11
16:44
Add tests to bestindexC.test. No changes to code. (check-in: 58d938c0e0 user: dan tags: trunk)
2024-05-10
18:24
Fix aggregate function processing to correctly deal with OOMs inside of sqlite3ParserAddCleanup(). (dbsqlfuzz b2d11ca70e55ee8bde48ae0b53fa3e9355812f95). Also add improved testing support by causing sqlite3FaultSim(300) to simulate an OOM inside of sqlite3ParserAddCleanup() and by adding improved fault-sim support to the CLI. (check-in: c6fd70b3c2 user: drh tags: trunk)
18:15
Add a test for the fixes on this branch. (Closed-Leaf check-in: 716088d673 user: dan tags: cleanup-testing)
18:10
The sqlite3FaultSim(300) error from [1e8863909ac369e5] must be treated as an OOM, since it simulates an OOM. Also fix deferred deletion of Expr objects from [a53bdd311c4154fd] so that it does not corrupt the AST if an OOM occurs. (check-in: c623d9a51e user: drh tags: cleanup-testing)
17:05
Improvements to the ".testctrl fault_install" command in the CLI. (check-in: 48b34ded82 user: drh tags: cleanup-testing)
16:28
Add an sqlite3FaultSim(300) call to the sqlite3ParserAddCleanup() routine for more precise simulation of OOM errors in that routine. (check-in: 1e8863909a user: drh tags: cleanup-testing)
09:26
Squelch two OMIT-flag-related warnings reported in forum post 388243d9882067a9. No functional changes. (check-in: 1d6716054d user: stephan tags: trunk)
2024-05-09
18:54
Reformulate a for-in loop to a for loop in wasm.xWrap() to work around downstream frameworks modifying the JS Array prototype, as reported in forum post b549992634b55104. (check-in: ce2eb6d89a user: stephan tags: branch-3.45)
18:39
Add a maintenance-reminder comment explaining [dc58ed65492857]. (check-in: 857f5d7fad user: stephan tags: trunk)
18:00
Reformulate a for-in loop to a for loop in wasm.xWrap() to work around downstream frameworks modifying the JS Array prototype, as reported in forum post b549992634b55104. (check-in: dc58ed6549 user: stephan tags: trunk)
17:45
Fix a problem causing the recovery extension to use excessive memory and CPU time in some cases. (check-in: bc394acb6e user: dan tags: branch-3.45)
2024-05-08
17:57
Rename a shadowed local var, as reported in forum post 2ba65af31. No functional changes. (check-in: d030c87c4d user: stephan tags: trunk)
17:42
Allow arbitrary expressions as the second argument to RAISE(). (Closed-Leaf check-in: 003e1c8c27 user: drh tags: enhanced-raise)
11:51
Fix a hyperlink typo in session documentation. (check-in: 42d67c6fed user: drh tags: trunk)
2024-05-07
19:45
Fix bug in test script sessionconflict.test. (check-in: e29decb8b1 user: dan tags: trunk)
17:58
Ensure successive scans of pragma virtual tables return consistent rowids. (check-in: 6838bf3ac1 user: dan tags: trunk)
13:20
Fix a compilation error in test/lemon-test01.y, reported in forum post f0ad095705. (check-in: 576b68c8b5 user: stephan tags: trunk)
2024-05-06
20:21
When extracting links from sqlar archives, clobber any existing file or link, and do not call utimes() to set the timestamp - it looks through the link and operates on the target. (check-in: 2bf8c3f99a user: dan tags: trunk)
20:18
Omit redundant unary + operators from the AST. (check-in: f81cc149e5 user: drh tags: trunk)
19:04
Avoid unnecessary recursion in sqlite3ExprDeleteNN(). This complicates the code, but it is needed to prevent nuisance "stack overflow" reports from OSSFuzz while it is running the latest ASAN. (check-in: 70abc144ca user: drh tags: trunk)
17:55
Add new sessions API sqlite3changegroup_add_change(). (check-in: 5eaab43ce4 user: dan tags: trunk)
17:32
Edit comments in sqlite3session.h. (Closed-Leaf check-in: 49f84878e2 user: dan tags: changegroup-add-change)
17:21
Add tests for sqlite3changegroup_add_change(). (check-in: 9d67bedc20 user: dan tags: changegroup-add-change)
11:27
Fix problem in sqlar_uncompress() when being used to extract symbolic links. (check-in: 4d90c3f179 user: dan tags: trunk)
2024-05-05
10:00
Add comment to the test/lemon-test01.y file indicating that it does not work and is for historical reference only. (check-in: 9bdf73a8d4 user: drh tags: trunk)
2024-05-04
21:10
Add new sessions API sqlite3changegroup_add_change(). (check-in: 73647db1dd user: dan tags: changegroup-add-change)
16:50
Add test cases to test/in7.test. No code changes. (check-in: 8c3086f9fe user: dan tags: trunk)
15:10
Assume that an SQL function is able to return a subtype if any of its arguments are SQL functions that are able to return subtypes. This closes a corner-case hole in the patch at [ba789a7804ab96d8]. (check-in: b36d499e4c user: drh tags: trunk)
15:04
Assume that a function is able to return a subtype if either (1) it is itself marked with SQLITE_RESULT_SUBTYPE, or (2) one of its arguments is a function that is able to return a subtype. This check-in backs out the code changes from the previous two on this same branch, but keeps the test cases from the previous two. (Closed-Leaf check-in: f16b200f25 user: drh tags: func-rw-subtype)
11:31
Functions that pass through the sqlite3_value of one of their arguments must also be marked as SQLITE_RESULT_SUBTYPE, in case one of their arguments has a subtype. (check-in: 2f9fba931d user: drh tags: func-rw-subtype)
2024-05-03
19:35
The coalesce(), ifnull(), and iif() functions pass through subtype values from their arguments, and hence need to have the SQLITE_RESULT_SUBTYPE flag set. (check-in: cdd1610c44 user: drh tags: func-rw-subtype)
2024-05-02
19:22
Fix a problem with queries that use "IN(...) ORDER BY ... NULLS LAST" or similar introduced by [d7648e21605a0b38]. (check-in: 26b2d9390f user: dan tags: trunk)
18:16
Avoid an assert failure accessible only when internal testing features are enabled. dbsqlfuzz crash-66abacda6bca6bd531e25595e8c8068e2c710326.txt. (check-in: fbc446daac user: dan tags: trunk)
17:46
Fix a case where the recovery extension might write uninitialized data to the recovered database. (check-in: 8519b4d039 user: dan tags: trunk)
14:48
Avoid an OP_Next in cases where an IN(...) query against a UNIQUE index may return at most 1 row. (check-in: d7648e2160 user: dan tags: trunk)
12:14
Fix the CREATE TABLE performance issue described by forum thread 4cf69794d9dfff7c in two different ways: (1) Omit the call to PRAGMA integrity_check('X') that was being done after CREATE TABLE "X" because the result was being ignored and the integrity_check was not doing anything other than burning CPU cycles. (2) Do not interpret the argument to PRAGMA integrity_check as a number if it is in fact a string that looks like a number. (check-in: 71f08b9122 user: drh tags: trunk)
12:00
Add a test case to the fix to PRAGMA integrity_check in the previous check-in. (Closed-Leaf check-in: 39a57b596d user: drh tags: faster-create)
11:52
Do not accept a string that looks like a number used as an argument to PRAGMA integrity_check as a number. Treat it as a table name that just happens to look like a number. (check-in: b04e7a2347 user: drh tags: faster-create)
11:51
Omit the OP_SqlExec to "PRAGMA integrity_check" added by [348fa7aaf7958b3f] because it is a no-op. Even if the integrity_check failes, the CREATE TABLE is stull successful. The OP_SqlExec just burns CPU cycles for no reason. (check-in: 532795acd1 user: drh tags: faster-create)
2024-05-01
19:48
Avoid an OP_Next in cases where an IN(...) query against a UNIQUE index may return at most 1 row. (Closed-Leaf check-in: 560f64157d user: dan tags: unique-in-opt)
16:25
Fix another problem in the recovery extension where a corrupt sqlite_schema table could lead to excessive memory consumption. (check-in: 1c7e33a8aa user: dan tags: trunk)
14:42
Fix a problem causing the recovery extension to use excessive memory and CPU time in some cases. (check-in: 8de85170d5 user: dan tags: trunk)
Previous month ↓