Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
History for src/where.c
2025-06-30
| ||
20:19 | [baedbf818b] part of check-in [6fc0b9ac23] 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 branch: empty-table-optimizations, size: 290430) | |
2025-06-28
| ||
14:36 | [a32bc3e832] part of check-in [6e1f97d99b] Merge all the latest trunk fixes and enhancements into the reuse-schema branch. (check-in: [6e1f97d99b] user: drh branch: reuse-schema, size: 290042) | |
2025-06-16
| ||
16:07 | [a99fa3061a] part of check-in [94b53c20e9] Improved debugging output for the transitive constraint optimization. (check-in: [94b53c20e9] user: drh branch: trunk, size: 290024) | |
2025-06-14
| ||
14:46 | [2a7ac07e5c] part of check-in [711608e49b] Fix issues with expression indexes for flex-search queries. (check-in: [711608e49b] user: drh branch: flex-search, size: 290585) | |
13:18 | [8007b70ca3] part of check-in [5319a55ab2] Add the ability to disable the Flex-Search optimization using SQLITE_TESTCTRL_OPTIMIZATION. (check-in: [5319a55ab2] user: drh branch: flex-search, size: 290394) | |
09:54 | [d5d828bb94] part of check-in [9872df2b85] 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 branch: flex-search, size: 290333) | |
2025-06-12
| ||
19:02 | [1a663cfc00] part of check-in [521948c64f] Preliminary code generation for flex-search. Add a no-op IfUseIndex opcode as a placeholder. (check-in: [521948c64f] user: drh branch: flex-search, size: 290263) | |
2025-06-07
| ||
16:45 | [e20d6cf7de] part of check-in [87fd199257] 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 branch: flex-search, size: 290011) | |
2025-05-29
| ||
14:59 | [0f77decad0] part of check-in [4b1a38ff6b] Update the reuse-schema branch to version 3.50.0 (check-in: [4b1a38ff6b] user: drh branch: reuse-schema, size: 289921) | |
2025-05-28
| ||
14:59 | [45a3b49624] part of check-in [cbe2a392e4] Do not use a partial index if the truth of the WHERE clause does not depend on at least one column from the table being indexed. (check-in: [cbe2a392e4] user: drh branch: silly-partial-indexes, size: 289903) | |
2025-05-19
| ||
17:06 | [4a49c5c0d5] part of check-in [fc5edd557e] Merge the latest trunk changes into the reuse-schema branch. (check-in: [fc5edd557e] user: drh branch: reuse-schema, size: 289862) | |
2025-05-14
| ||
16:40 | [1d06561f73] part of check-in [e7dcf25efa] Back out the "low-quality index" query planner hack of check-in [bcac937526d9a6ef]. Subsequent query planner enhancements for dealing with star-queries make that change unnecessary and the change was recently found to cause a performance regression in an unrelated query. Also fix a typo in a debugging message. (check-in: [e7dcf25efa] user: drh branch: trunk, size: 289844) | |
2025-04-21
| ||
13:08 | [cca28141bc] part of check-in [b3a526a887] Merge all the latest trunk enhancements into the reuse-schema branch. (check-in: [b3a526a887] user: drh branch: reuse-schema, size: 290004) | |
2025-04-16
| ||
10:53 | [8bf66eb991] part of check-in [ba7d5bad32] Correctly handle the case of a multi-column UNIQUE constraint that contains the ROWID as one of it columns, and then the columns of that UNIQUE are used in a row-value IN operator as a WHERE clause constraint. (check-in: [ba7d5bad32] user: drh branch: branch-3.49, size: 289679) | |
2025-04-15
| ||
21:59 | [16aab5421a] part of check-in [d22475b81c] Correctly handle the case of a multi-column UNIQUE constraint that contains the ROWID as one of it columns, and then the columns of that UNIQUE are used in a row-value IN operator as a WHERE clause constraint. Reported by forum post b9647a113b. Problem introduced by [723f1be3d4a905a6], part of ticket [da78413751863]. (check-in: [d22475b81c] user: drh branch: trunk, size: 289986) | |
2025-04-14
| ||
19:43 | [85690096a4] part of check-in [92513f6bce] Improved estimate on the number of output rows in a recursive common table expression that uses the UNION operator. Follow-up to [f911f1c4977fbcae] and it's output row estimate changes associated with DISTINCT queries. (check-in: [92513f6bce] user: drh branch: trunk, size: 289963) | |
2025-03-15
| ||
20:35 | [d71673580b] part of check-in [271e0373a8] Merge the latest trunk enhancements into the reuse-schema branch. (check-in: [271e0373a8] user: drh branch: reuse-schema, size: 289928) | |
2025-03-14
| ||
18:10 | [e80177e452] part of check-in [6fd6b32d06] Make use of the flexible-array feature of C99, when available, to try to pacify -fsanitize=strict-bounds. This check-in fixes the core. There is more yet to do in FTS3, RTREE, and in FTS5. (check-in: [6fd6b32d06] user: drh branch: flex-array, size: 289910) | |
2025-03-03
| ||
16:53 | [4ef72b4d79] part of check-in [b51690e180] Merge the latest trunk enhancements into the reuse-schema branch. (check-in: [b51690e180] user: drh branch: reuse-schema, size: 289825) | |
2025-02-21
| ||
20:35 | [12cca5dfbe] part of check-in [5822feec43] The number of declared columns in an index is limited to SQLITE_LIMIT_COLUMN. But the actual number of columns in the implementation might need to be twice as much to account for the primary key at the end. Ensure that the code is able to deal with this. This is a correction to check-in [d7729dbbf231d57c]. (check-in: [5822feec43] user: drh branch: trunk, size: 289807) | |
2025-02-12
| ||
20:54 | [1ca8a781c4] part of check-in [85c108eb0f] An attempt to allow the DEFAULT keyword in the VALUES clause of an INSERT. This check-in does not work right. (check-in: [85c108eb0f] user: drh branch: default-in-values, size: 289677) | |
2025-02-03
| ||
15:17 | [25ee11a611] part of check-in [858163f938] Merge the latest trunk changes into the reuse-schema branch. (check-in: [858163f938] user: drh branch: reuse-schema, size: 289674) | |
2025-01-28
| ||
00:48 | [09dc313e72] part of check-in [6b9a339628] Remove an ALWAYS() in the star-query heuristic that is sometimes false if you have a corrupt database. dbsqlfuzz c37ba7728d79859b79c8341b59297e88fba017d3. Test case in TH3. (check-in: [6b9a339628] user: drh branch: trunk, size: 289656) | |
2025-01-26
| ||
20:09 | [72cd936dca] part of check-in [5e18ce68fb] Further comment improvements in the star-query heuristic. Add an ALWAYS() on an unreachable branch to achieve MC/DC. (check-in: [5e18ce68fb] user: drh branch: trunk, size: 289664) | |
17:29 | [adda3afc98] part of check-in [a7ecb2f4b7] Small size and complexity reduction on the star-query heuristic. Improved comments for the star-query heuristic. (check-in: [a7ecb2f4b7] user: drh branch: trunk, size: 289601) | |
2025-01-25
| ||
23:04 | [3917a56c85] part of check-in [1bc09c9e8b] Revise the strategy used by the star-query heuristic: Instead of decreasing the cost of all fact-table WhereLoops, increase the run-cost of WhereLoops that are SCANs of dimension tables. (check-in: [1bc09c9e8b] user: drh branch: trunk, size: 288438) | |
14:30 | [8fb5ce22e5] part of check-in [b3ebeb0682] Improvments to debug output on the star-query heuristic. (check-in: [b3ebeb0682] user: drh branch: trunk, size: 288209) | |
00:07 | [75427197cc] part of check-in [8b9e621dbf] Avoid calling computeMxChoice() after an OOM as some assert()s can fail in that routine if a prior OOM occurred while building the WhereLoop array. (check-in: [8b9e621dbf] user: drh branch: trunk, size: 287774) | |
2025-01-24
| ||
20:59 | [e1bd86a1f8] part of check-in [431a1a29f9] Remove an incorrect ALWAYS() added in check-in [7cfbe14d199bb631]. (check-in: [431a1a29f9] user: drh branch: trunk, size: 287728) | |
16:27 | [647dfba232] part of check-in [a280f5f548] The debugging output for WhereLoop objects now shows cost estimate changes due to the star-query heuristic. (check-in: [a280f5f548] user: drh branch: star-query-heuristic, size: 287736) | |
15:55 | [3dacc2fa21] part of check-in [61f76a45ac] Minor tweaks to the star-query detection and processing. (check-in: [61f76a45ac] user: drh branch: star-query-heuristic, size: 287511) | |
14:51 | [5112b3f0a2] part of check-in [5aebd7df0d] When looking for star-queries, do not count a table as a dimension table if that table is separated from the fact table by an OUTER or CROSS join or if the table is a self-join. (check-in: [5aebd7df0d] user: drh branch: star-query-heuristic, size: 287377) | |
2025-01-23
| ||
21:06 | [6722991bec] part of check-in [9a20b94080] Fix a possible infinity loop in debugging-printf logic in the query planner. No changes to production code. (check-in: [9a20b94080] user: drh branch: trunk, size: 284949) | |
2025-01-19
| ||
19:14 | [5e74d76b26] part of check-in [fec4ff185a] Add an SQLITE_TESTCTRL_OPTIMIZATION mask that can disable the query planner heuristics that are designed to help with star queries. (check-in: [fec4ff185a] user: drh branch: trunk, size: 284862) | |
2025-01-18
| ||
21:19 | [521472bb0c] part of check-in [aa829a131a] Add a simple test case (many more are coming soon to TH3). Fix an obsolete assert(). (check-in: [aa829a131a] user: drh branch: without-rowid-autoidx, size: 284767) | |
21:00 | [b09334881a] part of check-in [89c4cbd952] Add support for automatic query-time indexes on WITHOUT ROWID tables. (check-in: [89c4cbd952] user: drh branch: without-rowid-autoidx, size: 284748) | |
2025-01-17
| ||
23:49 | [7aa91f806d] part of check-in [0852c57ee2] For the purpose of the query planner heuristic added by [38db9b5c83], a query should only count as a star query if the fact tables are connected to the dimension table by an INNER JOIN. If a LEFT JOIN is used, then the fact tables are constrained to be in inner loops anyhow and so the heuristic does not make any sense. But it does interfere with AUTOMATIC index creation, which causes the performance regression reported by forum post d87570a1455. (check-in: [0852c57ee2] user: drh branch: trunk, size: 284308) | |
2025-01-15
| ||
20:23 | [f081a37108] part of check-in [d4bd0d4214] When choosing between two indexes with the same cost, pick the one with the smaller predicted number of bytes per row. (check-in: [d4bd0d4214] user: drh branch: consider-idx-width, size: 284018) | |
19:30 | [066374c086] part of check-in [dbc2d6a244] Variable names and conditional logic simplified in where.c. These changes are cosmetic only and do not affect the resuling machine code. (check-in: [dbc2d6a244] user: drh branch: trunk, size: 282959) | |
2025-01-14
| ||
12:43 | [93cd2d4709] part of check-in [1a031a536b] Version 3.48.0 for the reuse-schema branch. (check-in: [1a031a536b] user: drh branch: reuse-schema, size: 283071) | |
2025-01-13
| ||
13:32 | [604f17baed] part of check-in [315079b150] Remove a stray tab character from a comment. (check-in: [315079b150] user: drh branch: trunk, size: 283053) | |
2025-01-03
| ||
15:21 | [50fd988671] part of check-in [3b485202da] Merge the latest trunk enhancements into the reuse-schema branch. (check-in: [3b485202da] user: drh branch: reuse-schema, size: 283071) | |
11:51 | [d519bc93b4] part of check-in [9ee57a30a4] Add comment to the columnIsGoodIndexCandidate() routine to record the results of a failed experiment. No changes to code. (check-in: [9ee57a30a4] user: drh branch: trunk, size: 283053) | |
2024-12-16
| ||
14:06 | [fddbca0954] part of check-in [58563686eb] Merge all the latest trunk changes and enhancements into the reuse-schema branch. (check-in: [58563686eb] user: drh branch: reuse-schema, size: 282830) | |
2024-12-13
| ||
01:29 | [9ad3dea800] part of check-in [52e0f8cab9] Fix a harmless compiler warning that comes up when using SQLITE_DEBUG in separate compilation mode. (check-in: [52e0f8cab9] user: drh branch: trunk, size: 282812) | |
2024-12-09
| ||
13:02 | [377f336398] part of check-in [cb5bad5c74] Add NEVER() around branches that seems to have been made obsolete by [a350ea7c6b89725b]. (check-in: [cb5bad5c74] user: drh branch: trunk, size: 282732) | |
2024-11-28
| ||
00:34 | [b34adb09fd] part of check-in [d96ecbee59] Enhancements to sqlite3ExprImpliesExpr() so that it realizes that "iif(A,B)" implies "A". (check-in: [d96ecbee59] user: drh branch: expr-implies-expr, size: 282718) | |
2024-11-20
| ||
14:19 | [504d720984] part of check-in [c77a4a42f2] Provide the sqlite3ShowWhereTerm() interface callable interactively from a debugger, when compiling with SQLITE_DEBUG. (check-in: [c77a4a42f2] user: drh branch: trunk, size: 282776) | |
2024-10-25
| ||
20:21 | [d538f2248f] part of check-in [12fc5fd5e0] Merge the latest trunk enhancements into the reuse-schema branch. (check-in: [12fc5fd5e0] user: drh branch: reuse-schema, size: 282681) | |
16:20 | [43de02fffd] part of check-in [e7f27bbdf4] Merge the latest trunk enhancements into the lateral-join branch. (check-in: [e7f27bbdf4] user: drh branch: lateral-join, size: 283978) | |
2024-10-22
| ||
20:16 | [4de9e7ca5f] part of check-in [29fb4919b6] Changes to EXPLAIN QUERY PLAN to identify covering index plan that use indexes on expressions. (check-in: [29fb4919b6] user: dan branch: trunk, size: 282663) | |
2024-10-21
| ||
17:13 | [334bf1f406] part of check-in [d49d282795] Update the reuse-schema branch to version 3.47.0 (check-in: [d49d282795] user: drh branch: reuse-schema, size: 281837) | |
2024-10-19
| ||
12:39 | [ed0e1e9ef1] part of check-in [59b76a99e4] An assortment of comment typo fixes discovered by aspell. Add several new words to tool/custom.txt. No code changes. (check-in: [59b76a99e4] user: stephan branch: trunk, size: 281819) | |
2024-10-16
| ||
15:14 | [6123e8a033] part of check-in [93f0febab4] Merge the latest trunk enhancements into the reuse-schema branch. (check-in: [93f0febab4] user: drh branch: reuse-schema, size: 281838) | |
2024-10-11
| ||
20:36 | [55defd94b8] part of check-in [3bb03a2891] Experimental change to explain query plan to identify covering indexes on expressions. (check-in: [3bb03a2891] user: dan branch: eqp-covering-index-on-expr, size: 282664) | |
2024-10-05
| ||
17:37 | [12fe248809] part of check-in [ac63f98ad8] Experimental change to allow expressions with subtypes to be read from indexes in situations where they are not used as function parameters. (check-in: [ac63f98ad8] user: dan branch: indexed-subtype-expr, size: 281820) | |
15:51 | [ec96f684c2] part of check-in [a92bb48a48] Merge latest trunk changes into this branch. (check-in: [a92bb48a48] user: dan branch: lateral-join, size: 285261) | |
2024-09-30
| ||
15:17 | [3f5dcc72b9] part of check-in [1ba833743d] Merge the latest trunk enhancements into the reuse-schema branch. (check-in: [1ba833743d] user: drh branch: reuse-schema, size: 283964) | |
2024-09-20
| ||
12:58 | [461d41017d] part of check-in [b7b64c53f5] New assert()s to help verify union access. No logic changes. Testing and validation code only. (check-in: [b7b64c53f5] user: drh branch: trunk, size: 283946) | |
2024-09-06
| ||
15:52 | [c924288b72] part of check-in [f9ce1ababb] Merge the latest trunk enhancements into the reuse-schema branch. (check-in: [f9ce1ababb] user: drh branch: reuse-schema, size: 283926) | |
10:35 | [7fb55836eb] part of check-in [224628b103] A testcase() macro added to help ensure that the fix to the omit-noop-join optimization from yesterday does not regress. (check-in: [224628b103] user: drh branch: trunk, size: 283908) | |
2024-09-05
| ||
23:44 | [74ef82f580] part of check-in [2b543fbc28] Ensure that the WhereInfo.revMask bitmap is adjusted when tables are removed from the FROM clause by the Omit-Noop-Join optimization. (check-in: [2b543fbc28] user: drh branch: branch-3.46, size: 272188) | |
23:22 | [079f1cf6ab] part of check-in [22ca5a2ffb] Ensure that the WhereInfo.revMask bitmap is adjusted when tables are removed from the FROM clause by the Omit-Noop-Join optimization of [0cd82ee9a8413cf1]. Fix for the issue described by format post 8a1e467e905b8d27. (check-in: [22ca5a2ffb] user: drh branch: trunk, size: 283851) | |
2024-08-29
| ||
17:42 | [d37f2b9e5b] part of check-in [87aa6fc212] Merge all the latest trunk enhancements into the reuse-schema branch. (check-in: [87aa6fc212] user: drh branch: reuse-schema, size: 283753) | |
2024-08-24
| ||
11:48 | [c046dd58c3] part of check-in [b75f8b2252] Ensure that the WhereLoop.u.btree.pOrderBy field added by the order-by-subquery optimization [7a0cdc7edb704a88] is correctly initialized. dbsqlfuzz 437be171a98687082a31ea6efc2fd5c5d64481c8. (check-in: [b75f8b2252] user: drh branch: trunk, size: 283735) | |
2024-08-22
| ||
16:22 | [70392f65e2] part of check-in [6c00e88ebd] Add the SQLITE_INDEX_SCAN_HEX bit to the sqlite3_index_info.idxFlags bitmask. When set, this bit causes the EXPLAIN QUERY PLAN output to show the idxNum value in hex rather than in decimal. This is purely a debugging aid. (check-in: [6c00e88ebd] user: drh branch: trunk, size: 283703) | |
2024-08-21
| ||
17:38 | [61fea6c34c] part of check-in [6b024c85ef] Improved comments on byte-code subroutine calls to materialize subqueries. Should not affect production builds. (check-in: [6b024c85ef] user: drh branch: trunk, size: 283628) | |
2024-08-19
| ||
22:48 | [b6f79b189f] part of check-in [8ff5dda844] Refactor the SrcItem object so that information about subqueries is stored in a separately allocated Subquery object. This reduces the memory requirements for SrcItem and makes the code run faster. It also provides an expansion path for subquery processing that does not burden simple queries. The current checking mostly works, but there are still issues that need to be tracked down and fixed. (check-in: [8ff5dda844] user: drh branch: srcitem-opt, size: 283610) | |
2024-08-17
| ||
23:23 | [d0140395a3] part of check-in [9f5aeef3cb] Give unique names to fields in the SrcItem object, to facilitate analysis of how those fields are used using "grep". (check-in: [9f5aeef3cb] user: drh branch: srcitem-opt, size: 283222) | |
2024-08-16
| ||
11:26 | [f5be664f33] part of check-in [41a41c173a] Fix handling of COLLATE. Add test cases for the same. Code cleanup for improved understandability and maintainability. (check-in: [41a41c173a] user: drh branch: order-by-subquery, size: 283149) | |
02:19 | [154533a45d] part of check-in [5a9a3b8af7] Bug fix in the subquery ORDER BY propagator. (check-in: [5a9a3b8af7] user: drh branch: order-by-subquery, size: 281691) | |
00:37 | [c6b742473a] part of check-in [b82421e3f5] Improvements to the subquery ORDER BY decision algorithm. Fewer false-negatives. (check-in: [b82421e3f5] user: drh branch: order-by-subquery, size: 281660) | |
2024-08-15
| ||
23:38 | [c59dffd249] part of check-in [2fbb4dc232] If a subquery is materialized due to an ORDER BY and that ordering is useful in helping to satisfy the ORDER BY or GROUP BY in the order query without doing an extra sort, then omit the extra sort. (check-in: [2fbb4dc232] user: drh branch: order-by-subquery, size: 281591) | |
2024-08-10
| ||
20:24 | [e507fb69f3] part of check-in [31a71a79bf] Merge the latest trunk enhancements into main reuse-schema branch. (check-in: [31a71a79bf] user: drh branch: reuse-schema, size: 278658) | |
20:22 | [30b2faf8b8] part of check-in [a27b12ee22] Merge all the branch-3.46 patches into the reuse-schema as a new sub-branch called reuse-schema-3.46. (check-in: [a27b12ee22] user: drh branch: reuse-schema-3.46, size: 272090) | |
14:56 | [839956666c] part of check-in [d6fc6e5f0a] Fix behavior change in the offset() SQL function introduced by check-in f0b671183f44d0ae. (check-in: [d6fc6e5f0a] user: drh branch: branch-3.46, size: 272072) | |
14:53 | [3556ef464a] part of check-in [c2ac17f183] Fix behavior change in the offset() SQL function introduced by check-in [f0b671183f44d0ae]. (check-in: [c2ac17f183] user: drh branch: trunk, size: 278640) | |
10:14 | [c015aba5f4] part of check-in [4afe3201f0] Enhancements to covering-index prediction. Add early detection of over-prediction of covering-indexes so that sqlite3_prepare() will return an error rather than just generate bad bytecode. (check-in: [4afe3201f0] user: drh branch: branch-3.46, size: 272072) | |
2024-08-09
| ||
17:09 | [5fa17ec4e3] part of check-in [fae39ae932] Do not attempt to use a covering index based purely on columns-used when doing an UPDATE or DELETE of a WITHOUT ROWID table. Raise an SQLITE_INTERNAL error if there is ever a situation where a table reference cannot be converted into an index reference when the query planner thinks that a covering index is appropriate. (check-in: [fae39ae932] user: drh branch: covering-index-patch, size: 278640) | |
02:10 | [4d2317e989] part of check-in [8894b243ef] Change the null-cursor in the previous check-in into a death-cursor. Any access of the cursor causes the prepared statement to return an SQLITE_INTERNAL error. We'll need to add a way to edit the bytecode using sqlite3_test_control() in order to test the death-cursor code path. (check-in: [8894b243ef] user: drh branch: death-cursor, size: 278724) | |
01:38 | [b1c25ee0a1] part of check-in [7f1617f7bf] If there is any question about whether or not the WHERE_IDX_ONLY flag in the query planner is correct, create a backup null-cursor for the table, so that we never try to run an OP_Column against an unopened cursor. (check-in: [7f1617f7bf] user: drh branch: death-cursor, size: 279675) | |
2024-08-08
| ||
19:45 | [a0b4a7f510] part of check-in [7058d93b09] Do not allow the WHERE_IDX_ONLY query planner result in cases where a partial index is used on an UPDATE or a DELETE, since the code might still need to access the original table due to parameterized terms in the WHERE clause of the partial index. (check-in: [7058d93b09] user: drh branch: partial-index-terms-patch, size: 279625) | |
16:04 | [a5e554aa26] part of check-in [7f464793fc] In the vdbe_addoptrace output, show OP_Column opcodes that fail to translate from table to index. This is an aid to testing and analysis only. No changes to production code. (check-in: [7f464793fc] user: drh branch: extra-debug, size: 279348) | |
2024-08-03
| ||
23:00 | [5bbe53db73] part of check-in [90ac845775] Fix to the previous checkin: The colUsed parameter should have high-order bit set if any of the 64-th or greater columns of the virtual table is used. The lower 63 bits of colUsed always show the usage of the first 63 columns of the virtual table. (check-in: [90ac845775] user: drh branch: trunk, size: 279304) | |
18:45 | [31d100c11a] part of check-in [c327c0c02c] Ensure the sqlite3_index_info.colUsed mask always includes the PK fields of WITHOUT ROWID vtabs in cases where they may be used. (check-in: [c327c0c02c] user: dan branch: vtab-pk-colUsed-fix, size: 279243) | |
2024-08-01
| ||
01:06 | [6329349181] part of check-in [ff9fdd07d2] Merge the latest trunk enhancements into the reuse-schema branch. (check-in: [ff9fdd07d2] user: drh branch: reuse-schema, size: 278882) | |
2024-07-21
| ||
23:36 | [060eda5c68] part of check-in [9182e99952] Merge debugging output fixes from trunk into the lateral-join branch. (check-in: [9182e99952] user: drh branch: lateral-join, size: 280159) | |
23:10 | [d87a4160e2] part of check-in [2c122026db] Improved debugging output when using PRAGMA vdbe_addoptrace: Show the range of opcodes being checked for Column-to-Copy conversion. (check-in: [2c122026db] user: drh branch: trunk, size: 278864) | |
21:37 | [44ae623e37] part of check-in [6d863172dc] Fix to the case of a LATERAL subquery that references a prior table that uses a covering index. Forum post fc29fa4f14. (check-in: [6d863172dc] user: drh branch: lateral-join, size: 279973) | |
10:35 | [4517b21f17] part of check-in [31e175fcd0] Fix LATERAL subqueries so that they are able to reference other subqueries to their left that are implemented as co-routines. See Forum post dfe2cd37ca3a9a80. (check-in: [31e175fcd0] user: drh branch: lateral-join, size: 279050) | |
2024-07-20
| ||
14:06 | [584b30e86a] part of check-in [874bc7bc25] Add testcase() macros to bitmap tests in the new code. (check-in: [874bc7bc25] user: drh branch: lateral-join, size: 279022) | |
01:19 | [e411ef973e] part of check-in [3c045a96bc] Experimental implementation of LATERAL JOIN. (check-in: [3c045a96bc] user: drh branch: lateral-join, size: 278724) | |
2024-06-14
| ||
19:27 | [70e1279695] part of check-in [ca06380233] Fix harmless comment typo. (check-in: [ca06380233] user: drh branch: recursive-cte-orderby-fix, size: 278678) | |
2024-06-09
| ||
18:02 | [93d08f6d4b] part of check-in [d2d37e6d2b] Disable the omit-noop-join optimization when there are 64 or more terms in the ORDER BY clause. (check-in: [d2d37e6d2b] user: drh branch: branch-3.45, size: 264308) | |
17:58 | [4df8b013fe] part of check-in [a7fe90c158] Disable the omit-noop-join optimization when there are 64 or more terms in the ORDER BY clause. (check-in: [a7fe90c158] user: drh branch: branch-3.46, size: 272736) | |
17:34 | [94c2ae6c3e] part of check-in [40de393979] Disable the omit-noop-join optimization when there are 64 or more terms in the ORDER BY clause. (check-in: [40de393979] user: drh branch: trunk, size: 278677) | |
2024-06-06
| ||
16:06 | [7b276c3110] part of check-in [b44f267671] Better optimize queries that use parameters in the LIMIT clause. (check-in: [b44f267671] user: drh branch: branch-3.28-var-in-limit, size: 212811) | |
15:03 | [c93a38b97e] part of check-in [e58cb304d1] Better optimize queries that use parameters in the LIMIT clause. (check-in: [e58cb304d1] user: drh branch: var-in-limit, size: 278386) | |
2024-06-04
| ||
17:26 | [343e74d658] part of check-in [1976c3f7e1] Better handle WHERE terms that are common to two or more OR branches when planning virtual table queries. Fix for ticket [6e3ace1270f29930]. (check-in: [1976c3f7e1] user: dan branch: trunk, size: 278383) | |
2024-06-02
| ||
10:52 | [233c668403] part of check-in [85dcd0a847] Be more aggressive about freeing memory associated with the sqlite3_index_info.idxStr field. (check-in: [85dcd0a847] user: drh branch: xbestindex-or-terms, size: 278334) | |
2024-05-31
| ||
19:26 | [ddffcd89b1] part of check-in [4edd9b29f5] Better handle WHERE terms that are common to two or more OR branches when planning virtual table queries. (check-in: [4edd9b29f5] user: dan branch: xbestindex-or-terms, size: 278242) | |
15:39 | [593d28d377] part of check-in [a07ec16bbc] 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 branch: trunk, size: 277542) | |
14:39 | [301bedd98c] part of check-in [996c46e61d] 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 branch: trunk, size: 277542) | |
2024-05-30
| ||
13:27 | [5ddff7d4e0] part of check-in [a47c644fef] 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 branch: trunk, size: 277493) | |
2024-05-29
| ||
14:32 | [fee27468ac] part of check-in [5e64b541d1] Change an assert() (incorrectly) added by the previous check-in into a testcase(). (check-in: [5e64b541d1] user: drh branch: star-schema, size: 277469) | |
14:04 | [ae248eaaa2] part of check-in [bdab69641d] Small performance enhancement in wherePathSolver() (check-in: [bdab69641d] user: drh branch: star-schema, size: 277466) | |
13:29 | [8b1e8f8db0] part of check-in [85164ee155] Improvements to comments and debugging output. (check-in: [85164ee155] user: drh branch: star-schema, size: 277367) | |
10:40 | [c0252858ec] part of check-in [21daf2463e] 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 branch: star-schema, size: 276805) | |
00:38 | [4b777f3c20] part of check-in [a98be0f548] Use a heuristic in the query planner to help it better cope with large star schema queries. (check-in: [a98be0f548] user: drh branch: star-schema, size: 276377) | |
2024-05-28
| ||
18:53 | [692d3d72c6] part of check-in [1e49081001] 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 branch: trunk, size: 273993) | |
12:41 | [c65f886283] part of check-in [8ba2c2f5cb] 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 branch: trunk, size: 273981) | |
00:16 | [ad4866c036] part of check-in [2a7603c327] 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 branch: trunk, size: 273615) | |
00:01 | [dd7d9eb570] part of check-in [fe2e1dadba] Query planner tuning: Increase the maximum number of simultaneous solutions to track in the solver from 10 to 12. (check-in: [fe2e1dadba] user: drh branch: trunk, size: 272592) | |
2024-05-27
| ||
21:55 | [555c75e91b] part of check-in [70409763f7] Avoid creating an automatic index on a column that is known to be not very selective. (check-in: [70409763f7] user: drh branch: auto-index-improvements, size: 273471) | |
2024-05-23
| ||
15:05 | [9b2ab23fcc] part of check-in [1e5385ffc3] 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 branch: trunk, size: 272448) | |
2024-05-21
| ||
15:20 | [7a7adc61f1] part of check-in [97e0af8882] Merge the lates trunk enhancements into the reuse-schema branch. (check-in: [97e0af8882] user: drh branch: reuse-schema, size: 272463) | |
2024-05-18
| ||
20:00 | [6f02c3936d] part of check-in [922731ce98] 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 branch: vtab-distinct-fix, size: 272445) | |
2024-05-17
| ||
13:56 | [211c073b42] part of check-in [b41e71208a] Fix a problem in where.c preventing SQLite from identifying some ONEROW scans, leading to (slightly) sub-optimal byte-code. (check-in: [b41e71208a] user: dan branch: fix-onerow-opt, size: 272425) | |
2024-05-04
| ||
15:04 | [d235ba520b] part of check-in [f16b200f25] 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. (check-in: [f16b200f25] user: drh branch: func-rw-subtype, size: 272422) | |
2024-04-26
| ||
17:19 | [0ef9638651] part of check-in [7d30596496] Have where.c ignore any plan from a virtual table that tries to use LIMIT/OFFSET without also using all WHERE constraints. (check-in: [7d30596496] user: dan branch: vtab-limit-fix, size: 270878) | |
2024-04-23
| ||
12:02 | [447d876163] part of check-in [86e8c782e7] Fix a problem with vector IN operators used with an index where the affinities and collations for the various vector terms are different. (check-in: [86e8c782e7] user: drh branch: trunk, size: 270093) | |
11:56 | [09dc0b63e1] part of check-in [85625b3871] Fix an uninitialized variable problem in the new code on this branch. (check-in: [85625b3871] user: dan branch: vector-in-fix, size: 270110) | |
2024-04-22
| ||
13:31 | [c6c1473509] part of check-in [672c2869ef] Extra robustness in the code that causes cursors to return NULL when they are participating in an OUTER JOIN. (check-in: [672c2869ef] user: drh branch: trunk, size: 268680) | |
2024-04-20
| ||
19:19 | [79c673bf23] part of check-in [500c67f134] Slight performance improvement for the new code on this branch. (check-in: [500c67f134] user: dan branch: vector-in-fix, size: 270088) | |
15:14 | [b4eb20a2e5] part of check-in [4d870fd8b5] Fix a problem where an expression like (a, b) IN (SELECT ...) might not use an index on (a, b) if the affinities and collation sequences of "a" and "b" are not identical. (check-in: [4d870fd8b5] user: dan branch: vector-in-fix, size: 269459) | |
2024-04-18
| ||
16:11 | [40ee94edd4] part of check-in [8c0f69e0e4] Correct handling of OUTER JOIN when on or the other operand is a subquery implemented using the VALUES-as-coroutine optimization. dbsqlfuzz bde3bf80aedf25afa56e2997a0545a314765d3f8. (check-in: [8c0f69e0e4] user: drh branch: trunk, size: 268697) | |
2024-04-15
| ||
14:59 | [a7d3c89822] part of check-in [a1ff415341] Merge version 3.45.3 patches into the reuse-schema-3.45 sub-branch. (check-in: [a1ff415341] user: drh branch: reuse-schema-3.45, size: 264035) | |
2024-04-06
| ||
18:30 | [09253e913d] part of check-in [8682931f9c] Do not allow changes to sqlite3ExprIsTableConstant() that support pushdown of subqueries interfere with the hash-join logic. (check-in: [8682931f9c] user: drh branch: pushdown-subquery, size: 268429) | |
2024-04-05
| ||
15:04 | [aa2f7b6cff] part of check-in [e556f3d381] Merge all recent trunk enhancements into the reuse-schema branch. (check-in: [e556f3d381] user: drh branch: reuse-schema, size: 268441) | |
14:13 | [66480f67be] part of check-in [083b0f7e77] Check-in a9657c87c53c1922 is wrong: the IndexedExpr.bMaybeNullRow flag is required for virtual columns if they are part of an outer join. Add a test case to prove it. (check-in: [083b0f7e77] user: drh branch: branch-3.44, size: 261801) | |
14:06 | [e3cb2a01bc] part of check-in [4b3a253fc7] Fix obscure issues associated with SQLITE_ALLOW_ROWID_IN_VIEW and indexes on virtual columns in a RIGHT JOIN. (check-in: [4b3a253fc7] user: drh branch: branch-3.45, size: 264017) | |
13:56 | [9982128f01] part of check-in [4484ec6d26] Check-in [a9657c87c53c1922] is wrong: the IndexedExpr.bMaybeNullRow flag is required for virtual columns if they are part of an outer join. Add a test case (derived from dbsqlfuzz b9e65e2f110df998f1306571fae7af6c01e4d92b) to prove it. (check-in: [4484ec6d26] user: drh branch: trunk, size: 268423) | |
2024-04-02
| ||
18:48 | [88042f93c5] part of check-in [357d9513d2] Fix typos in comments. Provided ".wheretrace" debugging output for the interstage heuristic module. Do omit automatic index loops in the interstage heuristic. (check-in: [357d9513d2] user: drh branch: branch-3.28, size: 212808) | |
14:12 | [08ffccb5b8] part of check-in [186dcae19e] Fix typos in comments. Provided ".wheretrace" debugging output for the interstage heuristic module. Do omit automatic index loops in the interstage heuristic. (check-in: [186dcae19e] user: drh branch: interstage-heuristic, size: 268663) | |
11:54 | [9c4a3b64e6] part of check-in [74b247d958] Add a heuristic in between the two solver() passes of the query planner that tries to prevent a very slow query plan in cases where the output row count estimate is imprecise. (check-in: [74b247d958] user: drh branch: branch-3.28, size: 212382) | |
11:44 | [ba9d22fda3] part of check-in [8018417b01] Add a heuristic in between the two solver() passes of the query planner that tries to prevent a very slow query plan in cases where the output row count estimate is imprecise. (check-in: [8018417b01] user: drh branch: interstage-heuristic, size: 268230) | |
2024-04-01
| ||
15:38 | [a15429ae9d] part of check-in [0b2ac2cdc7] Improved comments in the query planner logic that computes the cost for a particular step in a query plan. No code changes. (check-in: [0b2ac2cdc7] user: drh branch: trunk, size: 265374) | |
2024-03-26
| ||
10:48 | [203c385e42] part of check-in [e469b02205] Merge all recent trunk enhancements into the reuse-schema branch. (check-in: [e469b02205] user: drh branch: reuse-schema, size: 264919) | |
2024-03-25
| ||
14:44 | [11a67988c3] part of check-in [fdc9406f1c] Fix an inaccuracy in automatic indexes that was exposed by the fix at [80c4223098c1827f]. (check-in: [fdc9406f1c] user: drh branch: trunk, size: 264901) | |
2024-03-24
| ||
20:26 | [2e01199202] part of check-in [33966bb06c] Improved "wheretrace" debugging output for calls to xBestIndex. No changes to release code. (check-in: [33966bb06c] user: drh branch: trunk, size: 264890) | |
2024-03-20
| ||
11:36 | [b10d2f7e92] part of check-in [e8d5caef26] Automatically disable the DISTINCT optimization during query planning if the ORDER BY clause exceeds 63 terms. dbsqlfuzz afd1d61fc27d14938a0d78a50970fa1e9fbfee58. (check-in: [e8d5caef26] user: drh branch: branch-3.44, size: 262041) | |
2024-03-18
| ||
18:56 | [a34a0eeb04] part of check-in [c2d4adabb9] Merge the latest trunk enhancements into the reuse-schema branch. (check-in: [c2d4adabb9] user: drh branch: reuse-schema, size: 264537) | |
12:49 | [5e9a5d642c] part of check-in [ac6f095e13] Improvements to EXPLAIN QUERY PLAN output for multi-row VALUES claues. (check-in: [ac6f095e13] user: drh branch: exp-values-clause2, size: 264519) | |
2024-03-16
| ||
13:18 | [3efa165f92] part of check-in [c9e0488c6c] Enhance the sqlite3ExprIsConstant() function so that it recognizes constant functions. So far the enhancement only applies to the multi-row VALUES clause, but it could possibly be applied in many other places. (check-in: [c9e0488c6c] user: drh branch: enhanced-expr-is-const, size: 264417) | |
2024-03-13
| ||
15:59 | [6e17182650] part of check-in [70ef3784f6] Merge the latest trunk enhancements into the reuse-schema branch. Fix the reuse-schema build of the CLI so that it works again. (check-in: [70ef3784f6] user: drh branch: reuse-schema, size: 264382) | |
2024-03-11
| ||
17:27 | [8bb70b3caa] part of check-in [17d1f7cfab] Attempt to reduce the memory used by VALUES clauses in as many statements as possible, not just INSERT. This branch still has problems. (check-in: [17d1f7cfab] user: dan branch: exp-values-clause2, size: 264404) | |
2024-02-20
| ||
16:04 | [33eaaeef3a] part of check-in [43cbbea821] Consider using "=" and IS operators with even low-quality indexes in cases where they are selected explicitly using an INDEXED BY clause. (check-in: [43cbbea821] user: dan branch: incr-integrity-check, size: 264364) | |
2024-02-16
| ||
12:57 | [0e7bf004a5] part of check-in [b4790da5e0] Rename the TF_StatsUsed flag to TF_MaybeReanalyze, to more accurately reflect its usage. No logic changes. (check-in: [b4790da5e0] user: drh branch: trunk, size: 264325) | |
2024-01-31
| ||
20:11 | [0a6492afeb] part of check-in [44b5524d52] Replace an conditional assignment that was made obsolete by [d4c193f0b49f4950] with an assert(). The conditional was added by [d6fd512f50513ab7] as a fix for tickets [c36cdb4afd504dc1], [4051a7f931d9ba24], and [d6fd512f50513ab7] which means now [d4c193f0b49f4950] is the correct fix for those tickets. that check-in (check-in: [44b5524d52] user: drh branch: trunk, size: 264315) | |
2024-01-30
| ||
17:02 | [b323812522] part of check-in [f98a99fce5] Merge the 3.45.1 patches into the reuse-schema branch. (check-in: [f98a99fce5] user: drh branch: reuse-schema-3.45, size: 264275) | |
2024-01-29
| ||
19:30 | [e38e376778] part of check-in [ad06868807] Consider an index for queries like "SELECT count(DISTINCT col) FROM ...", even if the index records are not smaller than the table records. (check-in: [ad06868807] user: dan branch: trunk, size: 264298) | |
2024-01-28
| ||
17:39 | [56277e7110] part of check-in [d4c193f0b4] Automatically disable the DISTINCT optimization during query planning if the ORDER BY clause exceeds 63 terms. dbsqlfuzz afd1d61fc27d14938a0d78a50970fa1e9fbfee58. (check-in: [d4c193f0b4] user: drh branch: trunk, size: 264257) | |
2024-01-04
| ||
17:33 | [976ece3d2a] part of check-in [e07f2451e8] Merge the latest trunk enhancements into the reuse-schema branch. (check-in: [e07f2451e8] user: drh branch: reuse-schema, size: 264226) | |
2024-01-01
| ||
17:48 | [217fe82a26] part of check-in [c030e64626] Extra steps taken to avoid using low-quality indexes in a query plan. This branch accomplishes the same end as the nearby enhanced-stat1 branch, but with much less change and hence less risk. (check-in: [c030e64626] user: drh branch: avoid-low-quality-indexes, size: 264208) | |
2023-12-30
| ||
22:00 | [38ca04a808] part of check-in [41773fa760] In sqlite_stat1, revert the number of rows to the average, not adjusted for the maximum. Instead add "uneven=NNN" where NNN is a multiplier to apply to the average to get the maximum. "uneven" is only reported if NNN is 10 or more. Also add the "slow" argument is the maximum number of rows reported by a full equality match is so large that a table scan seems likely to be faster. (check-in: [41773fa760] user: drh branch: enhanced-stat1, size: 264205) | |
15:07 | [927a1c803e] part of check-in [0ec4b880bb] Omit the "noquery" argument in sqlite_stat1. Instead, add the "uneven" argument for indexes that have an uneven distribution of values. Modify the query planner to avoid doing equality look-ups on uneven indexes. (check-in: [0ec4b880bb] user: drh branch: enhanced-stat1, size: 264204) | |
2023-12-28
| ||
14:07 | [0508333ac2] part of check-in [3d1b0403d6] Merge the latest trunk changes into the reuse-schema branch. (check-in: [3d1b0403d6] user: drh branch: reuse-schema, size: 264111) | |
2023-12-24
| ||
11:43 | [0bfab37c7f] part of check-in [e55d1c2333] Fix harmless compiler warnings associated with [5db30bcc338aac1c] (check-in: [e55d1c2333] user: drh branch: trunk, size: 264093) | |
2023-12-23
| ||
19:03 | [fa15b07638] part of check-in [72fcc12cda] Improvements to the query planner to address the inefficiency described by forum post 2568d1f6e6. (check-in: [72fcc12cda] user: drh branch: trunk, size: 263897) | |
11:31 | [d2c3185186] part of check-in [5db30bcc33] Add debugging output routines sqlite3ShowWhereLoop(X) and sqlite3ShowWhereLoopList(X) that can be invoked from a debugger to show a summary of the content of a single WhereLoop object or a list of WhereLoop objects. No change in release builds. (check-in: [5db30bcc33] user: drh branch: trunk, size: 263444) | |
2023-12-22
| ||
21:22 | [a97ed10fcc] part of check-in [94c3e1110c] Change parameters on a debugging function to include "const". (check-in: [94c3e1110c] user: drh branch: trunk, size: 263067) | |
12:57 | [3c171949dd] part of check-in [da5f34fd40] Add a new comment to debugging output routine sqlite3WhereLoopPrint() to remind us of what the various fields of the debug output mean. No changes to code. (check-in: [da5f34fd40] user: drh branch: trunk, size: 263055) | |
2023-12-19
| ||
14:54 | [e80c22f033] part of check-in [0c8d88e411] More precise computation of the size of data structures in the query planner. Response to Forum post 7d8685d49d. (check-in: [0c8d88e411] user: drh branch: trunk, size: 262383) | |
2023-12-08
| ||
12:58 | [dad4b472b8] part of check-in [34f9e9a8c4] Fix a harmless compiler warning about "confusing indentation". (check-in: [34f9e9a8c4] user: drh branch: trunk, size: 262319) | |
2023-12-06
| ||
22:22 | [76864296bc] part of check-in [5c36819c42] Merge the latest trunk enhancements into the reuse-schema branch. (check-in: [5c36819c42] user: drh branch: reuse-schema, size: 262325) | |
2023-11-22
| ||
16:32 | [190d2a0a06] part of check-in [24fc47afbd] Merge the 3.44.1 patches into a new sub-branch of reuse-schema. (check-in: [24fc47afbd] user: drh branch: reuse-schema-3.44, size: 262010) | |
2023-11-14
| ||
13:51 | [1fdc69ce13] part of check-in [eba180e779] Extra PRAGMA vdbe_addoptrace output showing when OP_Column gets translated into OP_Copy due to using a coroutine instead of a cursor. (check-in: [eba180e779] user: drh branch: trunk, size: 262307) | |
2023-11-10
| ||
20:35 | [45b2239e12] part of check-in [12885e298b] Remove an incorrect ALWAYS() that was inserted yesterday [1e039b6eb59c0001]. (check-in: [12885e298b] user: drh branch: trunk, size: 261992) | |
16:29 | [5b14ccd10e] part of check-in [a976b7208f] Remove a NEVER() from whereAddIndexedExpr() that is reachable if there is an unknown indexed function in the schema. (check-in: [a976b7208f] user: drh branch: trunk, size: 262000) | |
2023-11-09
| ||
17:26 | [d6ac0f598e] part of check-in [1e039b6eb5] Put an ALWAYS on an true branch. (check-in: [1e039b6eb5] user: drh branch: func-rw-subtype, size: 262007) | |
12:17 | [8718d58065] part of check-in [a35d13db09] Do not replace expressions that return subtypes with values taken from an index. (check-in: [a35d13db09] user: drh branch: func-rw-subtype, size: 261999) | |
2023-11-08
| ||
18:08 | [431309d792] part of check-in [e908b26a99] Do not cover expressions using an indexed expression if the indexed expression is a function that might set a subtype. (check-in: [e908b26a99] user: drh branch: idx-expr-fix, size: 261777) | |
2023-10-23
| ||
19:27 | [d241917a99] part of check-in [52262ac920] Merge the latest trunk enhancments into the reuse-schema branch. (check-in: [52262ac920] user: drh branch: reuse-schema, size: 261428) | |
2023-09-29
| ||
15:53 | [313ce81270] part of check-in [f090af775f] Remove an incorrect assert(). (check-in: [f090af775f] user: drh branch: trunk, size: 261410) | |
2023-09-26
| ||
19:38 | [c21ee2abe9] part of check-in [f459d0806c] Fix yet another assert() in the partial-index constant value optimization. (check-in: [f459d0806c] user: drh branch: trunk, size: 261523) | |
19:26 | [22eae55cac] part of check-in [63aea8c3e0] Remove a NEVER() from a condition in the partial-index constant value optimization that can sometimes be true. (check-in: [63aea8c3e0] user: dan branch: trunk, size: 261447) | |
14:57 | [2897a7fd5a] part of check-in [7ad38254c3] Remove unreachable code from the partial-index constant value optimization ([8d4160910d651246]). (check-in: [7ad38254c3] user: drh branch: trunk, size: 261454) | |
2023-09-25
| ||
17:21 | [8e4f2d16c6] part of check-in [2c805dc681] Another very minor tweak to code on this branch to save cycles. (check-in: [2c805dc681] user: dan branch: partial-index-terms, size: 261484) | |
15:25 | [ad7c28cabd] part of check-in [f80dc64483] Change the order of an if..else... in new code to make it slightly faster. (check-in: [f80dc64483] user: dan branch: partial-index-terms, size: 261485) | |
11:12 | [9a16bc1c21] part of check-in [5775f92b31] Fix a bad interaction between LEFT JOIN, bloom filters and partial indexes. (check-in: [5775f92b31] user: dan branch: partial-index-terms, size: 261459) | |
2023-09-23
| ||
19:25 | [c68648edad] part of check-in [d5dd39e37a] Avoid an error when parsing a schema that contains indexes with WHERE clauses containing unknown collation sequences. (check-in: [d5dd39e37a] user: dan branch: partial-index-terms, size: 261263) | |
18:52 | [e2ce695f59] part of check-in [d0e21f20bd] Fix a failing assert() caused by changes on this branch. (check-in: [d0e21f20bd] user: dan branch: partial-index-terms, size: 260989) | |
2023-09-22
| ||
20:21 | [cf43f27364] part of check-in [66ed7abdfa] In partial index scans, if the WHERE clause implies a constant value for a table column, replace occurences of that table column with the constant. This increases the likelihood of the partial index being a covering index. (check-in: [66ed7abdfa] user: dan branch: partial-index-terms, size: 260939) | |
2023-09-15
| ||
20:04 | [9adf9d9e55] part of check-in [796a65fa61] Drop support for the view-scan optimization as it was causing multiple performance regressions. In its place, reduce the estimated row count for DISTINCT subsqueries by a factor of 8. (check-in: [796a65fa61] user: drh branch: branch-3.28, size: 209526) | |
19:27 | [b05f3e60d5] part of check-in [0738386d7c] Minor simplification to the DISTINCT output row count change. (check-in: [0738386d7c] user: drh branch: rethink-viewscan, size: 257667) | |
19:00 | [bd10b322a4] part of check-in [27390051e8] Do not reduce subquery output row count estimates due to DISTINCT until after the decision of whether or not to use an index for ORDER BY has been made. (check-in: [27390051e8] user: drh branch: rethink-viewscan, size: 257698) | |
16:15 | [6cdf686c80] part of check-in [5a940e47d5] Experimental: Assume that a DISTINCT clause on a subquery reduces the number of rows returned by that subquery by a factor of 8. (check-in: [5a940e47d5] user: drh branch: rethink-viewscan, size: 257540) | |
14:06 | [faa2798d76] part of check-in [d9625a9eaf] The view-scan optimization was added to enhance the performance of one specific query, but it causes performance regressions on a host of others. Disable it (at least temporarily) in order to try to find an alternative way of fixing the one specific query that it was created to fix - an alternative way that does not cause performance problems for other unrelated queries. (check-in: [d9625a9eaf] user: drh branch: rethink-viewscan, size: 257304) | |
2023-09-05
| ||
15:03 | [86f901cdbc] part of check-in [93f74490fa] Fix a few SQLITE_MISUSE returns so that they call sqlite3MisuseError(). (check-in: [93f74490fa] user: drh branch: trunk, size: 257729) | |
2023-08-12
| ||
12:16 | [54f0f2dd13] part of check-in [d2b0ddcc75] Merge the latest trunk enhancements into the reuse-schema branch. (check-in: [d2b0ddcc75] user: drh branch: reuse-schema, size: 257742) | |
2023-08-02
| ||
13:29 | [b8917792f1] part of check-in [f068f105fb] Remove a condition from query flattening that is now taken care of by the caller. Factor out the reverse_unordered_selects processing from the main loop of sqlite3WhereBegin() for performance. (check-in: [f068f105fb] user: drh branch: materialize-order-by, size: 257724) | |
12:39 | [d4240edf4c] part of check-in [165b9bda24] Simplify the select.c logic that enforces the optimization fence around a MATERIALIZED common table expression. Do not allow the reverse_unordered_selects setting to affect a fenced CTE that itself has an ORDER BY clause. (check-in: [165b9bda24] user: drh branch: materialize-order-by, size: 257804) | |
2023-07-31
| ||
17:39 | [dbbd858832] part of check-in [22f6dd5cd3] Add bit to sqlite3_test_control(SQLITE_TESTCTRL_OPTIMIZATIONS) that will disable the one-pass optimizating in DELETE and UPDATE. (check-in: [22f6dd5cd3] user: drh branch: trunk, size: 257015) | |
17:20 | [4dbe228a46] part of check-in [4a8a17498e] Improved debug tracking of the Parse.nQueryLoop value. (check-in: [4a8a17498e] user: drh branch: trunk, size: 256967) | |
2023-07-28
| ||
21:38 | [6041f3cae9] part of check-in [6b79cc7dd0] Fix doc error noted in the forum and a misspelling. (check-in: [6b79cc7dd0] user: larrybr branch: trunk, size: 256911) | |
2023-07-24
| ||
13:30 | [c4575958bc] part of check-in [e0e7b01e27] Merge the latest trunk enhancements into the reuse-schema branch. (check-in: [e0e7b01e27] user: drh branch: reuse-schema, size: 256928) | |
2023-07-18
| ||
21:06 | [477fcc5e56] part of check-in [76152ad2ff] Do not use the viewscan optimization on a query that has only a single loop, as the cost adjustments can cause problems for outer queries. Proposed fix for the performance regression reported by forum post 64d36440e473516c. (check-in: [76152ad2ff] user: drh branch: trunk, size: 256910) | |
20:41 | [e551d13d4a] part of check-in [27057ea76b] Improved ".wheretrace" for the VIEWSCAN optimization. (check-in: [27057ea76b] user: drh branch: trunk, size: 256899) | |
2023-06-22
| ||
14:50 | [b8506b2bee] part of check-in [905c6c9ddb] Merge the latest trunk enhancements into the reuse-schema branch. (check-in: [905c6c9ddb] user: drh branch: reuse-schema, size: 256840) | |
2023-06-14
| ||
13:45 | [234b8e24af] part of check-in [330219863c] Add SQLITE_DBCONFIG_RANDOM_SCANORDER. This option causes unconstrained table and index scan to happen in a random order, in order to help detect under-constrained queries in applications. Closed because this feature does not add any new capabilities that are not already available with SQLITE_DBCONFIG_REVERSE_SCANORDER, but it does make the behavior non-deterministic, and hence more difficult to test. (check-in: [330219863c] user: drh branch: random-scanorder, size: 256977) | |
2023-06-09
| ||
01:11 | [94c90f8380] part of check-in [d73f065b93] Sync w/trunk. Fix spelling nits. Add ".parameter edit ..." improvements. (check-in: [d73f065b93] user: larrybr branch: cli_extension, size: 256823) | |
2023-06-07
| ||
17:03 | [2dc708cf8b] part of check-in [8c291d9994] Fix straggler misspellings and tidy the custom dictionary. Also include pickups from forum post c61fb09afd. (check-in: [8c291d9994] user: larrybr branch: spell-check, size: 256822) | |
08:40 | [efb828cc5f] part of check-in [26c1bb4bd9] Add a C-source spell-checking facility. make misspell (on Nix) (check-in: [26c1bb4bd9] user: larrybr branch: spell-check, size: 256822) | |
2023-05-16
| ||
13:11 | [d1830ebeda] part of check-in [d67b6c393f] Merge all 3.42.0 release enhancements into the reuse-schema branch. (check-in: [d67b6c393f] user: drh branch: reuse-schema, size: 257024) | |
2023-05-15
| ||
02:06 | [b74a83b4c8] part of check-in [4902015dcf] As evidenced by forum post f3f546025a, the new RIGHT JOIN related restriction on the push-down optimization implemented by [da3fba18742b6e0b] also needs to apply to the automatic index (a.k.a. hash-join) optimization and to the Bloom filter optimization. Computation of the restriction is now moved into the sqlite3ExprIsSingleTableConstraint() routine. (check-in: [4902015dcf] user: drh branch: trunk, size: 257006) | |
01:02 | [58a3ecca3d] part of check-in [c5da165516] Simplify the interface to constructAutomaticIndex(). (check-in: [c5da165516] user: drh branch: trunk, size: 256809) | |
2023-05-13
| ||
15:21 | [c2c8ce91ce] part of check-in [515bb26ee6] Merge the latest 3.42.0 changes into the reuse-schema branch. (check-in: [515bb26ee6] user: drh branch: reuse-schema, size: 256867) | |
2023-05-11
| ||
21:15 | [cec6a06508] part of check-in [3e9c9bbdb5] Add restriction (5) to the omit-noop-join optimization. Fix for the issue reported by [forum/forumpost/49f2c7f690|forum post 49f2c7f690]. (check-in: [3e9c9bbdb5] user: drh branch: trunk, size: 256849) | |
2023-05-10
| ||
11:05 | [324445b046] part of check-in [5dae897431] Rename sqlite3IsTableConstraint() to sqlite3IsSingleTableConstraint() and improve its header comment, in an attempt to make the code easier to reason about. No functional changes - should generate identical machine code. (check-in: [5dae897431] user: drh branch: trunk, size: 256090) | |
2023-05-02
| ||
21:26 | [c46a72f932] part of check-in [d08fa7d4d2] Merge the latest trunk enhancements into the reuse-schema branch. (check-in: [d08fa7d4d2] user: drh branch: reuse-schema, size: 256096) | |
2023-04-25
| ||
15:12 | [9a0e55ddb0] part of check-in [4011b9d340] If an ON clause to the left of a RIGHT JOIN is false, that does not imply that the query returns no rows. (check-in: [4011b9d340] user: drh branch: branch-3.41, size: 255507) | |
14:54 | [f69d94f34e] part of check-in [faa1575ce0] Remove unused variable ltoj accidentally added by [1783655e]. (check-in: [faa1575ce0] user: dan branch: trunk, size: 256078) | |
14:37 | [8899e22a39] part of check-in [1783655ea4] Avoid assuming that an expression in an ON() clause that evaluates to zero implies that the query will return zero rows when the query contains a RIGHT JOIN. Forum Post 95849acbe1. (check-in: [1783655ea4] user: dan branch: trunk, size: 256146) | |
2023-04-09
| ||
10:23 | [481e537f24] part of check-in [450d8ad85c] Fix a faulty assert() in whereRangeScanEst() that should only apply if there are not prior errors. (check-in: [450d8ad85c] user: drh branch: branch-3.41, size: 254407) | |
10:09 | [ef9e644d1d] part of check-in [8ba9b08bd9] Fix a faulty assert() in whereRangeScanEst() that should only apply if there are not prior errors. dbsqlfuzz 567ad91132879cbab8172b38c6a68ad40fa8d650. (check-in: [8ba9b08bd9] user: drh branch: trunk, size: 254978) | |
2023-04-03
| ||
20:11 | [16ba2073aa] part of check-in [050958c182] Improved diagnostic output from PRAGMA vdbe_addoptrace. (check-in: [050958c182] user: drh branch: trunk, size: 254960) | |
15:01 | [8c348f0801] part of check-in [bcd51abee0] Add the SQLITE_VTAB_USES_ALL_SCHEMAS option to sqlite3_vtab_config(). Update the sqlite_dbpage, sqlite_dbdata, and sqlite_dbptr virtual tables to make use of that interface. This was formerly handled by the internal sqlite3VtabUsesAllSchemas() routine that was called directly from sqlite_dbpage. But since sqlite_dbdata and sqlite_dbptr are an extension, an external interface to that functionality had to be provided. dbsqlfuzz 1a29c245175a63393b6a78c5b8cab5199939d6a8 (check-in: [bcd51abee0] user: drh branch: trunk, size: 254897) | |
2023-03-28
| ||
11:21 | [9286604a25] part of check-in [b49816fcce] Fix multiple problems with RETURNING on a DML statement against a view. (1) Do not allow a RETURNING clause to trick the code generator into thinking that the view being updated has an INSTEAD OF trigger. (2) Generate all result columns for a view in a DML statement. (3) The automatic covering index for a view should cover all result columns of the view. (check-in: [b49816fcce] user: drh branch: branch-3.41, size: 254389) | |
11:18 | [2bafa1b7d1] part of check-in [c8bedef0d6] Fix multiple problems with RETURNING on a DML statement against a view, all inspired by forum post dc3b92cfa0. (1) Do not allow a RETURNING clause to trick the code generator into thinking that the view being updated has an INSTEAD OF trigger. (2) Generate all result columns for a view in a DML statement. (3) The automatic covering index for a view should cover all result columns of the view. (check-in: [c8bedef0d6] user: drh branch: trunk, size: 255044) | |
2023-03-25
| ||
02:02 | [5cd8ce282d] part of check-in [fc8ec188d9] Fix a problem in cursor-hints for WITHOUT ROWID tables. (check-in: [fc8ec188d9] user: drh branch: branch-3.41, size: 254325) | |
2023-03-24
| ||
19:17 | [2bf0f0e28a] part of check-in [221fdcec96] Fix a problem in cursor-hints for WITHOUT ROWID tables used in a RIGHT JOIN. Forum post 591006b1cc. (check-in: [221fdcec96] user: drh branch: trunk, size: 254980) | |
2023-03-21
| ||
11:27 | [a016443c4f] part of check-in [cb8b34fa1a] Fix a valgrind error and potential buffer overread when handling a corrupt database. (check-in: [cb8b34fa1a] user: drh branch: branch-3.41, size: 254284) | |
11:13 | [db043f9b2d] part of check-in [b1e0cd6444] Fix a valgrind error and potential buffer overread when handling a corrupt database. (check-in: [b1e0cd6444] user: dan branch: trunk, size: 254939) | |
2023-03-16
| ||
21:05 | [1c2fc433f5] part of check-in [097512b604] Correctly handle SELECT DISTINCT ... ORDER BY when all of the result set terms are constant and there are more result set terms than ORDER BY terms. (check-in: [097512b604] user: drh branch: branch-3.41, size: 254160) | |
20:54 | [f369f3423d] part of check-in [12ad822d9b] Correctly handle SELECT DISTINCT ... ORDER BY when all of the result set terms are constant and there are more result set terms than ORDER BY terms. Fix for these tickets: [c36cdb4afd504dc1], [4051a7f931d9ba24], [d6fd512f50513ab7]. (check-in: [12ad822d9b] user: drh branch: trunk, size: 254815) | |
2023-03-14
| ||
20:16 | [1e731b8843] part of check-in [11e0256b8c] Fix Bloom filters on an expression index. (check-in: [11e0256b8c] user: drh branch: branch-3.41, size: 253994) | |
20:08 | [9f0ffd5f4c] part of check-in [c028fb669a] Fix Bloom filters on an expression index. forum post 2e427099d5 and forum post d47a0e8e3a. This problem goes back to the original introduction of Bloom filters (check-in [633bfeeea2bccdd4]) for SQLite version 3.38.0. (check-in: [c028fb669a] user: drh branch: trunk, size: 254649) | |
2023-03-03
| ||
19:47 | [7e048157dd] part of check-in [65ffee2347] Do not use an expression index on a generated column if generated column has the wrong affinity. (check-in: [65ffee2347] user: drh branch: branch-3.41, size: 253871) | |
15:12 | [201f03ca60] part of check-in [e95439119a] Do not use an expression index on a generated column if generated column has the wrong affinity. dbsqlfuzz 65f5eb57f8859344d5f1f33e08c77ee12960ed83 (check-in: [e95439119a] user: drh branch: trunk, size: 254526) | |
2023-02-28
| ||
19:39 | [6b45dc4c47] part of check-in [0f5579bef2] Add an sqlite3_db_config() option - SQLITE_DBCONFIG_STMT_SCANSTATS - for enabling and disabling the collection of sqlite3_stmt_scanstats() statistics in SQLITE_ENABLE_STMT_SCANSTATUS builds. Collection of statistics is disabled by default. (check-in: [0f5579bef2] user: dan branch: trunk, size: 254434) | |
18:06 | [76d2014b1e] part of check-in [5916705c73] Only use a Bloom filter on an automatic index if one or more of the key columns in the index can take on non-TEXT values. (check-in: [5916705c73] user: drh branch: trunk, size: 254400) | |
13:46 | [accf653499] part of check-in [d7b2ac1c1a] When an automatic index creates a Bloom filter, show that in the EXPLAIN QUERY PLAN output. (check-in: [d7b2ac1c1a] user: drh branch: trunk, size: 253844) | |
2023-02-19
| ||
19:16 | [38c36bb654] part of check-in [b2534d8de5] Fix a harmless compiler warning. (check-in: [b2534d8de5] user: drh branch: trunk, size: 253779) | |
2023-02-08
| ||
14:25 | [5b20d08699] part of check-in [04439f3b23] Update an assert() in the stat4 code that is only true for a well-formed database. (check-in: [04439f3b23] user: dan branch: trunk, size: 253770) | |
2023-02-05
| ||
20:29 | [3bbca70541] part of check-in [e6ab96bd0b] Do not use a Bloom filter if any outer loop lacks STAT1 data, since without STAT1 data, the query planner cannot make an accurate determination of whether or not a Bloom filter will be useful. This fixes the problem reported by forum post 56de336385. (check-in: [e6ab96bd0b] user: drh branch: trunk, size: 253742) | |
2023-01-30
| ||
20:44 | [f180e2fdc9] part of check-in [bf1aae7a8c] Additional tweaks to the enhancement at [609fbb94b8f01d67] to further reduce the cost estimate for constructing an automatic index on an ephemeral table, in order to resolve the performance problem described by forum post 1d571c0296. (check-in: [bf1aae7a8c] user: drh branch: trunk, size: 253769) | |
2023-01-23
| ||
20:45 | [e75ca01cc4] part of check-in [8760566893] Due to a coding error, check-in [8efd61e8518594e3] did not actually use just read transactions if the operation is read-only and the SQLITE_MAX_ATTACHED macro is set to 31 or more. This was due to a misuse of the writeMask field of Parse, pointed out by forum post aa173c18d5. (check-in: [8760566893] user: drh branch: trunk, size: 253645) | |
2023-01-13
| ||
11:31 | [14ee8da18f] part of check-in [3006b3b32f] Remove an incorrect legacy assert(). (check-in: [3006b3b32f] user: drh branch: progress-during-prepare, size: 253629) | |
2023-01-12
| ||
20:36 | [0e5dd009af] part of check-in [795aca4a26] Reduce the frequency of calls to sqlite3ProgressCheck(). (check-in: [795aca4a26] user: drh branch: progress-during-prepare, size: 253754) | |
19:51 | [b9abdf0481] part of check-in [0546165159] Fix sqlite3_prepare() so that it only invokes the progress handler on every N-th call to sqlite3ProgressCheck(), where N is the progress handler step count. Also fix faulty asserts exposed by the ability to interrupt in the middle of sqlite3_prepare(). (check-in: [0546165159] user: drh branch: progress-during-prepare, size: 253733) | |
13:25 | [8022eaf219] part of check-in [79636f2d80] Attempt to provide a mechanism to do early termination of long-running statement preparation by invoking the progress handler at strategic points during sqlite3_parpare(). This experiment shows that sqlite3_prepare() might leave the resulting prepared statement uninitialized following an interrupt. (check-in: [79636f2d80] user: drh branch: progress-during-prepare, size: 253709) | |
2022-12-26
| ||
15:55 | [42f0433bee] part of check-in [cbcd7d9be5] Fix a off-by-one error in code generation that comes up when doing a DISTINCT query against a virtual table with an OR term in the WHERE clause and where the ORDER BY clause has 64 or more references to the result set. Forum post dfe8084751. The error is harmless in production builds, but might cause an assertion fault in a debugging build. (check-in: [cbcd7d9be5] user: drh branch: branch-3.40, size: 246829) | |
2022-12-21
| ||
12:18 | [d0d8e3cb2c] part of check-in [4dc438a951] New WHERETRACE entries for adding and removing objects from the Parse.pIdxEpr list as part of indexed expression coverage. Debug and testing changes only - no affect on production builds. (check-in: [4dc438a951] user: drh branch: trunk, size: 253553) | |
2022-12-20
| ||
01:48 | [72d7f87dee] part of check-in [f113eebdbe] Do not use indexed expressions to replace the expression being indexed on a RIGHT JOIN as that leads to problems, as shown by dbsqlfuzz a644e70d7683a7ca59c71861a153c1dccf8850b9. (check-in: [f113eebdbe] user: drh branch: trunk, size: 253118) | |
2022-12-09
| ||
17:33 | [1425edc179] part of check-in [d125d5afdf] Do not allow OOM faults in EQP messages associated with automatic indexes on co-routines to go unreported. (check-in: [d125d5afdf] user: drh branch: coroutines-exp2, size: 253038) | |
2022-12-07
| ||
17:29 | [3ee4050e45] part of check-in [3bc9df82ea] Have sqlite3_stmt_scanstatus() report cycle, loop and row counts separately for creating an automatic index and using that automatic index. (check-in: [3bc9df82ea] user: dan branch: trunk, size: 252873) | |
00:14 | [adc6783cd3] part of check-in [04af7ef770] Fix a (harmless) off-by-one error in code generation that comes up when doing a DISTINCT query against a virtual table with an OR term in the WHERE clause and where the ORDER BY clause has 64 or more references to the result set. Forum post dfe8084751. NB: The bug is "harmless" in the sense that no harm comes of it in a production build. However, an assertion fault might occur in a debugging build given some really wonky SQL inputs without this fix. (check-in: [04af7ef770] user: drh branch: trunk, size: 251051) | |
2022-12-05
| ||
02:42 | [20f4f51d2d] part of check-in [df3818997b] Use the smaller estimated row size for searching IPK tables, but use the original larger row size estimate for scanning, since the leaves can have large rows. (check-in: [df3818997b] user: drh branch: qp-tuning, size: 251028) | |
2022-12-03
| ||
19:04 | [cf893bd9e4] part of check-in [1a61c500ad] Increase the nominal row size for IPK index lookups slightly, for better balance. (check-in: [1a61c500ad] user: drh branch: qp-tuning, size: 250656) | |
17:09 | [32875f4f73] part of check-in [f3290cf83b] Further improvements to the estimated cost of sorting. Take into account the number of columns to be sorted. (check-in: [f3290cf83b] user: drh branch: qp-tuning, size: 250648) | |
00:52 | [5826b62ddc] part of check-in [9f2806da4d] Tuning the query planner by adjusting the weights that predict the relative performance of sorting and index lookup. (check-in: [9f2806da4d] user: drh branch: qp-tuning, size: 249910) | |
2022-11-30
| ||
19:11 | [bf470b5d1b] part of check-in [8ec361695a] Attempt to rationalize the bits associated with ".wheretrace". Provide a decoder key in sqliteInt.h for what each bit is intended to do. (check-in: [8ec361695a] user: drh branch: trunk, size: 249553) | |
2022-11-28
| ||
15:23 | [81422870d1] part of check-in [b8eec42143] Rework the covering index checking routine, whereIsCoveringIndex(), so that it can return a "maybe" result for aggregate queries where we are not exactly sure. The index is scored as if it is covering, but the main table is still opened. (check-in: [b8eec42143] user: drh branch: covering-indexed-expr, size: 249480) | |
2022-11-26
| ||
20:52 | [1f64631ab2] part of check-in [17ebcf316b] Better reporting of when the WHERE clause analysis thinks that an index is covering. (check-in: [17ebcf316b] user: drh branch: covering-indexed-expr, size: 247976) | |
14:19 | [550388b75a] part of check-in [968c189bcf] Experimental changes to help the query planner detect when an expression index is coverting. Works somewhat, but there are tests that fail. (check-in: [968c189bcf] user: drh branch: covering-indexed-expr, size: 247628) | |
2022-11-21
| ||
16:40 | [ea0f518df9] part of check-in [a2962d0187] Change the name of the Parse.pIdxExpr field to pIdxEpr so that the name is distinct from all other identifiers in the code and thus less confusing. (check-in: [a2962d0187] user: drh branch: trunk, size: 246795) | |
2022-11-03
| ||
21:08 | [5188da8bcc] part of check-in [018914a5a1] Experimental changes that try to identify indexes as covering when they contain expressions which do cover all data uses. This check-in does not work, because the AggInfo object might still refer to individual columns. The purpose of this check-in is to preserve the idea. I might come back to it later. (check-in: [018914a5a1] user: drh branch: indexed-expr-exp, size: 247544) | |
2022-10-24
| ||
13:50 | [6a8b2a825d] part of check-in [3d1992de47] Improve the ability of the query planner to recognize covering indexes even on tables with more than 63 columns and where the index is over columns beyond the 63rd column. (check-in: [3d1992de47] user: drh branch: branch-3.28, size: 209484) | |
2022-10-23
| ||
20:09 | [1ef5aae7fa] part of check-in [9ac73f83c5] The wide-table covering index detection must take into account aggregate queries. (check-in: [9ac73f83c5] user: drh branch: covering-index-enh, size: 246806) | |
2022-10-22
| ||
20:13 | [658d789080] part of check-in [1390417be4] Enhance the query planner with the ability to discern when an index is covering even when it indexes columns well beyond the 63rd column. (check-in: [1390417be4] user: drh branch: covering-index-enh, size: 246778) | |
14:16 | [0e2d1630a0] part of check-in [cadf5f6bb1] This branch attempts to improve the detection of covering indexes. This first check-in merely improves a parameter name to sqlite3WhereBegin() to be more descriptive of what it contains, and ensures that a subroutine is not inlines so that sqlite3WhereBegin() runs slightly faster. (check-in: [cadf5f6bb1] user: drh branch: covering-index-enh, size: 243495) | |
2022-10-21
| ||
20:12 | [d5037ce38c] part of check-in [5dd7858820] Begin transitioning the fixed-length (64-bit) bitmap used to keep track of the subset of columns of a table that are used by a query into a more general structure that can work with wide tables. Experimental. (check-in: [5dd7858820] user: drh branch: column-set, size: 243524) | |
2022-10-20
| ||
16:30 | [bccea9a106] part of check-in [56df1482ab] Add a bit to the optimization disabling mask for the indexed expression optimization. (check-in: [56df1482ab] user: drh branch: trunk, size: 243499) | |
16:12 | [082f38a719] part of check-in [a9657c87c5] Only enable the bMaybeNullRow flag on IndexedExpr for an index on an expression, not on a virtual column. But do enable it for the right operand of a right join. (check-in: [a9657c87c5] user: drh branch: trunk, size: 243452) | |
13:36 | [4c5f6a6f3c] part of check-in [56442c9bdd] The generalized indexed expression optimization of [2435112867fbd7b6] makes the prior [a47efb7c8520a011] enhancement from 2017 obsolete. This check-in removes the older optimization. (check-in: [56442c9bdd] user: drh branch: trunk, size: 243203) | |
2022-10-19
| ||
11:22 | [5f54a44d4a] part of check-in [3da1032878] If a query uses an index where one or more of the columns of the index is an expression and if the corresponding expression is used elsewhere in the query, then strive to read the value of the expression out of the index, rather than recomputing it. This is the "Indexed Expression Optimizations". (check-in: [3da1032878] user: drh branch: branch-3.28, size: 206084) | |
2022-10-18
| ||
22:37 | [5dcd88d080] part of check-in [c21eb903f0] If a virtual column whose value is constant gets indexed, do not include that column in the IndexedExpr list. dbsqlfuzz 59ac17a99b9a5c4930ee71cc153c9428a0c0e794 (check-in: [c21eb903f0] user: drh branch: index-expr-opt, size: 243621) | |
20:27 | [cd5b21856c] part of check-in [bf6d837fdd] Improved byte-code comments for the OP_Column opcodes used by the indexed expression optimization. (check-in: [bf6d837fdd] user: drh branch: index-expr-opt, size: 243572) | |
2022-10-17
| ||
14:46 | [3ab52180ad] part of check-in [8f460b3b15] Improved comments and function names. No logic changes. (check-in: [8f460b3b15] user: drh branch: index-expr-opt, size: 243496) | |
14:30 | [5d687c1f91] part of check-in [8a510cb088] Get the indexed expression optimization working for virtual generated columns. (check-in: [8a510cb088] user: drh branch: index-expr-opt, size: 243476) | |
14:29 | [a1c42bab8e] part of check-in [56ef97e64e] Merge trunk enhancements into index-expr-opt branch. (check-in: [56ef97e64e] user: drh branch: index-expr-opt, size: 243207) | |
10:15 | [ab74681d07] part of check-in [4575247152] Make use of alloca() in wherePathSolver() when SQLITE_USE_ALLOCA is defined. (check-in: [4575247152] user: drh branch: trunk, size: 241017) | |
2022-10-15
| ||
11:27 | [8517a0ee4a] part of check-in [08b033c737] Only extract an expression from an index when the index is not a null row in an outer join. (check-in: [08b033c737] user: drh branch: index-expr-opt, size: 243273) | |
2022-10-14
| ||
02:00 | [3988986161] part of check-in [0963519371] Cancel IndexExpr objects when they go out of scope. (check-in: [0963519371] user: drh branch: index-expr-opt, size: 243234) | |
2022-10-13
| ||
21:08 | [5cd2a96f99] part of check-in [2e8d4fd4cf] This experimental branch attempts to use columns for an index-on-expression in place of the expression that is being indexed. This particular check-in mostly works, but there are still issues. (check-in: [2e8d4fd4cf] user: drh branch: index-expr-opt, size: 242946) | |
2022-09-21
| ||
18:21 | [63e712bcad] part of check-in [38aaf26e08] Reduced and improved comments on the constraintCompatibleWithOuterJoin() function. (check-in: [38aaf26e08] user: drh branch: trunk, size: 241083) | |
00:16 | [3774d9831a] part of check-in [c7fbc9b045] Break out the decision of whether or not a constraint term is usable by an outer join into a subroutine: constraintCompatibleWithOuterJoin(). (check-in: [c7fbc9b045] user: drh branch: flattener-omit-restriction-29, size: 241720) | |
2022-09-20
| ||
22:19 | [075de11bb3] part of check-in [f47aa74569] Do not allow EP_InnerON terms to be used on a outer join. (check-in: [f47aa74569] user: drh branch: flattener-omit-restriction-29, size: 241988) | |
2022-09-01
| ||
10:41 | [742ced4550] part of check-in [e3754cc188] In the query planner, add a heuristic that will reduce the cost of a full table scan for a materialized view or subquery if the full scan is the outer-most loop. This is shown to speed up some queries. (check-in: [e3754cc188] user: drh branch: branch-3.28, size: 204167) | |
10:29 | [424c42590b] part of check-in [609fbb94b8] In the query planner, add a heuristic that will reduce the estimated cost of a full table scan for a materialized view or subquery if the full scan is the outer-most loop. This is shown to speed up some queries. (check-in: [609fbb94b8] user: drh branch: trunk, size: 241847) | |
2022-08-22
| ||
02:00 | [6d1ee6f6bc] part of check-in [e5eaa80e81] Add the new internal interface sqlite3DbNNFreeNN(db,ptr) where both the db and ptr parameters are guaranteed to be non-NULL. Use this where appropriate to save more than 2 million CPU cycles on the standard performance test. (check-in: [e5eaa80e81] user: drh branch: trunk, size: 241510) | |
2022-08-09
| ||
20:22 | [c2a2fcf7fd] part of check-in [68d86f2b20] Fix a rounding error caused by scalar->logarithm->scalar conversion when using stat4 data to estimate some range scans. (check-in: [68d86f2b20] user: drh branch: branch-3.28, size: 203846) | |
2022-08-06
| ||
15:28 | [8bfe412205] part of check-in [86e30d7c4b] Fix a rounding error caused by scalar->logarithm->scalar conversion when using stat4 data to estimate some range scans. (check-in: [86e30d7c4b] user: dan branch: trunk, size: 241445) | |
2022-07-25
| ||
11:19 | [d3a6440d88] part of check-in [dbe522b011] If the LHS of a LEFT JOIN is flattened into an aggregate parent query, avoid executing OP_IfNullRow on an unopened cursor by disallowing the index-only optimization. (Later:) Does not work if automatic indexes are disabled. (check-in: [dbe522b011] user: dan branch: nonworking-flatten-left-join, size: 241550) | |
2022-07-21
| ||
12:26 | [e7b7c9d37f] part of check-in [9141e873c5] In the query planner, restore the former aggressiveness in reordering of FROM clause terms that existed prior to version 3.39.0 for queries that contain no RIGHT or FULL JOINs. (check-in: [9141e873c5] user: drh branch: branch-3.39, size: 240897) | |
2022-07-15
| ||
20:39 | [1049685e84] part of check-in [92d60b64eb] In the query planner, restore the former aggressiveness in reordering of FROM clause terms that existed prior to version 3.39.0 for queries that contain no RIGHT or FULL JOINs. (check-in: [92d60b64eb] user: drh branch: trunk, size: 241471) | |
12:34 | [db20d4b51f] part of check-in [2a6f761864] Fix the whereKeyStats() routine (part of STAT4 processing only) so that it is able to cope with row-value comparisons against the primary key index of a WITHOUT ROWID table. Forum post 3607259d3c. (check-in: [2a6f761864] user: drh branch: branch-3.39, size: 240929) | |
12:16 | [c7e96c036d] part of check-in [0620e419a9] Fix the whereKeyStats() routine (part of STAT4 processing only) so that it is able to cope with row-value comparisons against the primary key index of a WITHOUT ROWID table. Forum post 3607259d3c. (check-in: [0620e419a9] user: drh branch: trunk, size: 241503) | |
2022-07-08
| ||
20:03 | [5af9a9773a] part of check-in [50c8e8de52] Performance optimizations in the WHERE clause processing of the query planner. (check-in: [50c8e8de52] user: drh branch: trunk, size: 241517) | |
18:23 | [54e534ef37] part of check-in [27be9e9634] Omit an unnecessary structure initialization in whereLoopAddAll(), replacing it with an assert() to show that the initialization has already occurred, for a small performance increase and size reduction. (check-in: [27be9e9634] user: drh branch: trunk, size: 241216) | |
17:57 | [6a308f3416] part of check-in [64d2312c12] Size reduction and performance optimization in whereLoopAddBtreeIndex(). (check-in: [64d2312c12] user: drh branch: trunk, size: 241023) | |
16:56 | [97a92f3ab7] part of check-in [6f28a9652a] In wherePathSolver(), defer initializing variables until they are actually needed, in case they are not needed. This gives a small performance increase. (check-in: [6f28a9652a] user: drh branch: trunk, size: 241004) | |
2022-06-24
| ||
11:05 | [9a44063e60] part of check-in [db5266dec6] In sqlite3WhereBegin, do not proceed with coding the loop if an error is detected as part of WHERE expression analysis. For for the assertion-fault described by forum post c3496cf6b1. (check-in: [db5266dec6] user: dan branch: trunk, size: 240943) | |
2022-06-21
| ||
18:38 | [518fd39eb7] part of check-in [bd87d107fe] Disable the short-cut query planner if the NOT INDEXED modifier is used. Forum post 454d706296. (check-in: [bd87d107fe] user: drh branch: trunk, size: 240947) | |
2022-06-20
| ||
18:26 | [ce4cb0246b] part of check-in [238453ffab] Do not allow FROM-clause terms on the left side of a RIGHT or FULL JOIN to be reordered. forum post 6650cd40b5634f35. This is probably more strict that necessary to get correct behavior, but for the first release that supports RIGHT/FULL JOIN it is perhaps better to be correct than fast. A less strict constraint might be to prohibit FROM-clause terms that originate on the left side of a RIGHT JOIN from crossing from the right side to the left side of a LEFT JOIN. Revisit this later. (check-in: [238453ffab] user: drh branch: trunk, size: 240837) | |
2022-06-17
| ||
11:39 | [2db3d41a1f] part of check-in [f23a429d41] Avoid omitting the rhs of FULL JOINs in cases where it is only correct to omit the rhs of a LEFT JOIN. Fix for the problem reported by forum post 5610c17c3d. (check-in: [f23a429d41] user: dan branch: trunk, size: 240371) | |
2022-06-10
| ||
16:41 | [267caa227d] part of check-in [342c501f53] The same restrictions on the use of WHERE clause terms to drive indexes in the presence of RIGHT JOINs also apply to the use of WHERE clause terms to manufacture automatic indexes. This fixes a problem identified by forum post 51e6959f61. (check-in: [342c501f53] user: drh branch: trunk, size: 240354) | |
2022-06-09
| ||
17:17 | [7a5c084800] part of check-in [9e51a6c0fb] Prevent subtype values from slipping across a subquery boundry when the subquery is implemented as a co-routine. (check-in: [9e51a6c0fb] user: drh branch: subtype-subquery, size: 240029) | |
2022-06-08
| ||
12:46 | [7da9e0c127] part of check-in [615c002611] Do not allow a partial index scan on the left table of a RIGHT JOIN, because since the index is partial, some rows will be omitted from the scan, and those rows will subsequently be picked up by the no-match logic in the right-join post-processing loop. forum post c4676c4956. (check-in: [615c002611] user: drh branch: trunk, size: 239962) | |
12:20 | [d0fcb3ae11] part of check-in [5a107fd7fa] Update the routine that determines whether or not a partial index can be used so that it is not specific to LEFT JOIN. (check-in: [5a107fd7fa] user: drh branch: trunk, size: 239913) | |
2022-06-06
| ||
22:33 | [01eea25cef] part of check-in [f419e98c51] More precise determination of when a WHERE/ON clause term can be used as an indexed join constraint. Testcase macros added to ensure test coverage. (check-in: [f419e98c51] user: drh branch: outer-join-tests, size: 239957) | |
15:27 | [667f8fab75] part of check-in [4a31b7942a] Do not allow a WHERE clause constraint to be used to drive an index for the right operand of a RIGHT JOIN, since this can cause problem if the constraint implies a not-NULL value for one of the columns for the left operand of the same join. See forum post 206d99a16dd9212f. (check-in: [4a31b7942a] user: drh branch: trunk, size: 239110) | |
2022-06-01
| ||
15:53 | [3a69f4403a] part of check-in [e4e71b4cd4] Ensure that all necessary row-value subqueries are invoked while running the right-join post processing. (check-in: [e4e71b4cd4] user: drh branch: row-value-right-join, size: 238786) | |
2022-05-25
| ||
12:49 | [c4b64c6fa2] part of check-in [4be0c60e38] Do not allow the right operand of a RIGHT JOIN to be reordered with other FROM clause terms that are even further to the right. Fix for the issue identified by forum post 5cfe08eed6. (check-in: [4be0c60e38] user: drh branch: trunk, size: 238799) | |
11:17 | [01f87c783c] part of check-in [18b5cea039] Add in a VdbeCoverage() macro accidentally omitted from [d64ae49a1f251317]. (check-in: [18b5cea039] user: drh branch: trunk, size: 238559) | |
2022-05-23
| ||
11:51 | [424b8696c3] part of check-in [919ba2f047] Add an assert() to clear a harmless static-analyzer warning. (check-in: [919ba2f047] user: drh branch: trunk, size: 238541) | |
2022-05-21
| ||
18:03 | [226b9b5485] part of check-in [16bf350683] Defer materializing a view or subquery until the materialization is actually needed, so that if it is not needed, not useless work is performed. (check-in: [16bf350683] user: drh branch: deferred-materialize, size: 238488) | |
2022-05-14
| ||
19:05 | [2ee27fed4a] part of check-in [2277f9ba70] Do not allow an index scan on an index-on-expression for a RIGHT JOIN because the index might not be positioned on the correct row when running the the right-join no-match loop. dbsqlfuzz 39ee60004ff027a9e2846cf76e02cd5ac0953739 (check-in: [2277f9ba70] user: drh branch: trunk, size: 238066) | |
2022-05-13
| ||
14:52 | [d4d543f06b] part of check-in [1ffea07ff9] Improved names for flags on the Expr object: EP_FromJoin becames EP_OuterON and EP_InnerJoin becomes EP_InnerON. (check-in: [1ffea07ff9] user: drh branch: trunk, size: 237732) | |
2022-05-04
| ||
18:43 | [aa585b89bd] part of check-in [006b2d9c52] Improvements for name resolution for parenthsized joins. (check-in: [006b2d9c52] user: drh branch: trunk, size: 237742) | |
14:45 | [70eae5fd61] part of check-in [544268a723] Fix ON-clause constraint usage for FULL and RIGHT JOINs. (check-in: [544268a723] user: drh branch: trunk, size: 237685) | |
02:01 | [b0f0c4b38d] part of check-in [8cee538823] In the query planner, do not let tables commute across any outer join. (check-in: [8cee538823] user: drh branch: trunk, size: 237672) | |
2022-05-02
| ||
20:49 | [eb86c068e8] part of check-in [5341d4bbe9] Organize the various flag bits of the ExprList_item object into a substructure so that the whole lot can be copied all at once. Faster and smaller code. (check-in: [5341d4bbe9] user: drh branch: right-join, size: 237758) | |
2022-04-25
| ||
21:21 | [be30bf0151] part of check-in [4fbb9ffe72] Fix a problem with automatic indexes introduced by check-in [664b461bb5063d980] and reported by forum post 0d3200f4f3bcd3a3. (check-in: [4fbb9ffe72] user: drh branch: branch-3.38, size: 234844) | |
19:40 | [43085b3a4c] part of check-in [7ca3456c00] Failed first attempt to fix a problem with automatic indexes introduced by check-in [664b461bb5063d980] and reported by forum post 0d3200f4f3bcd3a3. I thought that I had tested this prior to check-in and that it worked. But after checking it in, I find that there are many test failures. (check-in: [7ca3456c00] user: drh branch: autoindex-fix, size: 237701) | |
2022-04-23
| ||
19:21 | [bd4895fbb6] part of check-in [3aefc874d3] Prevent the ORDER BY LIMIT optimization from running if the innermost loop is a right-join, as doing so will get an incorrect answer. (check-in: [3aefc874d3] user: drh branch: trunk, size: 237810) | |
18:04 | [4f3c9fe1d0] part of check-in [2c5bb2bff2] For debug builds, if the RIGHT JOIN body subroutine contains a jump that escapes the subroutine, then abort the prepared statement with a descriptive error and SQLITE_INTERNAL. This extra sanity check causes many tests to fail. (check-in: [2c5bb2bff2] user: drh branch: right-join-subrtn-check, size: 237776) | |
2022-04-17
| ||
22:58 | [45102d682f] part of check-in [71abe5641f] Deal with OP_Return bypass in the RIGHT JOIN subroutine by adding extra OP_Returns where needed. (check-in: [71abe5641f] user: drh branch: right-join, size: 237726) | |
20:30 | [cbbfdcbf70] part of check-in [c90602328a] Change OP_Return such that if P3 is 1, the Return is a no-op when the P1 register contains a NULL. (check-in: [c90602328a] user: drh branch: right-join, size: 237605) | |
2022-04-14
| ||
16:34 | [963c068262] part of check-in [9b9038bcd0] Rerun the subroutines that compute row-values if necessary from within the RIGHT JOIN body subroutine. (check-in: [9b9038bcd0] user: drh branch: right-join, size: 237760) | |
14:58 | [0db7dcbdac] part of check-in [402a89e33e] Disable autoindexing for the RIGHT JOIN loop. (check-in: [402a89e33e] user: drh branch: right-join, size: 237686) | |
2022-04-13
| ||
12:12 | [793d09ef0d] part of check-in [d168f245ec] The rows of a RIGHT JOIN might come out in any arbitrary order. So disable the ORDER-BY/GROUP-BY optimizations if a RIGHT JOIN is involved. (check-in: [d168f245ec] user: drh branch: right-join, size: 237667) | |
2022-04-12
| ||
18:04 | [4176c85808] part of check-in [beeecf1604] Factor out the RIGHT JOIN non-matched row loop from sqlite3WhereEnd(). This reduces the register pressure on that routine and helps it to run faster in the common case where there is no RIGHT JOIN. (check-in: [beeecf1604] user: drh branch: right-join, size: 237375) | |
14:23 | [5473af25fd] part of check-in [34c2f7b237] The multi-index OR optimization does not work for RIGHT join, so disallow it. (check-in: [34c2f7b237] user: drh branch: right-join, size: 239560) | |
13:46 | [2e4c4a9140] part of check-in [a3d14e61ca] Always explicitly set each table cursor to NullRow before doing the RIGHT-JOIN unmatched row pass. This is a cheap opcode, and it adds an extra layer of defense against incorrect results. (check-in: [a3d14e61ca] user: drh branch: right-join, size: 239425) | |
2022-04-11
| ||
21:00 | [728d2d5c62] part of check-in [75a9116e98] Fix RIGHT JOIN for virtual tables. (check-in: [75a9116e98] user: drh branch: right-join, size: 239502) | |
17:27 | [e704ad49ef] part of check-in [b6e773a26c] Fix handling of "continue" and "break" from inside the loop for the right operand of a RIGHT JOIN. (check-in: [b6e773a26c] user: drh branch: right-join, size: 239340) | |
14:26 | [d5ad5f449c] part of check-in [d91faeffea] Show LEFT and RIGHT JOIN processing in the EXPLAIN QUERY PLAN output. (check-in: [d91faeffea] user: drh branch: right-join, size: 239053) | |
12:38 | [8d8e54e2e2] part of check-in [0f6f61c366] Make a distinction between (1) WHERE clause constraints, (2) ON/USING constraints on outer joins, and (3) ON/USING clause constraints on inner joins. Formerly, there was no distinctionb between 1 and 3, but RIGHT JOIN needs to know the difference. Make RIGHT JOIN aware of this difference and add test cases. (check-in: [0f6f61c366] user: drh branch: right-join, size: 238953) | |
11:48 | [e05c2c85a8] part of check-in [29927926eb] Merge the Expr.w.iJoin name change from trunk into the right-join branch. (check-in: [29927926eb] user: drh branch: right-join, size: 238784) | |
11:25 | [3b23b36345] part of check-in [e8c00442d2] Rename the Expr.w.iRightJoinTable to just Expr.w.iJoin, so that the words "RightJoin" in the former name do not lead readers to believe that this has something to do with RIGHT JOINs in particular. (check-in: [e8c00442d2] user: drh branch: trunk, size: 235842) | |
2022-04-10
| ||
23:48 | [cfc0926a22] part of check-in [beb4401dc0] Cannot use an automatic index on the right table of a RIGHT JOIN because automatic indexes must be WHERE_IDX_ONLY, but the RIGHT JOIN post-processing does not know how to work with an index-only scan. (check-in: [beb4401dc0] user: drh branch: right-join, size: 238804) | |
17:14 | [4e72f26033] part of check-in [140e97fde9] More test cases and bug fixes. (check-in: [140e97fde9] user: drh branch: right-join, size: 238724) | |
16:13 | [ca328251a3] part of check-in [19e8ad690a] More RIGHT JOIN test cases and a bug fix. (check-in: [19e8ad690a] user: drh branch: right-join, size: 238505) | |
2022-04-09
| ||
18:48 | [ddeca7f959] part of check-in [34bbeeb77b] Bug fixes. A basic FULL OUTER JOIN now works. (check-in: [34bbeeb77b] user: drh branch: right-join, size: 238442) | |
14:48 | [7d0b140d37] part of check-in [2db5a498e7] Add byte-code that computes unmatched rows on the right table of a RIGHT JOIN. Compiles, and the code looks semi-reasonable, but still does not run. Incremental check-in. (check-in: [2db5a498e7] user: drh branch: right-join, size: 238389) | |
12:27 | [8aed75fc91] part of check-in [549f5a7ee6] The interior of the RIGHT JOIN loop is now a subroutine. (check-in: [549f5a7ee6] user: drh branch: right-join, size: 236769) | |
03:16 | [3bd028fa90] part of check-in [55b4543122] A few bits and bobs of code generation toward getting RIGHT JOIN to work. Much more remains to do. (check-in: [55b4543122] user: drh branch: right-join, size: 236285) | |
03:12 | [20b6907d66] part of check-in [b1b3845aa3] Merge the sqlite3WhereMalloc() routine from trunk into the right-join branch. (check-in: [b1b3845aa3] user: drh branch: right-join, size: 235790) | |
03:06 | [929ac88a1b] part of check-in [f237e1d8cc] The sqlite3WhereMalloc() routine allocates memory that is automatically deleted when the corresponding WhereInfo object is destroyed. (check-in: [f237e1d8cc] user: drh branch: trunk, size: 235862) | |
2022-04-08
| ||
19:20 | [c752850f0d] part of check-in [415abd6731] Preliminary code to support RIGHT JOIN. Everything seems to work, except that the code to compute the unmatched rows for the RIGHT JOIN has not yet been added, so the result of a RIGHT JOIN is currently the same as an INNER JOIN. (check-in: [415abd6731] user: drh branch: right-join, size: 235217) | |
17:01 | [a17d57807a] part of check-in [8efd61e851] Enhance the sqlite_dbpage fix at check-in 642a0b4752743 from about a month ago such that it still takes a transaction on all attached databases, but it only starts a read transaction for read-only operations, rather than starting a write transaction for everything. (check-in: [8efd61e851] user: drh branch: trunk, size: 235289) | |
2022-04-01
| ||
18:45 | [a2483d4fe7] part of check-in [d126f304cd] New macro ROUND8P() which works like ROUND8() but assumes that the input is already a multiple of the size of a pointer. It becomes a no-op for 64-bit machines, giving a small size reduction and speed boost. (check-in: [d126f304cd] user: drh branch: trunk, size: 235017) | |
2022-03-25
| ||
17:43 | [48d9836b7b] part of check-in [b193156c2a] Do not allow an #ifdef inside of an assert(), as gcc tells us that is not portable. (check-in: [b193156c2a] user: drh branch: branch-3.38, size: 234927) | |
01:31 | [468d64f65f] part of check-in [8246bfbc16] Fix the Bloom-filter optimization so that it does not use IS NULL or IS NOT NULL constraints from the WHERE clause when operating on a LEFT JOIN. Forum thread 031e262a89b6a9d2. (check-in: [8246bfbc16] user: drh branch: branch-3.38, size: 234803) | |
01:23 | [7c2c5feb36] part of check-in [1a6328f2a5] Fix the Bloom-filter optimization so that it does not use IS NULL or IS NOT NULL constraints from the WHERE clause when operating on a LEFT JOIN. Forum thread 031e262a89b6a9d2. (check-in: [1a6328f2a5] user: drh branch: trunk, size: 235016) | |
2022-03-21
| ||
20:08 | [9cba7b9e58] part of check-in [c7a2047e93] Do not allow an #ifdef inside of an assert(), as gcc tells us that is not portable. (check-in: [c7a2047e93] user: drh branch: trunk, size: 234652) | |
16:34 | [ae2a3d271c] part of check-in [b4210bc0ba] The previous assert() fix was not correct when building with -DSQLITE_ENABLE_OFFSET_SQL_FUNC. This is the fix. (check-in: [b4210bc0ba] user: drh branch: branch-3.38, size: 234439) | |
15:42 | [b071160c77] part of check-in [c0a4767fef] The previous assert() fix was not correct when building with -DSQLITE_ENABLE_OFFSET_SQL_FUNC. This is the fix. (check-in: [c0a4767fef] user: drh branch: trunk, size: 234528) | |
13:55 | [0904231c9f] part of check-in [ccd2a2a7e1] Fix the assert() that attempts to verify that the table-reference to index-reference translator finds all required translations. Forum post 929168fdd6. (check-in: [ccd2a2a7e1] user: drh branch: branch-3.38, size: 234352) | |
13:47 | [afb9fcb030] part of check-in [fa9bd1fce4] Fix the assert() that attempts to verify that the table-reference to index-reference translator finds all required translations. Forum post 929168fdd6. (check-in: [fa9bd1fce4] user: drh branch: trunk, size: 234441) | |
2022-03-17
| ||
22:09 | [f661a49e6f] part of check-in [135d8b97b0] Add a 4th output code (value 3) from the sqlite3_vtab_distinct() interface that indicates that SQLite wants distinct results that are sorted. (check-in: [135d8b97b0] user: drh branch: trunk, size: 233685) | |
18:03 | [bea45cd6ad] part of check-in [0c5be14aac] Updates a comment and an assert(). (check-in: [0c5be14aac] user: drh branch: vtab-distinct-ordered, size: 233675) | |
11:23 | [3f6926af08] part of check-in [84ddd19bce] Another fix for a corner-case in sqlite_offset() - this one having to do with computed virtual columns in a WITHOUT ROWID table. (check-in: [84ddd19bce] user: drh branch: trunk, size: 233596) | |
2022-03-16
| ||
12:06 | [615ac2c6ea] part of check-in [11f4508895] Experimental change to have sqlite3_vtab_distinct() return 3 to indicate that results should sorted and duplicates may be removed. (check-in: [11f4508895] user: dan branch: vtab-distinct-ordered, size: 233750) | |
2022-03-14
| ||
22:58 | [7f7e6b5f0c] part of check-in [3950b7d006] Fix an assert() statement in the covering index optimization for the corner case of dealing with an sqlite_offset() SQL function call. (check-in: [3950b7d006] user: drh branch: trunk, size: 233586) | |
2022-03-10
| ||
01:10 | [baec5c64db] part of check-in [6ba36714ca] Check-in [642a0b4752743216] fixing sqlite_dbpage is not exactly correct. This patch should fix it. (check-in: [6ba36714ca] user: drh branch: trunk, size: 233502) | |
2022-03-09
| ||
18:29 | [b6f15969ca] part of check-in [6f838305e2] Further refinements to the sqlite_offset() fix from [6029514b08b88e3f]. (check-in: [6f838305e2] user: drh branch: trunk, size: 233538) | |
14:22 | [5c5a380bfb] part of check-in [642a0b4752] Fix the sqlite_dbpage virtual table so that it starts a write transaction on all attached schemas. (check-in: [642a0b4752] user: drh branch: trunk, size: 233387) | |
2022-03-04
| ||
20:54 | [1471be86b3] part of check-in [d46d0e67c9] Do try to evaluate the Bloom filter on a LEFT JOIN early, as doing so essentially converts it into an INNER JOIN. See forum thread 544af7eee2. (check-in: [d46d0e67c9] user: drh branch: trunk, size: 232777) | |
2022-02-06
| ||
22:13 | [0d75d75147] part of check-in [245d0241c7] The sqlite3_vtab_in() interface should return false for a vector IN constraint. (check-in: [245d0241c7] user: drh branch: trunk, size: 232638) | |
2022-02-05
| ||
21:49 | [4e8f27c982] part of check-in [32a3a53b62] Record the position of many identifiers in the parse using the new Expr.w.iOfst field. This is done with the idea of providing offset results for sqlite3_error_offset() for a more kinds of errors, though that part is not yet implemented. (check-in: [32a3a53b62] user: drh branch: trunk, size: 232582) | |
2022-02-03
| ||
14:19 | [31bc1f43b0] part of check-in [bb0f056b3f] Prohibit schema changes within xBestIndex callbacks. (check-in: [bb0f056b3f] user: drh branch: trunk, size: 232578) | |
2022-02-02
| ||
16:24 | [d7d996a5d4] part of check-in [3bf2153440] Relax the restriction that the RHS of the IN operator must be a list in order for sqlite3_vtab_in() to work. Change an unreachable branch into an assert(). (check-in: [3bf2153440] user: drh branch: batch-in-operator, size: 232520) | |
2022-02-01
| ||
21:59 | [392d552fa6] part of check-in [75040183b8] Tweaks to the sqlite3_vtab_in() interface. (check-in: [75040183b8] user: drh branch: batch-in-operator, size: 232590) | |
16:30 | [cbf02091ed] part of check-in [5acf90a931] Index in 2nd argument to sqlite3_vtab_in() should be on the aConstraint[] array, not the internal array of all constraints. (check-in: [5acf90a931] user: drh branch: batch-in-operator, size: 232575) | |
14:58 | [45173f6965] part of check-in [eb84b80e1f] Add new interfaces to enable virtual table to process IN operator constraints all at once, rather than one element at a time. (check-in: [eb84b80e1f] user: drh branch: batch-in-operator, size: 232606) | |
2022-01-31
| ||
15:59 | [c4a8004470] part of check-in [f8766231d2] Do not attempt to limit the number of columns used in a table to a prefix if the table will be used to construct an automatic index or bloom filter. dbsqlfuzz 787d9bd73164c6f0c85469e2e48b2aff19af6938. (check-in: [f8766231d2] user: drh branch: trunk, size: 231540) | |
2022-01-27
| ||
21:18 | [f61ca6dbb4] part of check-in [38c5151eb8] Query planner always honors the aConstraintUsage[].omit flag for the SQLITE_INDEX_CONSTRAINT_OFFSET constraint. (check-in: [38c5151eb8] user: drh branch: vtab-limit-offset, size: 231471) | |
16:14 | [f89c21296c] part of check-in [74fa5757ee] Give the virtual table xBestIndex method access to (some) OFFSET and LIMIT clauses. (check-in: [74fa5757ee] user: drh branch: vtab-limit-offset, size: 231303) | |
2022-01-24
| ||
16:47 | [a14990c7b3] part of check-in [1f7fa46126] Remove many redundant checks for sqlite3.mallocFailed now that any OOM should cause Parse.nErr to be non-zero. (check-in: [1f7fa46126] user: drh branch: trunk, size: 229871) | |
2022-01-22
| ||
20:45 | [9824d15f2a] part of check-in [4289edf3c5] Bring sqlite3_vtab_distinct() up to spec so that it works as described in the documentation. (check-in: [4289edf3c5] user: drh branch: sqlite3_vtab_distinct, size: 229858) | |
02:52 | [bf15b922a1] part of check-in [a13afc909c] Omit the WhereLoopBuilder.pOrderBy field, which is no longer needed. (check-in: [a13afc909c] user: drh branch: sqlite3_vtab_distinct, size: 229795) | |
00:18 | [7df7672496] part of check-in [d571262d23] An initial attempt to implement sqlite3_vtab_distinct(). (check-in: [d571262d23] user: drh branch: sqlite3_vtab_distinct, size: 229853) | |
2022-01-21
| ||
18:57 | [eb54405957] part of check-in [2f5dc7a9ee] Fix some of the new date/time function features to comply with the spec. Update requirement marks. (check-in: [2f5dc7a9ee] user: drh branch: trunk, size: 229332) | |
00:38 | [6b4cd84869] part of check-in [ac951490fd] Add requirements marks and tuning. (check-in: [ac951490fd] user: drh branch: sqlite3_vtab_rhs_value, size: 229332) | |
2022-01-20
| ||
17:10 | [9f8a9c1c18] part of check-in [0873c76b9b] Initial implementation of the sqlite3_vtab_rhs_value() interface and the qpvtab extension used for testing the virtual table interface. (check-in: [0873c76b9b] user: drh branch: sqlite3_vtab_rhs_value, size: 229124) | |
2021-12-30
| ||
17:36 | [eedf0311d5] part of check-in [524c2b87d7] When constructing the sqlite3_index_info object for the xBestIndex method of a virtual table, omit constant trims from the ORDER BY clause, as they will always be in the correct order. (check-in: [524c2b87d7] user: drh branch: trunk, size: 227356) | |
2021-12-17
| ||
23:56 | [18d32aa675] part of check-in [826f84a92d] Improved documentation for the sqlite3_vtab_collation() interface. (check-in: [826f84a92d] user: drh branch: trunk, size: 227174) | |
2021-12-16
| ||
14:36 | [d47e147781] part of check-in [9406d95d3f] Fix harmless compiler warning in the new Bloom filter logic. (check-in: [9406d95d3f] user: drh branch: trunk, size: 226913) | |
00:36 | [083b7e6455] part of check-in [da3aae7bcf] Change the query planner so that it excludes virtual table constraints that do not have the correct collation. This breaks the expert extension. (check-in: [da3aae7bcf] user: drh branch: vtab-collation-fix, size: 227768) | |
2021-12-15
| ||
20:48 | [8696f664dc] part of check-in [241dc0428a] Simplify the generation of the sqlite3_index_info object during query planning for virtual tables. (check-in: [241dc0428a] user: drh branch: trunk, size: 226904) | |
2021-12-14
| ||
20:13 | [c69fed81e5] part of check-in [5c3d398d20] Enhance the virtual table query planner so that it is able to deal with ORDER BY terms that contain COLLATE clauses as long as the specified collation matches the virtual table. This is especially important for UNION ALL since a "COLLATE binary" is added to ORDER BY clauses if no COLLATE clause exists in the original SQL. (check-in: [5c3d398d20] user: drh branch: trunk, size: 227176) | |
2021-12-13
| ||
18:53 | [c3299a18bb] part of check-in [4710704625] Add NEVER() on an unreachable branch in the Bloom filter pull-down logic. (check-in: [4710704625] user: drh branch: trunk, size: 225791) | |
18:43 | [78a878f326] part of check-in [027626521c] Fix an off-by-one error in the Bloom filter pulldown logic, found by OSSFuzz. Also fix over-length source code lines in the immediate vicinity. (check-in: [027626521c] user: drh branch: trunk, size: 225784) | |
2021-12-11
| ||
17:10 | [f92862c2d7] part of check-in [799db7cb2e] Do not allow early evaluation of Bloom filters that use the IN operator as the machinery to deal with the IN operator is not available. dbsqlfuzz 5b51c247518278f79a45cea978702e86e86cd4f9. (check-in: [799db7cb2e] user: drh branch: trunk, size: 225763) | |
2021-12-10
| ||
17:36 | [179e0376b8] part of check-in [403e7312dd] Rename the internal routine constructBloomFilter() to sqlite3ConstructBloomFilter(). OSSFuzz is reporting a crash with a garbled stack that we cannot reproduce. Perhaps the original "constructBloomFilter()" name is colliding with some internal name used by OSSFuzz. We'll see if this rename clears the problem. (check-in: [403e7312dd] user: drh branch: trunk, size: 225457) | |
2021-12-09
| ||
19:42 | [71bbbac874] part of check-in [ce42039f56] Remove unused code and fix comments. Final cleanup before merging. (check-in: [ce42039f56] user: drh branch: bloom-filter, size: 225443) | |
18:44 | [abd620b482] part of check-in [d342ab722d] Enable bloom filters for the right table of a LEFT JOIN. Fix unreachable branches. (check-in: [d342ab722d] user: drh branch: bloom-filter, size: 225449) | |
01:28 | [4946af4e7d] part of check-in [88b43d798c] Add SQLITE_TESTCTRL_LOGEST and enhance the LogEst utility program. Improvements to testability of bloom filters. (check-in: [88b43d798c] user: drh branch: bloom-filter, size: 225435) | |
2021-12-08
| ||
19:50 | [89958d4fc7] part of check-in [0fb2a4e08f] Improvements on the decision of whether or not to use a Bloom filter. (check-in: [0fb2a4e08f] user: drh branch: bloom-filter, size: 225092) | |
16:15 | [74382d720f] part of check-in [d325025677] Merge the WhereClause fix from trunk (check-in: [d325025677] user: drh branch: bloom-filter, size: 224651) | |
16:07 | [6e07a2ebfc] part of check-in [6024682ca4] In the WhereClause object, do not assume that all TERM_VIRTUAL terms appear at the end of the list, because that is no longer true. Instead, keep a separate nBase count that is the size of the list excluding the tail of virtual terms. Use nBase instead of nTerm when scanning terms that are not virtual. Add assert()s to validate correctness of WhereClause. (check-in: [6024682ca4] user: drh branch: trunk, size: 217522) | |
2021-12-07
| ||
22:37 | [328e5c6f5a] part of check-in [2739ed5192] Do not generate a Bloom filter if it cannot be used prior to the next seek, as that leads to a misleading EXPLAIN QUERY PLAN. (check-in: [2739ed5192] user: drh branch: bloom-filter, size: 224620) | |
2021-12-06
| ||
20:16 | [21bd107883] part of check-in [8a9036ee61] Omit the OP_FilterInit opcode. Use OP_Blob to initialize each Bloom filter instead. Size the Bloom filter based on sqlite_stat1 size estimates rather than a run-time measurement for improved testability. (check-in: [8a9036ee61] user: drh branch: bloom-filter, size: 224486) | |
13:07 | [04ead529a2] part of check-in [a7adcf6908] Attempt to vary the size of Bloom filters based on an estimate of how many keys the filter will hold. (check-in: [a7adcf6908] user: drh branch: bloom-filter, size: 223630) | |
2021-12-05
| ||
20:19 | [b07c5eefec] part of check-in [06f6fefd67] Run as many Bloom filters as possible before index lookups. (check-in: [06f6fefd67] user: drh branch: bloom-filter, size: 223547) | |
00:45 | [3d29b27e34] part of check-in [5be2470f87] Try to run all Bloom filters before any Seeks. This gives a small performance gain on the Star-Schema Benchmark. (check-in: [5be2470f87] user: drh branch: bloom-filter, size: 221691) | |
2021-12-04
| ||
21:11 | [957543456a] part of check-in [201b6dd875] Miscellaneous cleanup of the new Bloom-filter code. (check-in: [201b6dd875] user: drh branch: bloom-filter, size: 221613) | |
18:45 | [2607f8008b] part of check-in [629ee2e3e3] Add VdbeCoverage() macros. Adjust the Bloom-filter hash function so that it correctly deals with zero-blobs. (check-in: [629ee2e3e3] user: drh branch: bloom-filter, size: 221592) | |
14:24 | [d203a7acda] part of check-in [a70429596a] Apply the Bloom filter only on those terms of an index that have equality constraints. (check-in: [a70429596a] user: drh branch: bloom-filter, size: 221539) | |
13:43 | [e9cfeae040] part of check-in [28161fba9b] First attempt to use Bloom filters to optimize star-schema queries. (check-in: [28161fba9b] user: drh branch: bloom-filter, size: 221534) | |
2021-12-03
| ||
19:10 | [a0787ad0a3] part of check-in [41ba2dfdd3] Merge the sqlite3WhereBegin() simplification from trunk. (check-in: [41ba2dfdd3] user: drh branch: bloom-filter, size: 217806) | |
18:53 | [5bd26902dd] part of check-in [6225e9abcb] Factor the noop-join-elimination optimization out of the sqlite3WhereBegin() routine and into a separate "no-inline" subroutine, in order to reduce the complexity of sqlite3WhereBegin() and thereby encourage C compilers to inline sqlite3WhereCodeOneLoopStart(). (check-in: [6225e9abcb] user: drh branch: trunk, size: 217491) | |
16:02 | [c04c410802] part of check-in [11d97fb8be] Merge recent trunk enhancements into the bloom-filter branch. (check-in: [11d97fb8be] user: drh branch: bloom-filter, size: 216709) | |
2021-12-02
| ||
12:34 | [b50391df60] part of check-in [3de2c557d9] More small performance optimizations for sqlite3WhereGetMask(). (check-in: [3de2c557d9] user: drh branch: trunk, size: 216394) | |
04:00 | [90903cab02] part of check-in [7edec54ab0] Small performance optimization in sqlite3WhereGetMask(). (check-in: [7edec54ab0] user: drh branch: trunk, size: 216147) | |
02:22 | [36e6ce4c1d] part of check-in [ed84e124c6] Small performance enhancement for whereScanInit(). (check-in: [ed84e124c6] user: drh branch: trunk, size: 216050) | |
01:30 | [db68967fe1] part of check-in [ca59533bbb] Performance improvement in query planning. (check-in: [ca59533bbb] user: drh branch: trunk, size: 216050) | |
2021-12-01
| ||
16:31 | [1b8a6c53c3] part of check-in [50ac4de1d7] Add a Bloom filter to the automatic-index mechanism. (check-in: [50ac4de1d7] user: drh branch: bloom-filter, size: 216241) | |
2021-11-30
| ||
14:07 | [4b27601788] part of check-in [664b461bb5] In the automatic index generator logic, be more precise about when a partial automatic index is allowed in order to capture more cases where it is legal to use a partial automatic index. (check-in: [664b461bb5] user: drh branch: trunk, size: 215926) | |
2021-11-07
| ||
23:33 | [de0d4ff409] part of check-in [0f9fc6b607] Ensure that the window function rewrite does not leave the parse tree in an invalid state that might cause problems downstream before the error is recognized and unwinds the stack. Also take steps such that an invalid parse tree does not cause problems even if it goes unrecognized. Forum post 398e9d5aa9. (check-in: [0f9fc6b607] user: drh branch: trunk, size: 215947) | |
2021-10-15
| ||
17:06 | [ecabef93b0] part of check-in [8a56de5b9c] Protect the WhereTerm.u union using nearby assert()s and/or branches. (check-in: [8a56de5b9c] user: drh branch: trunk, size: 215902) | |
2021-10-14
| ||
19:28 | [782d333e21] part of check-in [bdd840216c] Protect access to the WhereLoop.u union using nearby assert()s and branches. (check-in: [bdd840216c] user: drh branch: trunk, size: 215378) | |
2021-10-07
| ||
23:04 | [85109b6c33] part of check-in [9b91fbcfcc] New assert() statements to protect the u1 and u2 unions of SrcList. (check-in: [9b91fbcfcc] user: drh branch: trunk, size: 215292) | |
17:43 | [56e1902e9b] part of check-in [8eaa1d4a98] Protect all accesses to the Expr.x union using nearby assert()s and branches. (check-in: [8eaa1d4a98] user: drh branch: trunk, size: 215259) | |
2021-10-06
| ||
10:04 | [f71086505c] part of check-in [79e90a8225] One corner case for the fix at [8b24c177061c3836] was not quite right. Caught overnight by both OSSFuzz and dbsqlfuzz and repaired here. (check-in: [79e90a8225] user: drh branch: trunk, size: 215237) | |
2021-10-04
| ||
15:08 | [5d669d7c31] part of check-in [1ebcde72e2] Fix harmless static analyzer warnings. (check-in: [1ebcde72e2] user: drh branch: trunk, size: 215205) | |
11:10 | [d9215db244] part of check-in [8b24c17706] Fix query plans created by whereShortCut() so that they always check transitive constraints that drive an index. The is analogous to the [f1f9b5de3c59489b] check-in, just for whereShortCut() rather than the full query planner. Fix for the issue described by forum post a65cacbf5e1c41ba. (check-in: [8b24c17706] user: drh branch: trunk, size: 215151) | |
2021-08-31
| ||
15:53 | [da3981a12e] part of check-in [c7b34930e2] Have the planner ensure that if one scan uses a subset of the WHERE clause of another, that scan is estimated to cost less and return fewer rows. (check-in: [c7b34930e2] user: dan branch: trunk, size: 214828) | |
2021-08-02
| ||
18:03 | [99b6e13664] part of check-in [8b781dcaf6] Refactor field names in the Column object, zCnName and zCnColl, to make them unique and thus easier to find amid all the other code. (check-in: [8b781dcaf6] user: drh branch: trunk, size: 214595) | |
16:41 | [6e27c9f943] part of check-in [bbb6759bcf] Refactor the Table object to reduce its memory footprint. (check-in: [bbb6759bcf] user: drh branch: trunk, size: 214593) | |
2021-07-28
| ||
01:22 | [07c63dde6a] part of check-in [36d5dbbe13] Reduce the scope of a variable in order to fix a harmless compiler warning that occurs under -DSQLITE_OMIT_AUTOMATIC_INDEX. (check-in: [36d5dbbe13] user: drh branch: trunk, size: 214600) | |
2021-06-22
| ||
23:27 | [8355c636a6] part of check-in [956bafb69f] This is an alternative fix to the covering index on WHERE_MULTI_OR in a LEFT JOIN problem that is fixed nearby. This one works by having the OP_NullRow opcode create the index if it does not already exist. That is slightly more complex. This patch is saved for historical reference only. (check-in: [956bafb69f] user: drh branch: multi-or-covidx-fix2, size: 214544) | |
23:24 | [07a4097fe4] part of check-in [787c76a865] When an index is used by all branches of the WHERE_MULTI_OR optimization and becomes a covering index, make sure the index has been created prior to NULLing it in the OP_NullRow opcode of a LEFT JOIN. See forum post 0575376e07. The covering-index for WHERE_MULTI_OR optimization was added by [62678be3df35cdcb]. Test cases are in the orindex01.test module of TH3. (check-in: [787c76a865] user: drh branch: trunk, size: 214599) | |
2021-06-16
| ||
19:23 | [4caf843825] part of check-in [7bd55eee1a] Add an ALWAYS on a branch in STAT4-only logic that is now always true due to check-in [c21bc5a2353e660f]. (check-in: [7bd55eee1a] user: drh branch: trunk, size: 214325) | |
2021-06-02
| ||
19:28 | [dc062832c3] part of check-in [f674c41e5c] Add an optimization control bit to disable the OP_SeekScan optimization. (check-in: [f674c41e5c] user: drh branch: seekscan-improvements, size: 214317) | |
17:14 | [fbb2da2b61] part of check-in [d0b9861908] Never use WHERE_IN_SEEKSCAN for the 2nd or subsequent IN operator. (check-in: [d0b9861908] user: drh branch: seekscan-improvements, size: 214273) | |
12:44 | [2a6ae34252] part of check-in [d58efb3f21] This is an attempt to address the OP_SeekScan performance issue identified by forum post b4fcb8a598. (check-in: [d58efb3f21] user: drh branch: seekscan-improvements, size: 214276) | |
2021-05-29
| ||
23:07 | [db781a6fb7] part of check-in [8cc23931d6] Do not confuse the ">" operator with IS NOT NULL when checking to see if a partial index is usable. Forum post d813704d7c. (check-in: [8cc23931d6] user: drh branch: trunk, size: 213963) | |
2021-05-13
| ||
13:43 | [32f41c3c93] part of check-in [c21bc5a235] The content columns of the index-btree that implements a WITHOUT ROWID table are not ordered and so the query planner should not assume they are ordered. Fix for the issue identified by forum post 6c8960f545. (check-in: [c21bc5a235] user: drh branch: trunk, size: 213923) | |
2021-05-04
| ||
23:21 | [beb0139274] part of check-in [f1f9b5de3c] When applying the optimization that disables WHERE clause terms that drive indexes, make sure not to do so if the term being disabled is a transitive constraint. Fix for the problem identified by forum post eb8613976a. (check-in: [f1f9b5de3c] user: drh branch: trunk, size: 213722) | |
16:51 | [8c05e12a6b] part of check-in [9280e3d994] Additional debugging output for whereScanNext() showing equivalence classes when the ".wheretrace" setting contains the 0x20000 bit. (check-in: [9280e3d994] user: drh branch: trunk, size: 213662) | |
2021-04-29
| ||
15:49 | [33bae7248e] part of check-in [eb40248ce6] Fix the IN-early-out optimization so that it works even for the corner case where the NULL bypass fires before the affinity of the LHS operator has been set. Fix for the problem described in forum post 6a3ec138e9. (check-in: [eb40248ce6] user: drh branch: trunk, size: 213235) | |
13:37 | [c6e020d872] part of check-in [1b8da7924c] Fix harmless compiler warnings. See forum post 256140e470. (check-in: [1b8da7924c] user: drh branch: trunk, size: 212797) | |
2021-04-26
| ||
14:32 | [22705995ad] part of check-in [7178dc3a32] When doing the optimization that attempts to avoid sorting on a GROUP BY, do not assume that the values in an index on an expression are non-NULL. Bug discovered by Wang Ke's fuzzer and reported at forum post 74330094d8. (check-in: [7178dc3a32] user: drh branch: trunk, size: 212794) | |
2021-04-22
| ||
12:38 | [cb76c17d0b] part of check-in [c4258708c0] In the whereLoopXfer() routine, ensure that the destination is fully initialized even if an OOM error occurs. (check-in: [c4258708c0] user: drh branch: trunk, size: 212410) | |
2021-04-16
| ||
12:13 | [1c305bab09] part of check-in [5cb40e53ed] Fix an assert() in whereLoopAddOr() that can be wrong if an OOM occurs in an OR constraint on a virtual table if one of the terms of the OR is an IN operator. dbsqlfuzz 5ee7350b40014f5a878c5d6e76913a2d619f5146 (check-in: [5cb40e53ed] user: drh branch: trunk, size: 212410) | |
2021-04-15
| ||
19:09 | [a96a99ec5a] part of check-in [2363a14ca7] Fix a bad interaction between constant propagation and transitive term handling causing patterns like "WHERE unlikely(t1.x=t1.y) AND t1.y=?" to return non-matching rows. See forum post c38462ab5e. (check-in: [2363a14ca7] user: dan branch: trunk, size: 212324) | |
12:56 | [f388f31a6c] part of check-in [0e19af72d8] Make sure the WhereInfo.pExprMods list is properly cleared when existing sqlite3WhereBegin() early due to an OOM fault. dbsqlfuzz 1247a51318047aba42e7f6991dfa62577cb7a151. (check-in: [0e19af72d8] user: drh branch: trunk, size: 212279) | |
2021-04-07
| ||
18:17 | [5167908254] part of check-in [a2ddb89b20] Do not allow the use of rowid for views and subqueries unless compiled with -DSQLITE_ALLOW_ROWID_IN_VIEW. (check-in: [a2ddb89b20] user: drh branch: trunk, size: 212091) | |
15:45 | [16fca8a5ab] part of check-in [14b1d56ef8] Also prohibit the use of rowid from a subquery. Add the SQLITE_ALLOW_ROWID_IN_VIEW compile-time option to restore legacy behavior in case somebody actually needs it. (check-in: [14b1d56ef8] user: drh branch: no-rowid-on-view, size: 212023) | |
12:36 | [a41a571348] part of check-in [cc6463fe6d] Fix an assert in the automatic-index constructor that can be false following an OOM error. dbsqlfuzz ee04d66c627ed5b5301e0ce09e24db47e0f1544e. (check-in: [cc6463fe6d] user: drh branch: trunk, size: 212085) | |
2021-04-06
| ||
23:29 | [51e5a83eee] part of check-in [c2f940b028] Do not apply the optimization that omits DISTINCT if all result terms are part of a UNIQUE index if the index is also a partial index. Fix for the bug reported by forum post 66954e9ece. (check-in: [c2f940b028] user: drh branch: trunk, size: 212057) | |
2021-04-05
| ||
22:42 | [9accf968b0] part of check-in [e6b591e765] Relax an assertion on the sqlite3WhereEnd() routine after dbsqlfuzz found a counter-example. (check-in: [e6b591e765] user: drh branch: trunk, size: 212017) | |
2021-04-03
| ||
19:23 | [f81b47aeed] part of check-in [0dcf808ddf] Fix a crash in handling queries of the form "SELECT aggregate(DISTINCT tbl.col) FROM ... LEFT JOIN tbl ...". Fixes a problem introduced by [ef4ac0ddd297bbd3]. (check-in: [0dcf808ddf] user: dan branch: trunk, size: 212052) | |
2021-03-13
| ||
17:21 | [07d1232df6] part of check-in [01312a3dbd] Fix typos in comments and add test cases. (check-in: [01312a3dbd] user: dan branch: distinct-agg-opt, size: 212131) | |
2021-03-09
| ||
16:06 | [6fcbfab409] part of check-in [eb919611fd] Experimental optimization for distinct aggregates (e.g. "SELECT count(DISTINCT <expr) FROM ..."). (check-in: [eb919611fd] user: dan branch: distinct-agg-opt, size: 211972) | |
2021-02-27
| ||
15:12 | [10d06b1667] part of check-in [ccb8cf5256] Remove a NEVER() that might sometimes be tree following an OOM. (check-in: [ccb8cf5256] user: drh branch: trunk, size: 211845) | |
2021-02-21
| ||
23:44 | [a02138440d] part of check-in [ba59159fbe] Materialize any CTE that is used more than once. (check-in: [ba59159fbe] user: drh branch: as-materialize-redux, size: 211852) | |
21:04 | [40735d2b96] part of check-in [bfd5bf2c73] Rename the "struct SrcList_item" object to the more succinct "SrcItem". This is a symbolic change only. The logic is unmodified. (check-in: [bfd5bf2c73] user: drh branch: trunk, size: 211849) | |
2021-02-20
| ||
13:36 | [5737a9bd24] part of check-in [03805a6117] Simplification to where.c manually cherrypicked from the as-materialize branch. (check-in: [03805a6117] user: drh branch: trunk, size: 211973) | |
2021-02-16
| ||
16:32 | [228cb57b51] part of check-in [bf0fd9b23a] Trying to get the new AS MATERIALIZE syntax of CTEs to work. There are still performance and memory management issues. This is a WIP check-in. (check-in: [bf0fd9b23a] user: drh branch: as-materialize, size: 211978) | |
2021-02-03
| ||
12:35 | [6efc4a10bf] part of check-in [06b15b17be] Fix an assert() that might be off-by-one in the case of a prior errors in the parse. (check-in: [06b15b17be] user: drh branch: trunk, size: 211961) | |
2021-01-14
| ||
00:53 | [0e6abb22a2] part of check-in [ccd3bae14b] The early-out of the inner loop on the min/max optimization was overly aggressive for the cases where there is a join and outer loops contain IN operators. Fix this. Test case in TH3. (check-in: [ccd3bae14b] user: drh branch: minmax-opt-exp, size: 211925) | |
2021-01-13
| ||
15:23 | [dee929890f] part of check-in [188772a1db] Further enhancements to the min/max optimization of check-in b8ba2f17f938c035 to fix the performance regression identified by forum post 4050026ab8. (check-in: [188772a1db] user: drh branch: minmax-opt-exp, size: 211919) | |
2020-12-22
| ||
19:57 | [3d31871d03] part of check-in [907ddf8676] Fix a couple spelling typos in comments. (check-in: [907ddf8676] user: mistachkin branch: trunk, size: 211015) | |
2020-12-04
| ||
01:17 | [2d593bfc6f] part of check-in [d36d6f2923] Alternative implementation of ".selecttrace" and ".wheretrace" that uses a test-control rather than global variables. (check-in: [d36d6f2923] user: drh branch: traceflags-test-control, size: 211014) | |
2020-11-12
| ||
18:16 | [ad738741bf] part of check-in [772ae83c61] Improved diagnostics output with ".wheretrace 0x800". No changes to non-debug builds. (check-in: [772ae83c61] user: drh branch: trunk, size: 211166) | |
2020-11-11
| ||
19:11 | [6c666bba74] part of check-in [572f1ed59d] Fix a typo in a comment. No changes to code. (check-in: [572f1ed59d] user: drh branch: trunk, size: 211145) | |
2020-11-08
| ||
20:44 | [21f472adb5] part of check-in [76d2eb86e1] Use NEVER and ALWAYS macros to confirm that the return value from sqlite3ExprSkipCollateAndLikely() is never NULL in some of its use cases. (check-in: [76d2eb86e1] user: drh branch: trunk, size: 211144) | |
2020-10-22
| ||
18:58 | [d0feda2eb5] part of check-in [263293f1e6] Minor tweaks to query planning weights so that when STAT4 is enabled and functioning, a full table scan is more likely to be selected if that seems like the fastest solution. Only do this when STAT4 info is available because an error has a large potential downside. (check-in: [263293f1e6] user: drh branch: branch-3.28, size: 203872) | |
15:47 | [03d35ea488] part of check-in [0f42099ad6] Sometimes it makes sense to do a full table scan rather than try to use an index when most of the rows will be selected. This branch is trying to tune the query planner to make that happen more often. (check-in: [0f42099ad6] user: drh branch: avoid-bad-indexes, size: 210704) | |
2020-10-17
| ||
19:09 | [187174b27f] part of check-in [883da4dadc] Fix an incorrect printf() in debugging logic in where.c. Problem reported by forum post 80a9c47769772207. (check-in: [883da4dadc] user: drh branch: trunk, size: 209900) | |
2020-10-02
| ||
13:57 | [9030f0f4d6] part of check-in [c144d6404f] Import further corner-case fixes for the in-scan-vs-index or OP_SeekScan optimization from trunk. (check-in: [c144d6404f] user: drh branch: branch-3.28, size: 203068) | |
13:48 | [5f4c1467ef] part of check-in [ad5ab24ebd] Additional corner-case fixes for the in-scan-vs-index or OP_SeekScan optimization. (check-in: [ad5ab24ebd] user: drh branch: trunk, size: 209900) | |
2020-09-30
| ||
18:22 | [4604336992] part of check-in [f07ac3fb38] Improved query optimization for multi-column indexes where the second or later columns are constrained by an IN operator and the earlier index columns limit the search to a small number of rows. Use the new OP_SeekScan opcode which does scanning of the relevant range of the index but gives up and falls back to doing a seek if the number of rows scanned grows to large, in order to guard against pathological cases where the estimated number of rows to be scanned is far too small. (check-in: [f07ac3fb38] user: drh branch: branch-3.28, size: 202930) | |
2020-09-29
| ||
01:48 | [da9c0d503f] part of check-in [f3c36b840c] The OP_SeekScan opcode works, but using it requires disabling the IN-earlyout optimization because the OP_IfNoHope opcode might move the cursor. (check-in: [f3c36b840c] user: drh branch: in-scan-vs-index, size: 209762) | |
2020-09-28
| ||
19:51 | [c628a6850b] part of check-in [d720b6981e] Revisiting the IN-scan optimization to try to fix it for the corner case where the statistics deceive the query planner into using a scan when an indexed lookup would be better. This check-in changes the code generation to do the IN-scan using a new OP_SeekScan opcode. That new opcode is designed to abandon the scan and fall back to a seek if it doesn't find a match quickly enough. For this work-in-progress check-in, OP_SeekScan is still a no-op and OP_SeekGE still ends up doing all the work. (check-in: [d720b6981e] user: drh branch: in-scan-vs-index, size: 209774) | |
15:49 | [7ed6512e73] part of check-in [43f7ddad80] Small performance improvement and size reduction by reducing the size of the WhereTerm object. (check-in: [43f7ddad80] user: drh branch: trunk, size: 209696) | |
2020-08-24
| ||
23:44 | [23f47e845e] part of check-in [8787417ec1] Reduce the N in the logN term for the sorting cost associated with computing DISTINCT by B-Tree by half, under the assumption that the DISTINCT will eliminate about half the rows of output. This is really a wild guess. But we do not have any better way of estimating what the row-count reduction due to DISTINCT will actually be. (check-in: [8787417ec1] user: drh branch: trunk, size: 209668) | |
2020-08-17
| ||
21:03 | [3a727c5265] part of check-in [0ecda43371] When doing an UPDATE or DELETE using a multi-column index where only a few of the earlier columns of the index are useful for the index lookup, postpone doing the main table seek until after all WHERE clause constraints have been evaluated, in case those constraints can be covered by unused later terms of the index, thus avoiding unnecessary main table seeks. (check-in: [0ecda43371] user: dan branch: branch-3.28, size: 202740) | |
2020-08-14
| ||
21:32 | [396ba2c62d] part of check-in [611b640442] Optimizations to the logic that converts main table accesses into equivalent index accesses. Code is now slightly smaller and faster than trunk. (check-in: [611b640442] user: drh branch: delete-bytecode-optimization, size: 209276) | |
17:39 | [50fe9fc0b9] part of check-in [2f7cb6ab39] Experimental change to try to get some DELETE operations to access values using the index rather than the main table, so as to avoid unnecessary main table seeks. (check-in: [2f7cb6ab39] user: drh branch: delete-bytecode-optimization, size: 208811) | |
2020-07-29
| ||
16:18 | [0f0266b8b7] part of check-in [a80ae2c98b] Dozens and dozens of typo fixes in comments. This change adds no value to the end product and is disruptive, so it is questionable whether or not it will ever land on trunk. (check-in: [a80ae2c98b] user: drh branch: typos, size: 208712) | |
2020-07-16
| ||
18:55 | [2ea9112386] part of check-in [c1ea064948] Relax pointless restrictions on allowing tables in the FROM clause from crossing over LEFT JOINs, as long as the table being moved is not the right table of the LEFT JOIN. (check-in: [c1ea064948] user: drh branch: trunk, size: 208702) | |
2020-07-14
| ||
23:58 | [35cb38d452] part of check-in [b8ba2f17f9] Improvements to the min()/max() optimization so that it is able to use indexes where terms are constrained by IN operators. (check-in: [b8ba2f17f9] user: drh branch: trunk, size: 208752) | |
22:20 | [93d8a43177] part of check-in [81e6450980] Now appears to work. All legacy tests pass. Need to add new tests, however. (check-in: [81e6450980] user: drh branch: minmax-opt-exp, size: 208515) | |
15:30 | [c6bc09762a] part of check-in [5041f6a1c4] Fix an obsolete header comment on the sqlite3WhereIsOrdered() routine. (check-in: [5041f6a1c4] user: drh branch: trunk, size: 208463) | |
02:03 | [63d8cdbfc3] part of check-in [b5d38e28c6] Fix a crash. Not all tests pass, but tests do at least run to completion now. (check-in: [b5d38e28c6] user: drh branch: minmax-opt-exp, size: 208735) | |
01:51 | [101a366c2b] part of check-in [221e021077] Fix an obsolete assert(). (check-in: [221e021077] user: drh branch: minmax-opt-exp, size: 208714) | |
2020-07-10
| ||
19:09 | [a485bc1ec2] part of check-in [4a64c16fb7] An attempt to get the Min/Max optimization working with IN constraints. Not currently working. (check-in: [4a64c16fb7] user: drh branch: minmax-opt-exp, size: 208660) | |
2020-06-03
| ||
03:00 | [7bcc07ff56] part of check-in [d901837fea] Improve the query planner so that it is better able to find full index scan plan when there is an INDEXED BY clause. (check-in: [d901837fea] user: drh branch: trunk, size: 208226) | |
2020-03-16
| ||
03:07 | [9546c82056] part of check-in [8b437b4726] At the end of the right-hand table loop of a LEFT JOIN that uses an IN operator in the ON clause, put the OP_IfNoHope operator after the OP_IfNotOpen operator, not before, to avoid a (harmless) uninitialized register reference. Ticket [82b588d342d515d1] (check-in: [8b437b4726] user: drh branch: trunk, size: 208194) | |
2020-03-12
| ||
17:54 | [3946de6ac1] part of check-in [ea914bec81] Remove stray comment characters at the end of an #ifdef that were accidently left in the previous check-in. (check-in: [ea914bec81] user: drh branch: trunk, size: 208150) | |
17:28 | [8e42835425] part of check-in [2317492138] Fix comments and strengthen assert() statements associated with the OPFLAG_SEEKEQ and BTREE_SEEK_EQ flags. (check-in: [2317492138] user: drh branch: trunk, size: 208152) | |
2020-02-24
| ||
16:46 | [3b8c9bd013] part of check-in [4558163b6a] Rework this changes so that instead of setting the WhereTerm.truthProb when a term is seen to be of low selectivity, it merely sets a new flag (the TERM_HIGHTRUTH flag) which causes whereLoopOutputAdjust() to ignore that term. (check-in: [4558163b6a] user: drh branch: stat4-truthprob, size: 208171) | |
2020-02-22
| ||
18:27 | [44695e878a] part of check-in [c535fea147] Do not activate the truthProb adjustment mechanism if the truth probability is less than the heuristic value, as there could be correlations unknown to stat4. Also add additional tracing output to make truthProb adjustments more visible. (check-in: [c535fea147] user: drh branch: stat4-truthprob, size: 208222) | |
16:58 | [74a2fc5a90] part of check-in [1babd6ec5d] When stat4 information is available, try to use it to improve the truth probability of WHERE clause terms that do not participate in the index. (check-in: [1babd6ec5d] user: drh branch: stat4-truthprob, size: 207580) | |
2020-02-13
| ||
14:51 | [cbad14f1d8] part of check-in [e0c6b8bdb7] Disallow the skip-scan optimization in the absence of sqlite_stat1 data. (check-in: [e0c6b8bdb7] user: drh branch: trunk, size: 206015) | |
11:46 | [23c7744a3b] part of check-in [abfb043ebb] Fix an incorrect assert() statement that was added yesterday. Tickets [41c1456a6e61c0e7] and [fb8c538a8f57ae2a]. (check-in: [abfb043ebb] user: drh branch: trunk, size: 205989) | |
2020-02-12
| ||
11:57 | [8fed0ab2c5] part of check-in [16aed5d0c6] When determining whether an == or IS constraint in a WHERE clause makes an ORDER BY term redundant, consider the collation sequence used by the == or IS comparison, not the collation sequence of the comparison expression itself. Possible fix for [fb8c538a8f]. (check-in: [16aed5d0c6] user: dan branch: trunk, size: 206017) | |
2020-01-16
| ||
12:25 | [2005d0511e] part of check-in [86b5e5a20e] Fix an SQL syntax error in the comment on the omit-left-join optimization. No changes to code. (check-in: [86b5e5a20e] user: drh branch: trunk, size: 205810) | |
2020-01-06
| ||
17:33 | [df2bea0e01] part of check-in [d7126a9ced] Do not attempt to use the skip-scan optimization if prior terms of the index are already used for non-equality constraints. Ticket [304017f5f04a0035] (check-in: [d7126a9ced] user: drh branch: trunk, size: 205819) | |
2020-01-04
| ||
16:55 | [4ca6c06655] part of check-in [95ef68966c] Fix a problem where the loop for the RHS of a LEFT JOIN uses values from an IN() clause as the second or subsequent field of an index. (check-in: [95ef68966c] user: dan branch: trunk, size: 205745) | |
2020-01-02
| ||
00:45 | [9353093c2a] part of check-in [7bfd42f1dc] The sqlite3WhereEnd() call now unwinds all Expr modifications made by the sqlite3WhereBegin(). (check-in: [7bfd42f1dc] user: drh branch: trunk, size: 204924) | |
2019-12-29
| ||
00:52 | [602e509355] part of check-in [21ef6e9933] Add the OP_FinishSeek opcode which completes an OP_DeferredSeek if the seek has not already completed. Also add the sqlite3WhereUsesDeferredSeek() interface to the query planner. The UPDATE implementation adds an OP_FinishSeek before running the final OP_Insert if one is needed. Ticket [ec8abb025e78f40c] and also an assertion fault reported by Yongheng. (check-in: [21ef6e9933] user: drh branch: trunk, size: 204664) | |
2019-12-28
| ||
15:24 | [7bb294fdad] part of check-in [f4bed1d7af] Fix an instance where the planner might choose to use the OR-optimization when it adds no benefit. The same quirk causes an assert() to fail. This is not a bug in released versions - without the assert() the library still gets the right answer, it just does so less efficiently than it should. (check-in: [f4bed1d7af] user: dan branch: trunk, size: 204436) | |
14:07 | [97f19d6642] part of check-in [59cc46e5a6] New enhancements to .wheretrace. The 0x20000 flag shows the WHERE clause before and after coding each loop. The 0x800 flag shows status at the start and at the end of each loop. An extra "C" tag is shown on coded terms. (check-in: [59cc46e5a6] user: drh branch: trunk, size: 204435) | |
13:39 | [d1d79673b6] part of check-in [85e7688776] Expose some of the Where data structure debug printing routines to the entire WHERE-clause processing module. (check-in: [85e7688776] user: drh branch: trunk, size: 204287) | |
13:01 | [230995f73e] part of check-in [5e6357fc95] Simplifications to the initialization of the sqlite3_index_info structure that is used to communicate with virtual table modules. Avoid adding unused constraints to the sqlite3_index_info structure. Extra constraints are harmless, but might be confusing to people trying to understand the code. (check-in: [5e6357fc95] user: drh branch: trunk, size: 204224) | |
12:33 | [476c0091eb] part of check-in [a4f330b133] If the ".wheretrace 0x10000" bit is set, print WhereTerm.prereqAll and .prereqRight fields in the WhereTerm trace output. (check-in: [a4f330b133] user: drh branch: trunk, size: 204618) | |
03:55 | [2796f052b5] part of check-in [0d743585c2] Fix a faulty assert() associated with query search limiting query plans. (check-in: [0d743585c2] user: drh branch: trunk, size: 204474) | |
01:52 | [e221a612fb] part of check-in [6afadd3b3a] When an INSERT is receiving content from a SELECT, run an OP_ReleaseReg opcode at the top of each iteration of the loop in order to prevent spurious OP_SCopy misuse complaints. Ticket [de4b04149b9fdeae] (check-in: [6afadd3b3a] user: drh branch: trunk, size: 204418) | |
2019-12-24
| ||
21:01 | [58653781a4] part of check-in [ddb10f0374] Backout the early VTable cursor close change from yesterday, as Yongheng and Rui have found a test case for which it fails. The new test case is added to fuzzcheck. (check-in: [ddb10f0374] user: drh branch: trunk, size: 204416) | |
13:41 | [ac6704a7c5] part of check-in [b473ad35c5] Convert an ALWAYS() into an assert() with an extra error term. Dbsqlfuzz find, with test case in TH3. (check-in: [b473ad35c5] user: drh branch: trunk, size: 204511) | |
2019-12-23
| ||
19:28 | [c82db883f6] part of check-in [eb95dac7f6] Do an early close of virtual table cursors to avoid unnecessary cursor contention in UPDATE for some virtual table implementations. Ticket [56a74875be799b85] (check-in: [eb95dac7f6] user: drh branch: trunk, size: 204449) | |
2019-12-22
| ||
19:41 | [2565300249] part of check-in [7fc733328c] In the WHERE clause debugging output (the .wheretrace output) show the parent index of any WhereTerm that is a child. (check-in: [7fc733328c] user: drh branch: trunk, size: 204354) | |
2019-12-11
| ||
16:22 | [c51ebd505c] part of check-in [840de36df1] Strengthen check-in [83da4d4104ee1870] by ignoring *all* WHERE-clause constraints for a virtual table that is the right table of a LEFT JOIN, as such constraints are never useful. This fixes an issue discovered by Manuel Rigger. (check-in: [840de36df1] user: drh branch: trunk, size: 204277) | |
2019-12-06
| ||
11:48 | [bb2d3c08de] part of check-in [62f2235adf] The check-in [b7810062ec2489e1] was not quite right in that it allowed an oversized shift operation (which is UB in C) on some obscure inputs. OSSFuzz found the problem for us overnight. (check-in: [62f2235adf] user: drh branch: trunk, size: 204451) | |
2019-12-05
| ||
21:46 | [b9f5acc558] part of check-in [b7810062ec] Fix to the rowvalue logic that avoids disabling rowvalue inequality contraints on a virtual table when the virtual table sets the omit flag. The logic has been incorrect since row-values were added. However, this does not come up often as very few virtual tables implement inequality constraints using the omit flag. Ticket [f096d191b6641daa] (check-in: [b7810062ec] user: drh branch: trunk, size: 204455) | |
17:31 | [6807232f41] part of check-in [fc72ec52c9] Additional debugging information printed with the ".wheretrace 0x100" option. No changes to normally delivered code. (check-in: [fc72ec52c9] user: drh branch: trunk, size: 204323) | |
2019-11-30
| ||
19:29 | [2a5389e757] part of check-in [4066a34da7] Do not allow a term in the WHERE clause of the query to qualify a partial index on the right table of a LEFT JOIN. Ticket [7f39060a24b47353] (check-in: [4066a34da7] user: drh branch: trunk, size: 204025) | |
2019-11-08
| ||
20:13 | [874845fb5d] part of check-in [b59f94e4da] When a virtual table reports orderByConsumed, that tells us nothing about whether or not the SQLITE_DISTINCTBY constraint is met. Fix for ticket [7e59041f9c4e5102]. Test cases in TH3. (check-in: [b59f94e4da] user: drh branch: trunk, size: 203627) | |
2019-11-01
| ||
15:19 | [6e56bef94d] part of check-in [e6c96ed91e] Omit the optimization that reduces the column-count on rowid-table cursors when the table has generated columns, because we do not know what columns the generator expressions might try to access. (check-in: [e6c96ed91e] user: drh branch: trunk, size: 203572) | |
2019-10-22
| ||
12:02 | [6ff3ef0764] part of check-in [ba123b8c20] Merge changes on trunk into the generated-columns branch. (check-in: [ba123b8c20] user: drh branch: generated-columns, size: 203311) | |
00:03 | [148fa1ce9d] part of check-in [90f7c47735] When flipping ("commuting") a comparison operator, set the new EP_Commuted bit rather than adding extra EP_Collate bits, to single later processing that the order of precedence for COLLATE operators is inverted. Fix for ticket [b47e3627ecaadbde] (check-in: [90f7c47735] user: drh branch: trunk, size: 203172) | |
2019-10-19
| ||
15:01 | [9ab2061029] part of check-in [fb9c9bb284] Add testcase macros. (check-in: [fb9c9bb284] user: drh branch: generated-columns, size: 203468) | |
13:29 | [7b2d928b70] part of check-in [27ab41c910] Refactor names of column index transformation functions, for clarity. Get generated columns working with ALTER TABLE RENAME COLUMN. (check-in: [27ab41c910] user: drh branch: generated-columns, size: 203404) | |
2019-10-18
| ||
17:42 | [b7c662afaa] part of check-in [9f409649ec] Get generated columns working for WITHOUT ROWID tables. (check-in: [9f409649ec] user: drh branch: generated-columns, size: 203394) | |
2019-09-18
| ||
12:49 | [9f3f23efc4] part of check-in [633b214e9b] Fix another potential "jump depends on uninitialized value" warning. (check-in: [633b214e9b] user: drh branch: trunk, size: 203329) | |
2019-09-03
| ||
14:27 | [9685d5988b] part of check-in [5351e920f4] When we play games with COLLATE in order to commute an operator in the WHERE clause processing, be sure not to use the commuted operator to qualify a partial index, as insufficient COLLATE information is preserved to verify that the expression will correctly qualify the index. Ticket [767a8cbc6d20bd68] (check-in: [5351e920f4] user: drh branch: trunk, size: 203311) | |
2019-08-29
| ||
21:16 | [fb546afbdb] part of check-in [e8e9f77d52] Improve vdbe branch coverage of NULLS LAST code. (check-in: [e8e9f77d52] user: dan branch: trunk, size: 203248) | |
16:48 | [0a573a77ef] part of check-in [33da6092d3] Add a missing VdbeCoverage() macro. (check-in: [33da6092d3] user: drh branch: trunk, size: 203245) | |
2019-08-27
| ||
19:59 | [6f8bd0b4ad] part of check-in [94085fb3e7] Add support for "ORDER BY ... NULLS FIRST" and "ORDER BY ... NULLS LAST". Use this to fix ticket [f8a7060e]. (check-in: [94085fb3e7] user: dan branch: trunk, size: 203220) | |
17:28 | [b33215cc1c] part of check-in [aff2098047] Add ALWAYS() to an always true conditional that results from the previous check-in. Add a test case for ticket [dbaf8a6820be1ece] to supplement those already checked into TH3. (check-in: [aff2098047] user: drh branch: trunk, size: 202723) | |
17:01 | [6cc2708ab9] part of check-in [7f5168a76a] Omit the "x IN (y)" to "x==y" optimization of check-in [e68b427afbc82e20] (and ticket [e39d032577df6942]) as it causes difficult affinity problems as demonstrated by ticket [dbaf8a6820be1ece] and the original assertion fault is no longer a factor due to countless other changes of the previous 5 years. (check-in: [7f5168a76a] user: drh branch: trunk, size: 202715) | |
2019-08-23
| ||
13:32 | [10e21ac338] part of check-in [bf875e1a25] Invert the meaning of the regBignull flag so that it is 1 when doing the normal scan and 1 when scanning nulls. This enables the re-do jump at the bottom of the loop to be coded with a single OP_IfNotZero opcode, rather than a sequence of OP_If, OP_Integer, OP_Goto. (check-in: [bf875e1a25] user: drh branch: nulls-last, size: 203358) | |
13:08 | [cba2047482] part of check-in [649b08ead5] Extra VDBE comments in the NULLS LAST logic provide landmarks to help understand the EXPLAIN output. (check-in: [649b08ead5] user: drh branch: nulls-last, size: 203621) | |
2019-08-22
| ||
19:35 | [e954bdbd24] part of check-in [63e625c8eb] Merge fixes from trunk. Also fix a reference to the KeyInfo.aSortOrder field, which should now be KeyInfo.aSortFlags (check-in: [63e625c8eb] user: drh branch: nulls-last, size: 203528) | |
16:38 | [c35ad5b77f] part of check-in [44578865fa] Fix the likely(), unlikely(), and likelihood() functions so that they have no affinity, just like any other function. Ticket [7e07a3dbf5a8cd26] (check-in: [44578865fa] user: drh branch: trunk, size: 202853) | |
2019-08-21
| ||
19:58 | [b49039ad3e] part of check-in [b1cbcdc6eb] Add missing VdbeCoverage() macros to new code. (check-in: [b1cbcdc6eb] user: dan branch: nulls-last, size: 203458) | |
15:41 | [efdaf72cba] part of check-in [6153bcf41a] Update this branch with latest trunk changes. (check-in: [6153bcf41a] user: dan branch: nulls-last, size: 203598) | |
14:54 | [16c649c1db] part of check-in [d02490a2f0] Avoid assuming that "column IS ?", where column is declared UNIQUE, matches only a single row (as "?" might be NULL). Fix for [b8689402]. (check-in: [d02490a2f0] user: dan branch: trunk, size: 202783) | |
2019-08-20
| ||
15:47 | [391e856e4e] part of check-in [a9a82ee88d] Do not pass ORDER BY clauses with non-standard NULL handling to virtual table implementations. (check-in: [a9a82ee88d] user: dan branch: nulls-last, size: 203285) | |
2019-08-17
| ||
15:47 | [52c433208e] part of check-in [db1e60800b] Merge trunk changes into this branch. (check-in: [db1e60800b] user: dan branch: nulls-last, size: 203217) | |
2019-08-16
| ||
21:07 | [c4ec116264] part of check-in [81069d7196] Add support for using indexes for some ORDER BY clauses that use non-default NULL handling. Still some problems on this branch. (check-in: [81069d7196] user: dan branch: nulls-last, size: 203179) | |
2019-08-15
| ||
14:35 | [2fac51d242] part of check-in [98357d8c12] Ensure that the optional "sz=N" parameter that can be manually added to the end of an sqlite_stat1 entry does not have an N value that is too small. Ticket [e4598ecbdd18bd82] (check-in: [98357d8c12] user: drh branch: trunk, size: 202470) | |
2019-08-12
| ||
16:36 | [83fc2acadf] part of check-in [07babb0f89] Experimental implementation of NULLS FIRST/LAST. This branch still has problems - the most significant of which is that ORDER BY clauses with a non-default NULLS FIRST/LAST qualifier can never use an index. (check-in: [07babb0f89] user: dan branch: nulls-last, size: 202603) | |
2019-08-08
| ||
16:23 | [90cb93dc8e] part of check-in [845d2f17de] More legacy STAT3 code removed. (check-in: [845d2f17de] user: drh branch: omit-stat3, size: 202432) | |
15:24 | [bda7162bee] part of check-in [1e17ea2fd1] Remove support for STAT3. The sqlite_stat3 tables are ignored, if they exist. STAT4 continues to work as it always has, and as it is a superset of STAT3 is the recommended replacement. (check-in: [1e17ea2fd1] user: drh branch: omit-stat3, size: 202426) | |
2019-08-06
| ||
14:37 | [b6055f4714] part of check-in [e8234f6939] Use 0x40 (ASCII '@') instead of 0x00 to mean "no affinity" so that columns with no affinity can appear in a zero-terminated string. Use the new SQLITE_AFF_NONE macro for this new magic number. (check-in: [e8234f6939] user: drh branch: pending, size: 202566) | |
2019-08-03
| ||
16:37 | [dee31d6842] part of check-in [d465c3eef4] Fix a problem with queries of the form "SELECT min(<expr>) ... WHERE <expr>=?" where there is an index on <expr>. Fix for [71e183ca]. (check-in: [d465c3eef4] user: dan branch: trunk, size: 202530) | |
16:17 | [57a9b7b393] part of check-in [fd598e475d] In the ".wheretrace 0x100" debugging mode, show the structure of the main parameters to sqlite3WhereBegin() calls. (check-in: [fd598e475d] user: drh branch: trunk, size: 202394) | |
2019-07-30
| ||
14:22 | [01b68cfc7f] part of check-in [89bf0399e8] Improved fix for ticket [ced41c7c7d6b4d36] that keeps skip-scan enabled, but avoids identifying a skip-scan as order-distinct (because it is not) and thus forces a separate b-tree to implement the DISTINCT clause of a query. This undoes check-in [a871d69c6de65038] and substitutes a new fix. (check-in: [89bf0399e8] user: drh branch: trunk, size: 202068) | |
01:17 | [03125c703a] part of check-in [a871d69c6d] Disable the skip-scan optimization for DISTINCT queries. Fix for ticket [ced41c7c7d6b4d36] (check-in: [a871d69c6d] user: drh branch: trunk, size: 202073) | |
2019-07-29
| ||
14:42 | [a3c9a0e121] part of check-in [b47169319a] When using an index for both DISTINCT and ORDER BY, do not confuse the number of columns required for distinctness with the number required to get the correct sort order. Fix for [6749cb3c]. (check-in: [b47169319a] user: dan branch: tkt-6749cb3c, size: 202002) | |
2019-07-16
| ||
19:44 | [2f508c9a6d] part of check-in [9e66458592] Add new assert() statements in an attempt to help static analyzers avoid false-positives. (check-in: [9e66458592] user: drh branch: trunk, size: 201890) | |
2019-06-28
| ||
07:08 | [2f11eeb143] part of check-in [eab4297577] Use the OP_Sequence opcode for generating unique rowid values for an autoindex on a co-routine implementation of a subquery. (check-in: [eab4297577] user: drh branch: trunk, size: 201866) | |
2019-04-26
| ||
17:20 | [3e9689df25] part of check-in [1b25fa108a] An experimental interface for retrieving the estimated cost and estimated number of output rows for a query. (check-in: [1b25fa108a] user: drh branch: cost-est, size: 202051) | |
2019-04-19
| ||
13:38 | [99c7b718ef] part of check-in [7713996aa9] Streamline the processing of the AND operator. Slightly smaller and faster. (check-in: [7713996aa9] user: drh branch: trunk, size: 201935) | |
2019-03-29
| ||
13:17 | [ff2955dc27] part of check-in [f5752517f5] Fix a fairly obscure problem causing the planner to sometimes choose sub-optimal plans for a query with a single virtual table in the FROM clause, and at least one IN(...) constraint in the WHERE clause. (check-in: [f5752517f5] user: dan branch: trunk, size: 201939) | |
2019-01-28
| ||
18:58 | [8a207cb2ca] part of check-in [c4db0ad12d] Fix a performance regression caused by the previous commit. (check-in: [c4db0ad12d] user: drh branch: index-on-cast, size: 201893) | |
18:08 | [c91b3dd6bb] part of check-in [3ef711d98f] Make indexes on CAST(...) expressions work. (check-in: [3ef711d98f] user: dan branch: index-on-cast, size: 201421) | |
2019-01-22
| ||
18:20 | [e575883d9f] part of check-in [8790368b4a] Add the SQLITE_ENABLE_EARLY_CURSOR_CLOSE compile-time option which causes read cursors to be closed after their usefulness ends during a two-pass UPDATE. (check-in: [8790368b4a] user: mistachkin branch: branch-3.26, size: 201124) | |
2019-01-17
| ||
19:33 | [c5d201699d] part of check-in [7def6c8edd] Add the SQLITE_ENABLE_EARLY_CURSOR_CLOSE compile-time option which causes read cursors to be closed after their usefulness ends during a two-pass UPDATE. (check-in: [7def6c8edd] user: drh branch: trunk, size: 201361) | |
2019-01-15
| ||
14:31 | [dc293ea423] part of check-in [ecf5caa7e9] Fix a problem triggered by DELETE statements with WHERE clauses that use the OR-optimization on some virtual tables. (check-in: [ecf5caa7e9] user: dan branch: trunk, size: 200527) | |
2019-01-10
| ||
13:56 | [7a1db797b6] part of check-in [e22d2f905f] Use the new SQLITE_IDXTYPE_IPK values (3) on Index.idxType to indicate the fake INTEGER PRIMARY KEY index used during query planning. (check-in: [e22d2f905f] user: drh branch: trunk, size: 200448) | |
2018-12-31
| ||
18:30 | [981412c27a] part of check-in [9fb646f29c] Merge enhancements and bug fixes from trunk. (check-in: [9fb646f29c] user: drh branch: reuse-subqueries, size: 200349) | |
2018-12-29
| ||
02:26 | [ebdd593773] part of check-in [4a0929ac76] A new implementation of sqlite3VdbeMakeLabel() is faster and makes fewer memory allocations by deferring memory allocation until sqlite3VdbeResolveLabel() is called, at which point the code generator has a better idea of how big the relocation table needs to be. The sqlite3VdbeMakeLabel() routine now takes a Parse* parameter instead of Vdbe*. (check-in: [4a0929ac76] user: drh branch: trunk, size: 200300) | |
2018-12-25
| ||
00:15 | [bf0715a807] part of check-in [3c2ad0e915] Increase the number of parameters to sqlite3WhereCodeOneLoopStart() to encourage the compiler to inline that routine within sqlite3WhereBegin(). This gives a performance improvement. (check-in: [3c2ad0e915] user: drh branch: reuse-subqueries, size: 200339) | |
2018-12-24
| ||
02:34 | [05877beee5] part of check-in [6c44838adb] Experimental code that tries to put the computation of subqueries inside a subroutine, and reuse that subroutine if the same subquery is evaluated more than once. Current code does not work for CHECK constraints. (check-in: [6c44838adb] user: drh branch: reuse-subqueries, size: 200325) | |
2018-12-14
| ||
20:20 | [8a445862f9] part of check-in [b29e02f877] Add the OP_ColumnsUsed opcode (when compiled with SQLITE_ENABLE_COLUMN_USED_MASK) as a hint to the b-tree layer as to which columns of a btree cursor will be used. (Backport from 3.8.11) (check-in: [b29e02f877] user: drh branch: branch-3.8.9, size: 270904) | |
2018-11-20
| ||
16:02 | [fded04f3d8] part of check-in [dfab7170ed] Consolidate the two sqlite3SchemaToIndex() routines. (check-in: [dfab7170ed] user: dan branch: reuse-schema1, size: 200445) | |
2018-11-19
| ||
20:41 | [9cf0501bb1] part of check-in [84be9220db] Fix a problem with virtual tables in shared schemas. (check-in: [84be9220db] user: dan branch: reuse-schema1, size: 200447) | |
2018-11-17
| ||
18:45 | [0248d44679] part of check-in [9fdd186897] Merge latest trunk changes into this branch. (check-in: [9fdd186897] user: dan branch: reuse-schema1, size: 200312) | |
14:19 | [3818e8a736] part of check-in [645232f2b9] Remove a C++-style comment. (check-in: [645232f2b9] user: drh branch: trunk, size: 200290) | |
2018-11-16
| ||
15:08 | [053e5004a6] part of check-in [4372ad644d] Update the generate_series() table-valued function to make use of the new SQLITE_CONSTRAINT return from xBestIndex. (check-in: [4372ad644d] user: drh branch: trunk, size: 200366) | |
13:56 | [23f955de6d] part of check-in [684013cef6] Enhance the xBestIndex interface of virtual table so that if the xBestIndex method returns SQLITE_CONSTRAINT then that particular combination of constraints is considered unusable and does not participate further in query planning. (check-in: [684013cef6] user: drh branch: trunk, size: 200297) | |
2018-11-15
| ||
21:20 | [dc648e8b7e] part of check-in [31b6aee755] Fix some problems with the feature on this branch. Many problems remain. (check-in: [31b6aee755] user: dan branch: reuse-schema1, size: 200164) | |
2018-11-09
| ||
14:17 | [f5da1079f0] part of check-in [531eca6104] Fix for ticket [787fa716be3a7f650cac] (check-in: [531eca6104] user: drh branch: trunk, size: 200142) | |
2018-10-05
| ||
20:09 | [e34d423bec] part of check-in [5c243eec7b] When the left-hand side of a WHERE clause contraint is a UNIQUE column, and that term of the WHERE clause is not used for indexing, assume that the term reduces the number of output rows by half. This is one proposed fix for ticket [e8b674241947eb3ba4] (check-in: [5c243eec7b] user: drh branch: unique-constraint-weights, size: 200840) | |
2018-10-04
| ||
18:17 | [824ca57fcf] part of check-in [857a1b01df] The 0x8000 optimization flag associated with SQLITE_TESTCTRL_OPTIMIZATIONS causes a large penalty (200) to be added to all sorting costs, which encourages the query planner avoid using the sorter. This flag can be used in experiments to help come up with a more accurate estimate of the true cost of sorting. (check-in: [857a1b01df] user: drh branch: query-planner-debug, size: 200243) | |
2018-09-24
| ||
12:37 | [a54a3d639b] part of check-in [903e501894] Use compile-time options SQLITE_QUERY_PLANNER_LIMIT and SQLITE_QUERY_PLANNER_LIMIT_INCR to control the value for WhereLoopBuilder.iPlanLimit, rather than embedding magic numbers in the code. (check-in: [903e501894] user: drh branch: trunk, size: 200177) | |
10:47 | [49022d3c15] part of check-in [3dd35f5118] Increase the initial value of WhereLoopBuilder.iPlanLimit to 20K. Issue a warning if the iPlanLimit reaches zero. (check-in: [3dd35f5118] user: drh branch: trunk, size: 200589) | |
2018-09-22
| ||
15:05 | [9e2cccc1d0] part of check-in [7b59930a1d] Enhance WhereLoopBuilder.iPlanLimit to handle a case involving the OR optimization discovered overnight by OSSFuzz. (check-in: [7b59930a1d] user: drh branch: trunk, size: 200514) | |
2018-09-21
| ||
18:43 | [e5c4f5ab05] part of check-in [8690b5a0cc] Put a limit counter on the query planner that restricts the number of index+constraint options that can be considered for each table in a join. This prevents certain pathological queries from taking up too much time in the query planner. (check-in: [8690b5a0cc] user: drh branch: trunk, size: 200376) | |
2018-09-19
| ||
14:54 | [33a546a918] part of check-in [147c61a6d4] Reduce the size of Expr from 80 to 72 bytes moving the pRight field inside the "x" union. This is an incremental check-in that still has issues. (check-in: [147c61a6d4] user: drh branch: expr-simplify, size: 200136) | |
2018-09-18
| ||
21:35 | [c90c392c7c] part of check-in [8849a463d6] In the Expr object, the Expr.eX field determines what value is stored in the Expr.x union. This mostly works, but there are issues identified by valgrind. (check-in: [8849a463d6] user: drh branch: expr-simplify, size: 199621) | |
2018-09-10
| ||
14:43 | [2019126801] part of check-in [3bbd9c5f2f] New testcase() macros on virtual table xBestIndex logic. (check-in: [3bbd9c5f2f] user: drh branch: trunk, size: 199545) | |
12:17 | [0715726774] part of check-in [83da4d4104] Fix a problem with processing a "vtab.col IS NULL" expression within the WHERE clause of a query when "vtab" is a virtual table on the rhs of a LEFT JOIN. (check-in: [83da4d4104] user: dan branch: trunk, size: 199453) | |
2018-09-08
| ||
20:29 | [ff7f4024cb] part of check-in [5a954533ed] Fix an unreachable branch in the new sqlite3WhereOrderByLimitOptLabel() function of the query planner. (check-in: [5a954533ed] user: drh branch: trunk, size: 198985) | |
20:09 | [5192013a21] part of check-in [206720129e] Fix multiple issues with the ORDER BY LIMIT optimization. This is the proposed resolution to ticket [9936b2fa443fec03ff25]. (check-in: [206720129e] user: drh branch: trunk, size: 199001) | |
2018-08-03
| ||
23:04 | [155809967f] part of check-in [3f5f60cd75] Completely remove the column cache logic, which has been a persistent source of bugs for many years. Due to recent enhancements to the performance of the OP_Column opcode, removing the column cache actually makes speed-check.sh run faster. Removing the column cache also saves about 1,800 bytes of code space. (check-in: [3f5f60cd75] user: drh branch: omit-column-cache, size: 197820) | |
2018-07-28
| ||
21:01 | [52ab6d07a6] part of check-in [85b9beb460] Add a small cost penalty to sorting to bias the query planner in favor of plans that do not require a final sorting pass. (check-in: [85b9beb460] user: drh branch: trunk, size: 197916) | |
2018-07-27
| ||
17:51 | [fae13835da] part of check-in [598d608359] Only run the constant propagation optimization on joins since that is the only scenario where it is useful. This saves prepare time for the common case of a simple query. (check-in: [598d608359] user: drh branch: propagate-const-opt, size: 197671) | |
2018-07-20
| ||
19:24 | [2d313b4467] part of check-in [489f3caf5d] Change the SQLITE_Stat34 bit of the optimization test-control so that it prevents STAT4 data from being used but allows it to be loaded into the Index objects. This permits STAT4 to be turned on and off on a per-statement basis. (check-in: [489f3caf5d] user: drh branch: trunk, size: 197663) | |
2018-07-12
| ||
19:14 | [cd6710e24d] part of check-in [650a3fe03d] Add a test-control to disable the skip-scan optimization. (check-in: [650a3fe03d] user: dan branch: trunk, size: 197557) | |
2018-07-10
| ||
19:48 | [7afd00cf7f] part of check-in [a7cdc5bc85] Identify Select objects within a single statement using small sequential integers rather than "0x%p". This is more readable and yields the same result on successive runs. (check-in: [a7cdc5bc85] user: drh branch: trunk, size: 197510) | |
2018-07-04
| ||
14:28 | [a38a485f36] part of check-in [32924446db] Experimental planner change to avoid a skip-scan if a regular index scan on the same index columns can be done instead. (check-in: [32924446db] user: dan branch: exp-avoid-expensive-skipscan, size: 198388) | |
2018-06-11
| ||
17:35 | [0bcbf9e191] part of check-in [b37614a367] Add the OP_SetTabCol and OP_VerifyTabCol opcodes, only when compiling with SQLITE_DEBUG, to do run-time verification of the column cache. (check-in: [b37614a367] user: drh branch: trunk, size: 197514) | |
2018-06-09
| ||
14:13 | [fe1a6f97c1] part of check-in [31e480f68d] Improved comments an presentation for the recent IN operator decision improvement. (check-in: [31e480f68d] user: drh branch: trunk, size: 196560) | |
01:12 | [9915929594] part of check-in [d735872ec3] Compute the bitmask of indexed columns for each index once when the Index objecct is constructed, instead of recomputing it every time it is needed. (check-in: [d735872ec3] user: drh branch: trunk, size: 196464) | |
00:09 | [b93db8c543] part of check-in [292724ffc4] Avoid invoking the whereLoopAddOr() routine in the query planner if there are no OR operators in the WHERE clause, thus speeding up query planning slightly. (check-in: [292724ffc4] user: drh branch: trunk, size: 196898) | |
2018-06-08
| ||
21:21 | [e4d48338ca] part of check-in [30e874661d] Only choose to scan an IN operator rather than use an index if we have real STAT1 data to suggest it is advantageous. (check-in: [30e874661d] user: drh branch: in-scan-vs-index, size: 196874) | |
18:22 | [8e95858b39] part of check-in [1fa40a78fe] Consider doing a partial table scan to fulfill an IN operator rather than using an index. Try to pick the plan with the lowest cost. (check-in: [1fa40a78fe] user: drh branch: in-scan-vs-index, size: 196712) | |
2018-06-07
| ||
17:32 | [7dcb13bbcf] part of check-in [439c816227] Remove the NextIfOpen and PrevIfOpen opcodes which are no longer needed when the IN-early-out optimization is working. (check-in: [439c816227] user: drh branch: multikey-opt-idea, size: 195335) | |
14:59 | [6011e6a78e] part of check-in [522f1eacc2] Add the WHERE_IN_EARLYOUT flag and use it to clarify the logic of this optimization. (check-in: [522f1eacc2] user: drh branch: multikey-opt-idea, size: 195347) | |
2018-06-05
| ||
20:45 | [83b6cf94d9] part of check-in [6bf251af43] Add the OP_IfNoHope and OP_SeekHit opcodes used to reduce the number of unnecessary sqlite3BtreeMovetoUnpacked() calls when checking for an early exit on IN-operator loops. Futher optimizations are likely possible here. (check-in: [6bf251af43] user: drh branch: multikey-opt-idea, size: 195289) | |
15:16 | [a16f982d99] part of check-in [87a9fc504f] Use an OP_NotFound opcode to cancel futile IN operators early. The current implementation is suboptimal because it always runs teh OP_NotFound. This still needs to be enhanced to only do the OP_NotFound if no results have been seen on the current loop. (check-in: [87a9fc504f] user: drh branch: multikey-opt-idea, size: 195289) | |
2018-05-30
| ||
00:54 | [a9a270991e] part of check-in [92f0fe155d] Demonstration code on a possible technique for optimizing the use of IN operator on columns to the right of multicolumn indexes. If the OP_Noop generated where were really a new opcode that checked to see if there existed any entries in the index with a matching prefix, it might prevent unnecessary iterations of the IN operator. (check-in: [92f0fe155d] user: drh branch: multikey-opt-idea, size: 195194) | |
2018-05-14
| ||
22:46 | [60ec752fcb] part of check-in [172f5bd27e] Make more aggressive use of automatic indexes when processing materalized views and subqueries. (check-in: [172f5bd27e] user: drh branch: trunk, size: 195036) | |
18:09 | [95b25ef085] part of check-in [991a76bf42] The restriction on using automatic indexes for low cardinality loops only applies if the cardinality is restricted by a LIMIT clause. (check-in: [991a76bf42] user: drh branch: exp-indexed-clause, size: 194924) | |
17:12 | [ebc86f315e] part of check-in [32b3d11050] Experimental syntax enhancement for an "INDEXED" keyword following a FROM-clause subquery that indicates that an automatic index on that subquery is suggested. (check-in: [32b3d11050] user: drh branch: exp-indexed-clause, size: 194830) | |
2018-05-07
| ||
11:37 | [d89b1aa56a] part of check-in [374d8e2644] Fix harmless compiler warnings associated with the new EXPLAIN QUERY PLAN logic. (check-in: [374d8e2644] user: drh branch: trunk, size: 194807) | |
2018-05-02
| ||
18:00 | [8265aec8b1] part of check-in [5f0e803e33] Fix test cases so that they work with the new EXPLAIN QUERY PLAN output format. Only some of the cases have been fixed. This is an incremental check-in. (check-in: [5f0e803e33] user: drh branch: rework-EQP, size: 194832) | |
16:13 | [aa94ef44ef] part of check-in [f2f525548c] Improved EQP output for recursive CTEs and multi-value VALUES clauses. (check-in: [f2f525548c] user: drh branch: rework-EQP, size: 194826) | |
2018-04-24
| ||
17:34 | [7a1c5555c0] part of check-in [aeb694e3f7] Do not attempt to use terms from the WHERE clause to drive indexes on the right table of a LEFT JOIN. Fix for ticket [4ba5abf65c5b0f9a96a7a40cd18b] (check-in: [aeb694e3f7] user: drh branch: trunk, size: 194770) | |
2018-04-23
| ||
19:30 | [2e8d9899e7] part of check-in [4df5ea935e] Disable the OR optimization based on expressions in the ON clause of a LEFT JOIN. This is a temporary measure until we can devise a better fix. (check-in: [4df5ea935e] user: drh branch: begin-concurrent-pnu-tempfix, size: 194380) | |
2018-04-09
| ||
15:57 | [d6e5f2056e] part of check-in [9506ec14fb] Enhance the query planner so that it detects when the xBestIndex method of a virtual table gives out-of-sequence argvIndex values and reports an error. Secondary fix for ticket [2b8aed9f7c9e6]. (check-in: [9506ec14fb] user: drh branch: trunk, size: 194876) | |
13:58 | [f24ffd41cd] part of check-in [ea2e5b34bf] Improvements to ".wheretrace" output. (check-in: [ea2e5b34bf] user: drh branch: trunk, size: 194526) | |
2018-01-31
| ||
14:07 | [7cae47e813] part of check-in [74d857d178] Fix a failing assert() in the new code on this branch. (check-in: [74d857d178] user: dan branch: omit-left-join-fix, size: 194328) | |
2018-01-29
| ||
17:08 | [eb37882608] part of check-in [88411a402b] Update the omit-left-join optimization so that it works in some cases when the RHS is subject to a UNIQUE but not NOT NULL constraint. (check-in: [88411a402b] user: dan branch: omit-left-join-fix, size: 194392) | |
2018-01-27
| ||
05:40 | [10c7e13c90] part of check-in [eef8cbef3c] Proposed fix for the query planner problem of ticket [ec32177c99ccac2b1]. (check-in: [eef8cbef3c] user: drh branch: trunk, size: 194248) | |
2018-01-16
| ||
13:37 | [caf0b6c9d3] part of check-in [feb2c2b6f6] Fix a problem causing an infinite loop or other malfunction in some UPDATE statements with an OR term in the WHERE clause. Ticket [47b2581aa9bfecec] (check-in: [feb2c2b6f6] user: dan branch: trunk, size: 194201) | |
2017-12-29
| ||
15:04 | [36b92103f7] part of check-in [7a7f826e32] Change the function name to sqlite_unsupported_offset(X). Only enable the function if compiled with -DSQLITE_ENABLE_OFFSET_SQL_FUNC. The makefiles add that definition to shell builds. (check-in: [7a7f826e32] user: drh branch: location-function, size: 193351) | |
14:33 | [9c1fca74de] part of check-in [dd94d6a880] Enhance location(X) so that it works with indexes and WITHOUT ROWID tables. The function might return an offset to the main table or to an index, depending on whether the column X would be loaded from the main table or from the index. (check-in: [dd94d6a880] user: drh branch: location-function, size: 193292) | |
2017-12-22
| ||
00:52 | [5876c9100b] part of check-in [5c1fe66660] Modify the new sqlite3_vtab_collation() interface so that it takes a pointer to the sqlite3_index_info object passed into xBestIndex rather than an sqlite3 connection pointer, which the xBestIndex method might not have access to. (check-in: [5c1fe66660] user: drh branch: trunk, size: 193264) | |
2017-12-19
| ||
18:56 | [0cdfda2870] part of check-in [ad38d2c4f0] Fix crash in sqlite3_vtab_collation() when called for an IS NOT NULL constraint. (check-in: [ad38d2c4f0] user: dan branch: trunk, size: 192755) | |
2017-12-16
| ||
19:16 | [1617e7e42d] part of check-in [d5b597b52a] Merge latest trunk changes into this branch. (check-in: [d5b597b52a] user: dan branch: schemalint, size: 192712) | |
2017-12-08
| ||
19:37 | [ee9dd4a438] part of check-in [02013fc120] The query planner tries to avoids using indexes that use unknown collating functions. (check-in: [02013fc120] user: drh branch: trunk, size: 191514) | |
2017-12-07
| ||
22:10 | [ea27cbc78c] part of check-in [bbd69fa6fa] When doing a table scan using an index, do not error out if collating functions used by that index are unavailable, since they will not be used. (check-in: [bbd69fa6fa] user: drh branch: trunk, size: 191941) | |
2017-11-29
| ||
16:16 | [a338038b90] part of check-in [373fa21bff] Merge latest trunk changes into this branch. (check-in: [373fa21bff] user: dan branch: schemalint, size: 192675) | |
2017-11-23
| ||
04:45 | [9752b68e03] part of check-in [b016c28fa5] Fix a problem in the omit-table-from-left-join optimization from check-in [0cd82ee9a8413cf] that was discovered by OSSFuzz. (check-in: [b016c28fa5] user: drh branch: trunk, size: 191477) | |
00:45 | [1b85f0676c] part of check-in [b7595cf2ca] Completely disable the skip-ahead-distinct optimization for all but the inner-most loop of a DISTINCT join. Fix for ticket [ef9318757b152e3a26e9592] (check-in: [b7595cf2ca] user: drh branch: trunk, size: 191277) | |
2017-11-21
| ||
23:47 | [868c5b4722] part of check-in [a33f88acd7] An experimental optimization to DISTINCT that causes an immediate exit of the inner loop of a join following each output row if the inner loop does not contribute any columns to the result set. (check-in: [a33f88acd7] user: drh branch: distinct-early-out, size: 192176) | |
23:38 | [1c0ab20720] part of check-in [2dcef5a9ae] Fix the skip-ahead-distinct optimization on joins for cases there the table in the inner loop of the join does not contribute any columns to the result set. Proposed fix for ticket [ef9318757b152e3a2] (check-in: [2dcef5a9ae] user: drh branch: trunk, size: 191590) | |
19:22 | [9742731e32] part of check-in [618ca9fe53] Update the omit-table-from-left-join optimization so that it can omit tables from the middle of the join as well as the end. (check-in: [618ca9fe53] user: dan branch: left-join-optimization, size: 191204) | |
2017-11-20
| ||
14:40 | [e729f47752] part of check-in [299d7ca52f] Fix a problem preventing the planner from identifying scans that visit at most one row in cases where that property is guaranteed by a unique, not-null, non-IPK column that is the leftmost in its table. (check-in: [299d7ca52f] user: dan branch: left-join-omit-fix, size: 189775) | |
2017-11-07
| ||
18:20 | [031a80bcaf] part of check-in [292a04086a] Fix a problem causing an INDEXED BY specifying an unusable partial index to be mishandled. (check-in: [292a04086a] user: dan branch: trunk, size: 189774) | |
2017-10-31
| ||
03:40 | [b7a075f5fb] part of check-in [1c80c75d4b] Remove unnecessary NEVER() and ALWAYS() conditionals. (check-in: [1c80c75d4b] user: drh branch: trunk, size: 189792) | |
2017-10-27
| ||
23:28 | [ca5c29ba20] part of check-in [0926df095f] I was a little concerned about this check-in. Though I could not generate a failure myself, I thought it was risky. I checked it in for further testing. Then, overnight, OSSFuzz found a failure case for me. So the change is now moved out into a deadend branch. Was: Use OP_SCopy rather than OP_Copy to transfer results from a co-routine to its consumer. This undoes an earlier fix for ticket [98825a79ce] by check-in [ec6a06246e] because that problem no longer occurs due to WHERE clause push-down. (check-in: [0926df095f] user: drh branch: mistake, size: 189826) | |
2017-10-16
| ||
11:50 | [d8c6d690c4] part of check-in [700a3c6944] Improved comments, including a typo fix, on the whereLoopCheaperProperSubset() function. (check-in: [700a3c6944] user: drh branch: trunk, size: 189825) | |
2017-10-15
| ||
22:16 | [248f0dc608] part of check-in [ee31c04353] In the query planner, do not consider index X to be a proper subset of index Y if X is a covering index but Y is not. (check-in: [ee31c04353] user: drh branch: trunk, size: 189673) | |
2017-10-12
| ||
14:13 | [dd3be478fc] part of check-in [d325da6c50] Update this branch to match latest trunk. (check-in: [d325da6c50] user: dan branch: schemalint, size: 190705) | |
2017-10-11
| ||
20:26 | [80b3f578f1] part of check-in [2719cf5c5b] Merge latest trunk changes with this branch. (check-in: [2719cf5c5b] user: dan branch: schemalint, size: 190733) | |
2017-09-28
| ||
01:58 | [049522adcf] part of check-in [490e488ea9] Add new routines to simplify dealing with collating sequences in expressions: sqlite3ExprNNCollSeq() and sqlite3ExprCollSeqMatch(). (check-in: [490e488ea9] user: drh branch: trunk, size: 189507) | |
01:09 | [5b004ea313] part of check-in [0413001843] Indexes on expressions with a COLLATE clause are able to satisfy an ORDER BY with the same COLLATE clause. (check-in: [0413001843] user: drh branch: trunk, size: 189778) | |
00:01 | [da814d09ab] part of check-in [80277d2fc9] In two places, change the magic number -1 to its proper symbol XN_ROWID. (check-in: [80277d2fc9] user: drh branch: trunk, size: 189753) | |
2017-09-15
| ||
14:36 | [21eea98192] part of check-in [f7f0bf1da0] Fix a harmless comment typo. No changes to code. (check-in: [f7f0bf1da0] user: drh branch: trunk, size: 189743) | |
2017-09-11
| ||
19:47 | [d97f97ca60] part of check-in [0fb992af66] Refactor names of constants and functions associated with the auxiliary operators for xBestIndex. (check-in: [0fb992af66] user: drh branch: vtab-extra-ops, size: 189746) | |
18:37 | [3db249dfce] part of check-in [d3153abda6] Minor adjustments to indentation and spacing for clarity. No changes to code. (check-in: [d3153abda6] user: drh branch: vtab-extra-ops, size: 189807) | |
2017-09-09
| ||
19:41 | [7cc9692dc4] part of check-in [34c8e95261] Enhance the vtab interface to handle IS, !=, IS NOT, IS NULL and IS NOT NULL constraints. (check-in: [34c8e95261] user: dan branch: vtab-extra-ops, size: 189812) | |
2017-09-04
| ||
00:33 | [101f0a645c] part of check-in [c7f9f47b23] Proposed fix for ticket [b899b6042f97f5] (check-in: [c7f9f47b23] user: drh branch: trunk, size: 189583) | |
2017-08-25
| ||
13:34 | [0aaa1b085a] part of check-in [39f708d1e2] Small performance optimization in sqlite3WhereBegin(). (check-in: [39f708d1e2] user: drh branch: trunk, size: 189538) | |
2017-08-18
| ||
08:29 | [ad558533d6] part of check-in [37e1900880] Only use indexes on expressions to optimize ORDER BY and GROUP BY if the collation sequence matches. Possible fix for [e20dd54a]. (check-in: [37e1900880] user: dan branch: trunk, size: 189461) | |
2017-07-27
| ||
22:16 | [3508f80b35] part of check-in [2495acf710] Enhance the like optimization so that it works with an ESCAPE clause. (check-in: [2495acf710] user: drh branch: branch-3.8.9, size: 270165) | |
2017-07-18
| ||
17:13 | [cbe8ddffbc] part of check-in [d2f0b2e859] Avoid creating an automatic index on the RHS of a LEFT JOIN to optimize an IS term. Fix for [ce68383b]. (check-in: [d2f0b2e859] user: dan branch: trunk, size: 189454) | |
2017-07-08
| ||
01:01 | [5e7cf96bd8] part of check-in [d227de8ad9] Fix the covering index OR optimization (check-in [fcbd6abd]) so that it works with SQLITE_MAX_ATTACHED>30. Broken by a bad cherry-pick merge. (check-in: [d227de8ad9] user: drh branch: branch-3.8.9, size: 269140) | |
2017-07-05
| ||
16:20 | [4ba1381573] part of check-in [fcbd6abdb1] Make use of covering indexes in the OR optimization. (check-in: [fcbd6abdb1] user: drh branch: branch-3.8.9, size: 269129) | |
2017-07-04
| ||
19:34 | [e7cc809434] part of check-in [d1ba200234] Add the count-of-view optimization when compiled using SQLITE_COUNTOFVIEW_OPTIMIZATION. (check-in: [d1ba200234] user: drh branch: trunk, size: 189137) | |
2017-06-28
| ||
18:25 | [715b84912b] part of check-in [a934dd14ac] Make the query planners use of partial indexes based on bound variables responsive to the SQLITE_DBCONFIG_ENABLE_QPSG setting. (check-in: [a934dd14ac] user: drh branch: partial-index-variables, size: 189096) | |
2017-06-24
| ||
18:10 | [563cd034b1] part of check-in [7b59c353b8] Consider the values bound to SQL variables when determining whether or not a partial index may be used. (check-in: [7b59c353b8] user: dan branch: partial-index-variables, size: 189012) | |
16:03 | [74b0a05487] part of check-in [f0ec36d479] Query planner tuning: When deciding between two plans with the same cost, bias the selection toward the one that does not use the sorter. (check-in: [f0ec36d479] user: drh branch: trunk, size: 188967) | |
2017-06-22
| ||
16:51 | [d4f329d905] part of check-in [e4a022be4b] When generating individual loops for each ORed term of an OR scan, move any constant WHERE expressions outside of the loop, as is done for top-level loops. (check-in: [e4a022be4b] user: dan branch: or-optimization, size: 188887) | |
2017-06-11
| ||
20:17 | [aa213e1b1c] part of check-in [0bbdaf2801] Fix an off-by-one error that messes up the display of loop codes in the ".wheretrace" debugging output for queries with more than 62 candidate loops when SQLITE_ENABLE_WHERETRACE is on. (check-in: [0bbdaf2801] user: drh branch: trunk, size: 187817) | |
2017-05-24
| ||
04:32 | [5b519760ff] part of check-in [19dad0a720] Fix a problem in STAT4 equality estimation for multi-column indexes introduced by check-in [3e0590dee0e68cc1599]. (check-in: [19dad0a720] user: drh branch: branch-3.8.9, size: 267202) | |
04:18 | [67f98714b0] part of check-in [cfb0d9e020] Fix a problem in STAT4 equality estimation for multi-column indexes introduced by check-in [3e0590dee0e68cc1599]. (check-in: [cfb0d9e020] user: drh branch: trunk, size: 187813) | |
2017-05-22
| ||
00:45 | [ba36d01178] part of check-in [f261678c90] When planning a query using sorting, resolve ties in the solver by selecting loop plans with the smaller unsorted cost. (check-in: [f261678c90] user: drh branch: trunk, size: 187809) | |
00:27 | [688071f74b] part of check-in [962531e7c1] When planning a query using sorting, resolve ties in the solver by selecting loop plans with the smaller unsorted cost. (check-in: [962531e7c1] user: drh branch: branch-3.8.9, size: 267198) | |
2017-05-19
| ||
20:55 | [a354396efc] part of check-in [946b87a528] Improved comments on one routine in the query planner. Improved diagnostic output for ".wheretrace". No production code changes. (check-in: [946b87a528] user: drh branch: trunk, size: 187385) | |
2017-04-20
| ||
17:35 | [a12df4e97a] part of check-in [b1533bc455] Merge latest trunk changes into this branch. (check-in: [b1533bc455] user: dan branch: schemalint, size: 188543) | |
2017-04-18
| ||
11:20 | [c6352f15be] part of check-in [41c27bc0ff] Improved optimizations of views as the right operand of a LEFT JOIN. (check-in: [41c27bc0ff] user: drh branch: trunk, size: 187317) | |
2017-04-15
| ||
15:47 | [d22a2ae7f8] part of check-in [2d0c458e01] Merge latest trunk changes into this branch. (check-in: [2d0c458e01] user: dan branch: schemalint, size: 188459) | |
14:30 | [4b0d7b6696] part of check-in [d238694ca4] Add header comment for sqlite3_vtab_collation(). (check-in: [d238694ca4] user: dan branch: schemalint, size: 187252) | |
14:16 | [7b4d39ffdb] part of check-in [0cd75a872c] Fix memory leaks in the code on this branch. Make use of the sqlite3_index_constraint.usage field. Do not try to handle ORDER BY terms with explicit COLLATE clauses - they don't get passed to the vtab layer anyway. (check-in: [0cd75a872c] user: dan branch: schemalint, size: 186798) | |
2017-04-14
| ||
22:41 | [10ae856aa4] part of check-in [e50fd48969] Fix to the decision logic for when to use the skip-ahead-distinct optimization. (check-in: [e50fd48969] user: drh branch: skip-ahead-distinct, size: 187233) | |
19:41 | [64f2c18c72] part of check-in [3bb6585004] Modify the code in ext/expert/ to use the vtab interface instead of sqlite3_whereinfo_hook(). Remove sqlite3_whereinfo_hook(). (check-in: [3bb6585004] user: dan branch: schemalint, size: 187129) | |
19:03 | [e02cbd8a83] part of check-in [3a5860d86f] Add the TK_IF_NULL_ROW opcode to deal with non-NULL result columns in the result set of a view or subquery on the RHS of a LEFT JOIN that gets flattened. (check-in: [3a5860d86f] user: drh branch: left-join-view, size: 186110) | |
00:45 | [98388bf42c] part of check-in [1aa0ea8db7] Fix a couple of unreachable branches. (check-in: [1aa0ea8db7] user: drh branch: skip-ahead-distinct, size: 187221) | |
2017-04-13
| ||
21:29 | [911bf344a4] part of check-in [ce1e2b8877] Fix the skip-ahead-distinct optimization so that it works with indexes that have repeated columns with different collating sequences. (check-in: [ce1e2b8877] user: drh branch: skip-ahead-distinct, size: 187305) | |
19:48 | [2b88a9abe2] part of check-in [57c5173b63] Simplification of the skip-ahead-distinct logic. There is still an issue with handling COLLATE. (check-in: [57c5173b63] user: drh branch: skip-ahead-distinct, size: 188553) | |
18:33 | [b08b998bea] part of check-in [70ac9ea1a6] New test cases and minor fixes for the optimization on this branch. (check-in: [70ac9ea1a6] user: dan branch: skip-ahead-distinct, size: 188621) | |
13:01 | [56111492a2] part of check-in [0cf16decd5] Only use the skip-ahead-distinct optimization if the index has been analyzed and we know that a skip-head is likely to skip over at least 11 rows. The magic number 11 was determined by experimentation. (check-in: [0cf16decd5] user: drh branch: skip-ahead-distinct, size: 188117) | |
01:19 | [33fd1fcda8] part of check-in [132339a1fb] Forward port the skip-ahead-distinct branch which was abandoned for some reason that I do not recall. This port should have been achived by a merge of trunk into the previous head of skip-ahead-distinct, but that did not work. So I had to manually "rebase" the changes. (check-in: [132339a1fb] user: drh branch: skip-ahead-distinct, size: 187873) | |
2017-04-11
| ||
19:00 | [f5acfb6fba] part of check-in [0f66a09393] Update this branch with latest trunk changes. (check-in: [0f66a09393] user: dan branch: schemalint, size: 191665) | |
2017-04-08
| ||
19:00 | [613b1cac78] part of check-in [e051e8f21b] Merge latest trunk with this branch. (check-in: [e051e8f21b] user: dan branch: schemalint, size: 191638) | |
2017-04-07
| ||
19:41 | [1d14e18f32] part of check-in [a52ef2ad7c] Proof of concept for the ability to use the expression columns in an index on expressions in place of equivalent expressions in the result set or in the WHERE clause. This check-in compiles but is mostly untested. (check-in: [a52ef2ad7c] user: drh branch: covering-index-on-expr, size: 186026) | |
2017-04-05
| ||
12:39 | [49b48b7201] part of check-in [ad90e8bb5e] Split off sqlite3DbFreeNN() from sqlite3DbFree() and use it in cases where we know that the argument to be freed is never NULL. (check-in: [ad90e8bb5e] user: drh branch: trunk, size: 185999) | |
2017-04-04
| ||
17:50 | [be35244155] part of check-in [5cd070000d] Add some support for OR terms to sqlite3_whereinfo_hook(). (check-in: [5cd070000d] user: dan branch: schemalint, size: 191544) | |
04:23 | [cbd1e8562f] part of check-in [a54aef35da] Add the sqlite3_whereinfo_hook() API - an experimental API replacing the DBCONFIG_WHEREINFO hack on this branch. (check-in: [a54aef35da] user: dan branch: schemalint, size: 188691) | |
2017-04-03
| ||
14:07 | [aed99e5115] part of check-in [5c11f4303f] Avoid an unnecessary call to sqlite3WhereGetMask() inside of whereShortCut(). (check-in: [5c11f4303f] user: drh branch: trunk, size: 185983) | |
2017-03-31
| ||
11:20 | [30c790ab98] part of check-in [cb721d0b36] Merge latest trunk into this branch. (check-in: [cb721d0b36] user: dan branch: schemalint, size: 189272) | |
2017-03-11
| ||
13:02 | [e815093e5e] part of check-in [3299a26160] Make sure the translateColumnToCopy() routine in the query planner does not try to access an array that failed to be fully allocated due to a prior OOM. This fixes an issue discovered by OSSFuzz. (check-in: [3299a26160] user: drh branch: trunk, size: 185905) | |
2017-02-17
| ||
21:23 | [a7a99b84a9] part of check-in [38298ef923] Increase the estimated cost of sorting when sorting wide results sets, to account for the extra storage space and I/O required for the external sort. (check-in: [38298ef923] user: drh branch: apple-increased-sorting-cost, size: 186244) | |
15:26 | [1a3a8adb71] part of check-in [fb2b8ae831] Set the TF_StatsUsed flag on tables when the query planner outcome is affected by the sqlite_stat1 data. Also, change the column names of the "PRAGMA stats" command so that they are not keywords. (check-in: [fb2b8ae831] user: drh branch: auto-analyze, size: 185758) | |
2017-02-16
| ||
21:29 | [69eb9080ca] part of check-in [aa0703e5ce] Increase the estimated cost of sorting when sorting wide results sets, to account for the extra storage space and I/O required for the external sort. (check-in: [aa0703e5ce] user: drh branch: increased-sorting-cost, size: 185546) | |
20:52 | [01baf58b72] part of check-in [9fc5cd505f] Change the name of WhereInfo.pDistinctSet to pResultSet, since it is now used for more than just DISTINCT processing. (check-in: [9fc5cd505f] user: drh branch: trunk, size: 185226) | |
2017-02-11
| ||
14:59 | [6397fab50f] part of check-in [e464b919f7] Fix indexes on expressions so that they can be actually used with a COLLATE clause. (check-in: [e464b919f7] user: drh branch: trunk, size: 185252) | |
13:51 | [b0d81c6f24] part of check-in [9689d04b82] Ensure that indexed expressions with collating sequences are handled correctly. Proposed fix for ticket [eb703ba7b50c1a5]. (check-in: [9689d04b82] user: drh branch: trunk, size: 185208) | |
2017-01-10
| ||
20:04 | [bc71775e23] part of check-in [46db23ccd1] Changes to allow some multi-row UPDATE statements to avoid the two-pass approach. (check-in: [46db23ccd1] user: dan branch: onepass-update, size: 185166) | |
2016-11-22
| ||
01:26 | [6bbf9284f4] part of check-in [32be7aae92] Remove unnecessary OP_Close opcodes for a size reduction and performance increase. (check-in: [32be7aae92] user: drh branch: trunk, size: 185131) | |
2016-10-26
| ||
18:41 | [952f76e7a0] part of check-in [c23f5ef337] Small size reduction and performance enhancement in whereScanInit(). (check-in: [c23f5ef337] user: drh branch: trunk, size: 185918) | |
17:57 | [694dd84a70] part of check-in [d861ee17eb] Small size reduction and performance improvement in whereScanNext(). (check-in: [d861ee17eb] user: drh branch: trunk, size: 185970) | |
15:46 | [125af07472] part of check-in [e7b9bc678e] If all branches of an OR optimize scan that is the rhs of a LEFT JOIN use the same index, set the index cursor to return NULL values if there are no matches for a row on the lhs. (check-in: [e7b9bc678e] user: dan branch: leftjoin-or-fix, size: 185872) | |
2016-10-12
| ||
18:55 | [5f846d94bb] part of check-in [443913d582] Avoid reading the -1-th element of an array in the query planner. Fix to a bug introduced by check-in [8e2b25f9b8a7] from earlier today. Curiously, the problem only appeared on 32-bit systems. (check-in: [443913d582] user: drh branch: trunk, size: 185835) | |
15:15 | [7e454887a7] part of check-in [61f0526978] New testcase() macros to ensure coverage of the ORDER BY LIMIT optimization code in where.c. (check-in: [61f0526978] user: drh branch: trunk, size: 185789) | |
14:48 | [1398bc4921] part of check-in [8e2b25f9b8] Fix a problem affecting queries that match the pattern (... WHERE ipk IN (....) ORDER BY ? LIMIT ?). Fix for [96c1454c]. (check-in: [8e2b25f9b8] user: dan branch: trunk, size: 185697) | |
2016-10-10
| ||
14:34 | [43b53ef361] part of check-in [aebe429e52] When handling ORDER BY expressions, do not assume all values of an indexed expressions are distinct. Fix for [4766f444]. (check-in: [aebe429e52] user: dan branch: trunk, size: 185576) | |
2016-10-08
| ||
11:55 | [a2269d2df1] part of check-in [cbed3d75cf] Add missing "static" to internal function whereRangeVectorLen(). (check-in: [cbed3d75cf] user: dan branch: trunk, size: 185568) | |
2016-10-03
| ||
14:44 | [c264ec85d9] part of check-in [5bb7cde073] Avoid unnecessary memset() calls in the query optimizer. (check-in: [5bb7cde073] user: drh branch: trunk, size: 185561) | |
2016-09-23
| ||
18:06 | [8cb63bd44e] part of check-in [0c3cafb7eb] Fix the ORDER BY LIMIT optimization backport so that it works when the ORDER BY uses the DESC direction. (check-in: [0c3cafb7eb] user: drh branch: branch-3.8.9, size: 266774) | |
2016-09-22
| ||
18:53 | [5f91be9fe1] part of check-in [c3774c6a5f] Remove the internal sqlite3CodeOnce() interface, replacing it with a direct call to sqlite3VdbeAddOp0(v,OP_Once). Slightly smaller and faster. (check-in: [c3774c6a5f] user: drh branch: trunk, size: 185391) | |
2016-09-19
| ||
11:00 | [e4140408b8] part of check-in [2401ea5acf] Fix a segfault introduced by the row-value enhancement that comes up on a skip-scan where the first term of the index is unconstrained and the second term is of the form "columm IN (SELECT...)". (check-in: [2401ea5acf] user: drh branch: trunk, size: 185385) | |
2016-09-16
| ||
14:50 | [d0ca1b5e1c] part of check-in [e7653decdc] Add WHERETRACE macros showing every entry and exit from whereLoopAddBtreeIndex(). (check-in: [e7653decdc] user: drh branch: trunk, size: 185366) | |
2016-09-14
| ||
01:43 | [3028fd1c63] part of check-in [db3614825f] Backport the ORDER BY LIMIT optimization to version 3.8.9. (check-in: [db3614825f] user: drh branch: branch-3.8.9, size: 266810) | |
2016-09-07
| ||
13:12 | [edbd73a87b] part of check-in [193f036c87] Merge fixes from trunk. (check-in: [193f036c87] user: drh branch: rowvalue, size: 185138) | |
01:51 | [4bbc3f1dcd] part of check-in [820644b886] The ORDER BY LIMIT optimization is not valid unless the inner-most IN operator loop is actually used by the query plan. Fix for ticket [0c4df46116e90f92]. (check-in: [820644b886] user: drh branch: trunk, size: 179708) | |
2016-08-26
| ||
18:17 | [48d705e519] part of check-in [87d40195ae] Fix a post-OOM crash in updateRangeAffinityStr(). Add several ALWAYS() macros on unreachable branches. (check-in: [87d40195ae] user: drh branch: rowvalue, size: 184765) | |
13:19 | [bad93f9bc5] part of check-in [b0cc6be4eb] Allow ROWID values in indexed vector comparisons. (check-in: [b0cc6be4eb] user: drh branch: rowvalue, size: 184724) | |
03:42 | [2f60a50636] part of check-in [397617009e] Comment improvements. Put ALWAYS and NEVER macros on three unreachable branches. (check-in: [397617009e] user: drh branch: rowvalue, size: 184718) | |
2016-08-19
| ||
18:40 | [c7cdfd54f3] part of check-in [931c95358d] Show the WhereTerm.iField value on debugging output, when it is non-zero. (check-in: [931c95358d] user: drh branch: rowvalue, size: 184174) | |
2016-08-11
| ||
12:01 | [5bee250c82] part of check-in [8278be06fa] Fix some problems with handling "no such collation sequence" errors. (check-in: [8278be06fa] user: dan branch: rowvalue, size: 184045) | |
2016-08-08
| ||
20:15 | [457a2c8cd9] part of check-in [156a41f30a] Fix some cases involving row values and virtual tables. (check-in: [156a41f30a] user: dan branch: rowvalue, size: 184033) | |
16:52 | [f60310d9fa] part of check-in [0e927a7e02] Merge trunk changes with this branch. (check-in: [0e927a7e02] user: dan branch: rowvalue, size: 183461) | |
2016-08-04
| ||
09:09 | [5c9df42d50] part of check-in [13e3bd3de6] Make sure the ORDER BY LIMIT optimization is not applied if the inner-most loop can only have a single iteration and is hence not really a loop. (check-in: [13e3bd3de6] user: drh branch: trunk, size: 179335) | |
2016-08-03
| ||
18:00 | [0a0b8af392] part of check-in [3c2f908f5b] Fix a problem with estimating the number of rows visited by a query that uses a multi-column IN(SELECT...) constraint. (check-in: [3c2f908f5b] user: dan branch: rowvalue, size: 183407) | |
16:39 | [8bd5486175] part of check-in [1559f4c434] Fix another problem involving vector range constraints and mixed ASC/DESC indexes. (check-in: [1559f4c434] user: dan branch: rowvalue, size: 182904) | |
16:14 | [21095414c4] part of check-in [18af74abc8] Fix stat4-based cost estimates for vector range constraints. (check-in: [18af74abc8] user: dan branch: rowvalue, size: 182898) | |
2016-08-02
| ||
17:07 | [25eae2e051] part of check-in [e2ad30c8b5] Fix a problem with vector range constraints and mixed ASC/DESC indexes. (check-in: [e2ad30c8b5] user: dan branch: rowvalue, size: 182884) | |
16:24 | [9dcbc1be0e] part of check-in [d468101b42] Merge latest trunk changes into this branch. (check-in: [d468101b42] user: dan branch: rowvalue, size: 182721) | |
2016-08-01
| ||
20:14 | [a1c2fde60e] part of check-in [3ef75d45eb] Fix a problem with vector range constraints involving the rowid column. And other issues. (check-in: [3ef75d45eb] user: dan branch: rowvalue, size: 182718) | |
2016-07-30
| ||
18:54 | [bb1444f6ae] part of check-in [390a38a142] Fix harmless compiler warning seen with MSVC. (check-in: [390a38a142] user: mistachkin branch: trunk, size: 179281) | |
17:59 | [61db3a409b] part of check-in [63ae02d084] Merge latest trunk with this branch. (check-in: [63ae02d084] user: dan branch: rowvalue, size: 182364) | |
2016-07-29
| ||
01:32 | [fcaa38d19c] part of check-in [c7d51934a4] Undo some unhelpful changes to skip-scan scoring that were added by the check-in [9e2b2681] that improved scoring of index scan. (check-in: [c7d51934a4] user: drh branch: trunk, size: 179278) | |
2016-07-28
| ||
13:59 | [df58d6ad78] part of check-in [9685880f7b] Merge latest trunk changes into this branch. (check-in: [9685880f7b] user: dan branch: rowvalue, size: 182366) | |
2016-07-27
| ||
19:33 | [0b370db8ce] part of check-in [719a3b2035] Fix some problems with multi-column IN(SELECT...) processing. (check-in: [719a3b2035] user: dan branch: rowvalue, size: 181430) | |
19:30 | [8ccc01f922] part of check-in [9e2b268114] Enhance the query planner cost estimation for index scans to take into account WHERE clause terms that can be computed using only the index and that do not require looking up rows in the original table. This fixes an obscure performance regression that arose when the ORDER BY LIMIT optimization was added by check-in [bf46179d44843]. (check-in: [9e2b268114] user: drh branch: trunk, size: 179280) | |
19:20 | [66a290310e] part of check-in [50f8ea37fb] Add test cases and fix a comment. (check-in: [50f8ea37fb] user: drh branch: improved-index-scan, size: 179276) | |
18:27 | [7e4d676b5a] part of check-in [a59b5622f7] When estimating the cost of an index scan, factor in the cost savings of being able to use the index to evaluate some WHERE clause terms without having to do a table lookup. (check-in: [a59b5622f7] user: drh branch: improved-index-scan, size: 179274) | |
16:03 | [9981707ac0] part of check-in [4d59df02d3] Initialize a variable in where.c to avoid a valgrind warning. (check-in: [4d59df02d3] user: dan branch: trunk, size: 178344) | |
2016-07-26
| ||
18:06 | [e7054b2c1f] part of check-in [061b800603] Fix where.c handling of "IN (SELECT ...)" expressions when the SELECT returns more than one result column. Also error handling for other row value constructor cases. (check-in: [061b800603] user: dan branch: rowvalue, size: 180619) | |
2016-07-09
| ||
20:23 | [898a45969b] part of check-in [b2204215b2] Add some support for using row value constructors in certain parts of SQL expressions. There are many bugs on this branch. (check-in: [b2204215b2] user: dan branch: rowvalue, size: 180561) | |
2016-06-26
| ||
04:06 | [48eed8ebe3] part of check-in [f810508591] Prevent the WhereLoop.rSetup cost estimate from going negative on complex queries. (check-in: [f810508591] user: drh branch: trunk, size: 178340) | |
2016-06-23
| ||
12:35 | [0ce4793497] part of check-in [9111314248] Fix the build for -DSQLITE_OMIT_VIRTUALTABLE (check-in: [9111314248] user: drh branch: trunk, size: 178293) | |
2016-06-08
| ||
18:07 | [74f0798525] part of check-in [fe1874321b] Prefer to use partial indexes for full table scans when that is possible. (check-in: [fe1874321b] user: drh branch: trunk, size: 178217) | |
2016-05-27
| ||
12:30 | [b9f5b0ddb1] part of check-in [71087c12bc] Improvements to WHERE-clause debug tracing. Show TK_MATCH expressions and show more details on WhereTerm traces. (check-in: [71087c12bc] user: drh branch: trunk, size: 178182) | |
2016-05-19
| ||
22:40 | [0e54a03d11] part of check-in [990fe50c91] Appears to work now. Needs test cases, more comments, and code optimization. (check-in: [990fe50c91] user: drh branch: orderby-limit, size: 177646) | |
22:13 | [a7454e62ca] part of check-in [852d1eda6e] In a query with both ORDER BY and LIMIT, if the inner loop satisfies the ORDER BY then try to cut short each invocation of the inner loop once the LIMIT has been satisfied. This check-in is a partial implementation only. (check-in: [852d1eda6e] user: drh branch: orderby-limit, size: 176988) | |
18:56 | [72fd2e1258] part of check-in [d01305841d] Clean up the WHERE_* macros used for the wctrlFlags parameter on the sqlite3WhereBegin() interface, freeing up some bits to be used for other things. (check-in: [d01305841d] user: drh branch: trunk, size: 176552) | |
2016-05-09
| ||
19:58 | [ad8ad50ccf] part of check-in [da94a6e0eb] Omit the unnecessary WHERE_REOPEN_IDX flag in the WHERE interface. (check-in: [da94a6e0eb] user: drh branch: dev, size: 176573) | |
2016-05-06
| ||
18:47 | [fd321cc2c5] part of check-in [ab7ab415d1] Corrections to comments on the whereScanInit() interface. (check-in: [ab7ab415d1] user: drh branch: trunk, size: 176609) | |
11:31 | [a7ce00ffd7] part of check-in [50312273ff] Do not scan indexes that have the integer primary key as their left-most column. This fixes the crash of ticket [16c9801ceba] but it seems like the wrong fix. More investigation needed. (check-in: [50312273ff] user: drh branch: ticket-16c9801ce, size: 176425) | |
2016-05-02
| ||
10:25 | [019e5b10de] part of check-in [54c63b3292] Improvements to the way the LIKE optimization is implemented, resulting in slightly smaller and faster code that is easier to test. (check-in: [54c63b3292] user: drh branch: trunk, size: 176418) | |
2016-04-15
| ||
22:03 | [de4e766584] part of check-in [87703b7661] Add the SQLITE_SkipAhead optimization setting (check-in: [87703b7661] user: drh branch: skip-ahead-distinct, size: 178537) | |
16:27 | [64689b9787] part of check-in [6fac0b9212] Skip-ahead is now just an optimization. If it gets confused, it falls back to an incremental scan with redundancy elimination. (check-in: [6fac0b9212] user: drh branch: skip-ahead-distinct, size: 178485) | |
15:54 | [3521afa6a8] part of check-in [45a70b2bb8] Fixes to the skip-ahead distinct logic. More issues remain. (check-in: [45a70b2bb8] user: drh branch: skip-ahead-distinct, size: 178419) | |
13:24 | [ded0cf9084] part of check-in [2afcb2c752] Fixed crash bugs. Still sometimes gets the wrong answers. (check-in: [2afcb2c752] user: drh branch: skip-ahead-distinct, size: 177652) | |
01:55 | [19ad1e88da] part of check-in [9e14aa14cf] Progress toward getting DISTINCT to use a seek to advance to the next distinct row, when driven by an appropriate index. (check-in: [9e14aa14cf] user: drh branch: skip-ahead-distinct, size: 177559) | |
2016-04-14
| ||
13:35 | [bae50f2f18] part of check-in [5317961411] Rename WhereInfo.pResultSet to pDistinctSet to more accurately reflect what it represents. (check-in: [5317961411] user: drh branch: trunk, size: 176526) | |
2016-04-09
| ||
14:36 | [24ab561466] part of check-in [3686ed7413] Limit the number of digits shown in the "prereq" mask for ".wheretrace" debugging output. (check-in: [3686ed7413] user: drh branch: trunk, size: 176478) | |
2016-03-31
| ||
21:16 | [f06ac362cf] part of check-in [f1e6bb952e] Enhance the query planner so that IS and IS NULL operators are able to drive an index on a LEFT OUTER JOIN. (check-in: [f1e6bb952e] user: drh branch: branch-3.9, size: 171637) | |
20:40 | [99cc6270fc] part of check-in [c648539b52] Enhance the query planner so that IS and IS NULL operators are able to drive an index on a LEFT OUTER JOIN. (check-in: [c648539b52] user: drh branch: trunk, size: 176426) | |
2016-03-16
| ||
18:26 | [fe7925faaf] part of check-in [96ea990942] Fix the query planner so that it is able to use the integer primary key from an index as part of a multi-column constraint. (check-in: [96ea990942] user: drh branch: trunk, size: 176154) | |
2016-03-15
| ||
09:42 | [b8566be7e2] part of check-in [249cd361b8] Update this branch with latest trunk changes. (check-in: [249cd361b8] user: dan branch: schemalint, size: 179464) | |
2016-03-09
| ||
12:35 | [5533002ddf] part of check-in [a13c59d08b] In the query planner, make sure OOM errors are reported up into whereLoopAddVirtual() so that it shuts down appropriately. (check-in: [a13c59d08b] user: drh branch: trunk, size: 176097) | |
08:08 | [2cbcacd9ae] part of check-in [59caca4387] Merge latest trunk changes with this branch. (check-in: [59caca4387] user: dan branch: schemalint, size: 179458) | |
08:07 | [59f267a53d] part of check-in [fc18cc9293] Fix a problem in the schemalint code that comes up when a sub-query uses one or more of the same tables as its parent. (check-in: [fc18cc9293] user: dan branch: schemalint, size: 175189) | |
2016-03-08
| ||
23:44 | [f2859a4f9e] part of check-in [73b97b9ec3] Change an unreachable branch in the virtual table query planner into an assert(). (check-in: [73b97b9ec3] user: drh branch: trunk, size: 176091) | |
23:18 | [a3f6db088f] part of check-in [4c89c2534a] Improved comments on virtual table query planning. Added many new WHERETRACE() macros. (check-in: [4c89c2534a] user: drh branch: trunk, size: 176149) | |
02:59 | [dff52f7f08] part of check-in [82ca2131b6] Simplified error detection in the xBestIndex processing. (check-in: [82ca2131b6] user: drh branch: trunk, size: 175517) | |
01:32 | [e4d2d0ea84] part of check-in [91bd619d27] Add the ALLBITS macro as a shorthand for "(Bitmask)(-1)". (check-in: [91bd619d27] user: drh branch: trunk, size: 175346) | |
01:11 | [3787158e3b] part of check-in [721ae51e44] Add a NEVER() to the code generator. Change the parameter name "mExtra" to "mPrereq" in the query planner, to more closely reflect its meaning. (check-in: [721ae51e44] user: drh branch: trunk, size: 175366) | |
2016-03-05
| ||
21:32 | [ccc62c39af] part of check-in [d8d89d69a4] Fix a problem in the previous commit affecting queries with three or more tables joined together to the right of a LEFT or CROSS JOIN operator. (check-in: [d8d89d69a4] user: dan branch: trunk, size: 175335) | |
17:29 | [bada38bf45] part of check-in [ffc65968ed] Change the way SQLite invokes the xBestIndex method of virtual tables so that N-way joins involving virtual tables work as expected. (check-in: [ffc65968ed] user: dan branch: xbestindex-fix, size: 175328) | |
2016-03-04
| ||
18:45 | [2b61974a84] part of check-in [5294c977d9] Merge changes from trunk. (check-in: [5294c977d9] user: drh branch: analyze-worst-case, size: 172210) | |
2016-03-02
| ||
03:28 | [56948ada5a] part of check-in [1622623cbb] Allow the left-hand side of IN operators on virtual tables to have the aConstraintUsage[].omit flag clear. (check-in: [1622623cbb] user: drh branch: vtab-IN-opt, size: 172185) | |
2016-03-01
| ||
22:41 | [6282e53fcc] part of check-in [13a37fd487] Improved debugging output with wheretrace. Fix some typos in test script comments. (check-in: [13a37fd487] user: drh branch: trunk, size: 172525) | |
2016-02-29
| ||
21:27 | [2786a5f385] part of check-in [6326ba5891] The ANALYZE command automatically appends "noskipscan" to sqlite_stat1 entries that have large worst-case repeat estimates but small average repeat estimates. (check-in: [6326ba5891] user: drh branch: analyze-worst-case, size: 172507) | |
2016-02-25
| ||
23:21 | [3205159718] part of check-in [2459d32388] Fix an incorrect cost computation for sorting (introduced just a few check-ins ago). Should be NlogN, not NloglogN. (check-in: [2459d32388] user: drh branch: trunk, size: 172482) | |
18:22 | [b21a2b3cee] part of check-in [aab53a2189] Improvement on the previous check-in: disallow automatic indexes for any loop that is expected to run less than twice. (check-in: [aab53a2189] user: drh branch: planner-improvements, size: 172505) | |
18:03 | [07bf033059] part of check-in [5957e79341] Do not use an automatic index on an outer loop that only runs once. (check-in: [5957e79341] user: drh branch: planner-improvements, size: 172507) | |
16:04 | [ba8f2cd97e] part of check-in [d491745cab] Take the LIMIT clause into account when estimating the cost of sorting. (check-in: [d491745cab] user: drh branch: planner-improvements, size: 172246) | |
2016-02-22
| ||
19:51 | [0ecce6da62] part of check-in [0b73406595] Add test script shell6.test, containing tests for schemalint. (check-in: [0b73406595] user: dan branch: schemalint, size: 175232) | |
2016-02-13
| ||
23:43 | [5b67fb8035] part of check-in [6a9c4a3ebf] Enhance ability to debug out-of-memory errors. (check-in: [6a9c4a3ebf] user: mistachkin branch: noMemBkpt, size: 171575) | |
2016-02-12
| ||
00:13 | [984084584c] part of check-in [b5d7719916] Remove an unused parameter from whereSortingCost(). (check-in: [b5d7719916] user: drh branch: trunk, size: 171540) | |
2016-02-11
| ||
21:55 | [f9683f8b88] part of check-in [52571991fc] Remove the unexplained extra 3.0 cost factor for the B-tree sorting that is done to implement DISTINCT in the absence of an index to help. (check-in: [52571991fc] user: drh branch: trunk, size: 171569) | |
21:01 | [89d5845353] part of check-in [ed49f297bc] Experimental integration of schemalint functionality with the shell tool. Does not work yet. (check-in: [ed49f297bc] user: dan branch: schemalint, size: 175119) | |
2016-02-09
| ||
15:10 | [438b89caa0] part of check-in [1a4182eedd] Merge latest trunk changes with this branch. (check-in: [1a4182eedd] user: dan branch: schemalint, size: 176903) | |
2016-02-05
| ||
13:38 | [d89fd5cff4] part of check-in [0a802e96ab] Add the slightly faster sqlite3DbMallocRawNN(db,n) routine for the majority cases where db is guaranteed to be not NULL. (check-in: [0a802e96ab] user: drh branch: oom-handling, size: 171822) | |
01:55 | [8bdb43e09d] part of check-in [c3ef03478a] Improvements to the way that OOM errors are processed. (check-in: [c3ef03478a] user: drh branch: oom-handling, size: 171816) | |
2016-02-04
| ||
02:34 | [623e45511a] part of check-in [1c8d300189] Add and use the sqlite3VdbeZeroRegister() interface for coding the common operation of writing zero into a register. (check-in: [1c8d300189] user: drh branch: zero-register, size: 171808) | |
2016-01-26
| ||
15:23 | [3e70fe9012] part of check-in [12ef3a8f3d] Change the automatic index mechanism so that it avoids creating transient indexes on columns that are known to have low cardinality. (check-in: [12ef3a8f3d] user: drh branch: autoindex-planning, size: 172010) | |
2016-01-22
| ||
14:46 | [4610f0b9b9] part of check-in [9341491c3a] Merge latest trunk changes into this branch. (check-in: [9341491c3a] user: dan branch: schemalint, size: 176898) | |
14:44 | [1e987b91aa] part of check-in [44edc1aa3b] Fix handling of transitive constraints in schemalint.tcl. (check-in: [44edc1aa3b] user: dan branch: schemalint, size: 176819) | |
2016-01-21
| ||
15:55 | [af9bf5dcec] part of check-in [a3cec529f0] Improved comments on the FORDELETE hint. No logic changes. (check-in: [a3cec529f0] user: drh branch: trunk, size: 171817) | |
2016-01-11
| ||
22:58 | [bb69654f84] part of check-in [28bd8d5fc5] Performance optimization in the sqlite3VdbeChangeP4() routine of the code generator. (check-in: [28bd8d5fc5] user: drh branch: trunk, size: 171874) | |
2015-12-30
| ||
16:51 | [c6d3d2f6af] part of check-in [2081d75767] Changes to the way that the default BINARY collating sequence is recorded result in a slightly smaller and slightly faster executable. More work could be done to make this cleaner. (check-in: [2081d75767] user: drh branch: trunk, size: 171928) | |
2015-12-12
| ||
17:31 | [b7462d37a9] part of check-in [21526012c2] Add further tests for the changes on this branch. Also fix a memory-leak that could follow a malloc failure. (check-in: [21526012c2] user: dan branch: onepass-delete-or, size: 174382) | |
2015-12-09
| ||
10:06 | [b3b70c8e0f] part of check-in [10ca7357b2] Add simple tests and bugfixes for DELETE statements that qualify for the OR-optimization. (check-in: [10ca7357b2] user: dan branch: onepass-delete-or, size: 173735) | |
2015-12-08
| ||
19:50 | [93f5c7ec7f] part of check-in [d52376df53] Experimental optimization for DELETE statements with WHERE clauses that qualify for the OR-optimization. (check-in: [d52376df53] user: dan branch: onepass-delete-or, size: 173763) | |
2015-12-01
| ||
21:23 | [b18edbb9e5] part of check-in [9e1d6d4c39] Add the SQLITE_LIKE_DOESNT_MATCH_BLOBS compile-time option. (check-in: [9e1d6d4c39] user: drh branch: trunk, size: 171896) | |
2015-11-30
| ||
18:17 | [be09f4a051] part of check-in [451e0fafbe] Fix the schemalint.tcl script to handle identifiers that require quoting. (check-in: [451e0fafbe] user: dan branch: schemalint, size: 176791) | |
2015-11-26
| ||
19:33 | [9c04982ba9] part of check-in [116b206494] Add the "colUsed" field to the sqlite3_index_info structure passed to virtual table xBestIndex methods. To indicate the subset of the virtual table columns that may be required by the current scan. (check-in: [116b206494] user: dan branch: vtab-colused, size: 171850) | |
2015-11-23
| ||
21:09 | [6687fb2675] part of check-in [277a5b4027] Add experimental support for LIKE, GLOB and REGEXP to the virtual table interface. (check-in: [277a5b4027] user: dan branch: vtab-like-operator, size: 171796) | |
2015-11-20
| ||
20:55 | [5804902239] part of check-in [93bdf70e85] Add support for ORDER BY clauses to schemalint.tcl. (check-in: [93bdf70e85] user: dan branch: schemalint, size: 176691) | |
2015-11-11
| ||
18:08 | [6176426332] part of check-in [c6fa01c28e] Add a hack to debug out a description of the WHERE clause of a SELECT (or other) statement. Use this in script tool/schemalint.tcl to automatically recommend indexes that might speed up specific queries. (check-in: [c6fa01c28e] user: dan branch: schemalint, size: 175780) | |
2015-10-26
| ||
20:11 | [6aceb72cc5] part of check-in [20da0849ce] Merge the BTREE_FORDELETE enhancement with this branch. (check-in: [20da0849ce] user: dan branch: cursor-hints, size: 171738) | |
18:51 | [51cca24950] part of check-in [53d5a4add6] Merge in all trunk changes prior to the BTREE_FORDELETE enhancement. (check-in: [53d5a4add6] user: drh branch: cursor-hints, size: 171482) | |
17:50 | [0a3badc48b] part of check-in [871b1c78bc] Provide the BTREE_FORDELETE flag to sqlite3BtreeCursor() if the cursor will be used only for deletions and seeking. (check-in: [871b1c78bc] user: drh branch: trunk, size: 171571) | |
14:54 | [7b9e8d72e3] part of check-in [138783b553] Fix a C99-ism and a harmless compiler warning. (check-in: [138783b553] user: drh branch: trunk, size: 171365) | |
2015-10-24
| ||
20:31 | [e3724b7b31] part of check-in [bfea226d0d] When creating an automatic-index on a sub-query, add a unique integer to the end of each index key to ensure the entire key is unique. Fix for [8a2adec1]. (check-in: [bfea226d0d] user: dan branch: trunk, size: 171365) | |
2015-10-22
| ||
20:54 | [0bb01a0545] part of check-in [cdc92919e6] Modifications to pass a flag to internal routine sqlite3BtreeCursor() when a cursor that is used solely for deleting b-tree entries, or for obtaining the components of keys to delete from other b-trees, is opened. (check-in: [cdc92919e6] user: dan branch: btree-fordelete-flag, size: 170749) | |
2015-10-14
| ||
20:09 | [05a178b78c] part of check-in [2944414934] Merge in all the 3.9.0 updates from trunk. (check-in: [2944414934] user: drh branch: cursor-hints, size: 170660) | |
2015-09-29
| ||
17:20 | [4c4646675e] part of check-in [7d272aa62c] Use symbolic names XN_ROWID and XN_EXPR in place of the (-1) and (-2) magic numbers in Index.aiColumn[]. Add asserts to help verify that Index.aiColumn[] is always used correctly. Fix one place in FK processing where Index.aiColumn[] was not being used correctly. (check-in: [7d272aa62c] user: drh branch: trunk, size: 170543) | |
11:59 | [b7f928b6b8] part of check-in [b519c0d67a] Merge latest trunk change into this branch. (check-in: [b519c0d67a] user: dan branch: vtab-onepass, size: 170443) | |
11:57 | [6491ebe811] part of check-in [f61203bc0f] Change the name of the new sqlite3_index_info.flags field to "idxFlags". Add documentation for the same to sqlite.h.in. (check-in: [f61203bc0f] user: dan branch: vtab-onepass, size: 170146) | |
2015-09-28
| ||
23:45 | [e779853aa4] part of check-in [70ec88b299] Avoid unnecessary cursors and seeking when running a DELETE against a WITHOUT ROWID table. (check-in: [70ec88b299] user: drh branch: delete-without-rowid-opt, size: 170509) | |
17:05 | [25d7527226] part of check-in [c5566bb39c] Extra information provided by .wheretrace on input flags to the query planner and on the result of sqlite3WhereOkOnePass(). (check-in: [c5566bb39c] user: drh branch: trunk, size: 170050) | |
15:20 | [d07fb77010] part of check-in [e73f919fae] Changes to allow DELETE operations on virtual tables to use the onepass strategy under some circumstances. (check-in: [e73f919fae] user: dan branch: vtab-onepass, size: 170137) | |
14:40 | [f2c4905e47] part of check-in [9d057f5221] Fix a database corruption bug caused by the ONEPASS optimization added in check-in [8b93cc5937000535]. Bug detected (prior to release) by sqllogictest. Test cases to follow. (check-in: [9d057f5221] user: drh branch: trunk, size: 169753) | |
2015-09-25
| ||
01:09 | [a7582b752d] part of check-in [1350dd42d0] Fix a problem computing affinities for indexes during skip-scan code generation when SQLITE_ENABLE_STAT4 is on. Bug introduced by check-in [1ee089a72d789002]. (check-in: [1350dd42d0] user: drh branch: trunk, size: 169677) | |
2015-09-24
| ||
18:47 | [278073aabc] part of check-in [668fc1ebaf] Enhance the query planner so that it is able to use indexed expressions to help fulfill an ORDER BY clause. (check-in: [668fc1ebaf] user: drh branch: trunk, size: 169666) | |
17:38 | [6f7156dc72] part of check-in [1c8c5380a8] Fix over-length source code lines in where.c. No logic changes. (check-in: [1c8c5380a8] user: drh branch: trunk, size: 169220) | |
15:06 | [edcaa18b27] part of check-in [fbe637620f] Merge trunk changes into the cursor-hints branch. (check-in: [fbe637620f] user: drh branch: cursor-hints, size: 169344) | |
12:19 | [d5eed25845] part of check-in [c2fcb03299] Make sure joins work correctly when both sides of the join are connected using indexed expressions. (check-in: [c2fcb03299] user: drh branch: trunk, size: 169227) | |
11:26 | [64a80b1c0a] part of check-in [d9b716a6bd] Correctly handle the case of a WHERE-clause term with indexed expressions on both sides of the == sign. (check-in: [d9b716a6bd] user: drh branch: trunk, size: 169222) | |
2015-09-15
| ||
17:31 | [c03895cdb2] part of check-in [66fe068326] Merge enhancements from trunk. (check-in: [66fe068326] user: drh branch: cursor-hints, size: 169362) | |
2015-09-14
| ||
14:45 | [882fb44b36] part of check-in [16e56bdade] Use symbolic names ONEPASS_OFF, ONEPASS_SINGLE, and ONEPASS_MULTI for the various modes of the one-pass optimization. (check-in: [16e56bdade] user: drh branch: trunk, size: 169245) | |
2015-09-12
| ||
19:26 | [98cbedead6] part of check-in [eaeb2b80f6] Experimental change to use a single-pass approach for DELETE statements on non-virtual tables that do not fire triggers or require foriegn-key processing. (check-in: [eaeb2b80f6] user: dan branch: onepass-delete, size: 168953) | |
2015-09-09
| ||
17:23 | [1227687e78] part of check-in [280fd3a482] Fix harmless compiler warning. (check-in: [280fd3a482] user: mistachkin branch: trunk, size: 168615) | |
2015-09-05
| ||
19:21 | [ed1cd1cb04] part of check-in [24924a5819] Fix an unreachable conditional in the WHERE clause analysis logic. (check-in: [24924a5819] user: drh branch: trunk, size: 168611) | |
2015-09-03
| ||
14:39 | [6055bee2f4] part of check-in [25ee3000e9] Merge enhancements from trunk. (check-in: [25ee3000e9] user: drh branch: cursor-hints, size: 168263) | |
14:18 | [e6efbb9e5f] part of check-in [1ab10cbf27] Merge enhancements from trunk. (check-in: [1ab10cbf27] user: drh branch: index-expr, size: 168588) | |
13:46 | [f0e08e4f1f] part of check-in [847387ec8e] Add the sqlite3VdbeLoadString() and sqlite3VdbeMultiLoad() routines to help with code generation, especially on PRAGMAs. Rename sqlite3VdbeAddGoto() to just sqlite3VdbeGoto(). (check-in: [847387ec8e] user: drh branch: trunk, size: 168146) | |
2015-09-02
| ||
18:19 | [8f3a40ccf5] part of check-in [be78f413df] Add the sqlite3VdbeAddGoto(v,i) routine as a shorthand for sqlite3VdbeAddOp2(v,OP_Goto,0,i). (check-in: [be78f413df] user: drh branch: trunk, size: 168155) | |
2015-09-01
| ||
18:31 | [5efdfbfade] part of check-in [29570a6048] Merge enhancements from trunk. (check-in: [29570a6048] user: drh branch: cursor-hints, size: 168305) | |
00:42 | [567b96aa00] part of check-in [fd4da2318c] Remove unreachable branches. (check-in: [fd4da2318c] user: drh branch: index-expr, size: 168630) | |
2015-08-31
| ||
19:38 | [04e0f87e4d] part of check-in [cc60321a67] Always assume that indexed expressions can generate a NULL. Get indexed expressions working for the case of two or more expressions in the same index. (check-in: [cc60321a67] user: drh branch: index-expr, size: 168642) | |
15:58 | [385f927f06] part of check-in [f889369638] Improved analysis and usage of indexed expressions in the query planner. (check-in: [f889369638] user: drh branch: index-expr, size: 168633) | |
2015-08-27
| ||
23:42 | [acec45dc60] part of check-in [cf452028d1] Fix the OR-optimization so that it always ignores subplans that do not use an index. (check-in: [cf452028d1] user: drh branch: index-expr, size: 168951) | |
23:18 | [91e73ffc69] part of check-in [66f92a1686] Fix the OR-optimization so that it always ignores subplans that do not use an index. (check-in: [66f92a1686] user: drh branch: trunk, size: 168188) | |
20:33 | [b22b416694] part of check-in [73d361ce9e] Fix EXPLAIN QUERY PLAN output for indexed-expressions. Fix another obscure fault in the WHERE term scanner. (check-in: [73d361ce9e] user: drh branch: index-expr, size: 168902) | |
19:56 | [fcdded4bf2] part of check-in [0337501769] Fix problems in the indexed-expression handling in the optimizer. (check-in: [0337501769] user: drh branch: index-expr, size: 168925) | |
18:24 | [29851b4a1a] part of check-in [42f93f582e] Activate the ability to use expressions in indexes in a query. There are some test failures, but mostly this seems to work. (check-in: [42f93f582e] user: drh branch: index-expr, size: 168830) | |
16:07 | [7b62bfb9a6] part of check-in [c80e9e8e8c] Merge changes from trunk. (check-in: [c80e9e8e8c] user: drh branch: index-expr, size: 168566) | |
15:58 | [0709bbc331] part of check-in [5611130a59] Adjustments to the WHERE term scanning, to better handle scanning terms of an index. (check-in: [5611130a59] user: drh branch: index-expr, size: 168697) | |
2015-08-26
| ||
21:08 | [caabc9ec1e] part of check-in [cbc3c9a8bf] Reduce the size of the WhereScan object by 24 bytes while also clarifying its operation. (check-in: [cbc3c9a8bf] user: drh branch: trunk, size: 168139) | |
2015-08-25
| ||
19:42 | [fb8546b805] part of check-in [b3732a4e1b] Move sqlite3IndexColumnAffinity() inside of SQLITE_ENABLE_STAT3_OR_STAT4. (check-in: [b3732a4e1b] user: drh branch: trunk, size: 168270) | |
19:20 | [30091fb355] part of check-in [1ee089a72d] Use the sqlite3IndexColumnAffinity() routine to quickly and correctly find the affinity of an index column. (check-in: [1ee089a72d] user: drh branch: trunk, size: 167955) | |
2015-08-20
| ||
23:45 | [746317b80f] part of check-in [b9927c876c] Merge recent enhancements from trunk, including table-valued expressions. (check-in: [b9927c876c] user: drh branch: cursor-hints, size: 168112) | |
2015-08-19
| ||
17:11 | [66518a14a1] part of check-in [40e12cfe4c] A list of arguments following a table name translates into equality constraints against hidden columns in that table. (check-in: [40e12cfe4c] user: drh branch: table-valued-functions, size: 167995) | |
15:20 | [a572b23993] part of check-in [b919376147] Minor refactor of the SrcList object so that it is able to hold the argument list to a table-valued-function in the FROM clause. (check-in: [b919376147] user: drh branch: table-valued-functions, size: 167926) | |
2015-08-14
| ||
18:50 | [ef95e56b6e] part of check-in [581e3d4988] Fix the cursor hint mechanism so that it does the right thing for indexed lookups. (check-in: [581e3d4988] user: drh branch: cursor-hints, size: 167985) | |
2015-08-07
| ||
20:57 | [c745d3aa78] part of check-in [065765902d] Enhance the query planner so that it is able to use partial indexes that use AND-connected terms in the WHERE clause. (check-in: [065765902d] user: drh branch: trunk, size: 167868) | |
2015-06-12
| ||
12:54 | [909eba3b6d] part of check-in [711a176cbf] Add the OP_ColumnsUsed opcode (when compiled with SQLITE_ENABLE_COLUMN_USED_MASK) as a hint to the b-tree layer as to which columns of a btree cursor will be used. (check-in: [711a176cbf] user: drh branch: trunk, size: 167735) | |
2015-06-10
| ||
20:00 | [aa26f4b0a3] part of check-in [0e23a079bd] Merge enhancements from trunk. (check-in: [0e23a079bd] user: drh branch: view-optimization, size: 167592) | |
17:20 | [6a42bd33c1] part of check-in [a1eaf1718e] Resolve FROM-clause subqueries after query planning instead of before. Greatly reduce the estimated cost of automatic indexes for VIEWs and ephemeral tables since performance problems there cannot be mitigated via a CREATE INDEX. (check-in: [a1eaf1718e] user: drh branch: view-optimization, size: 165675) | |
2015-06-09
| ||
10:58 | [95c0fbfff7] part of check-in [a34cd71c8a] Remove some repeated lines of source code. Probably introduced by careless cut'n'pasting. (check-in: [a34cd71c8a] user: dan branch: vtab-left-join, size: 166996) | |
2015-06-08
| ||
22:59 | [fbd93e7654] part of check-in [cabf218716] Code refactoring to try to shift FROM-clause subquery manifesting until after the query planner runs. Except this does not currently work because the query planner needs an estimated of the number of rows in the manifested table. Work in progress. (check-in: [cabf218716] user: drh branch: view-optimization, size: 165589) | |
18:48 | [d98dd9461f] part of check-in [0d9edfab9f] If a query contains "FROM t1 LEFT JOIN t2, t3, t4", ensure that tables t3 and t4 are not scanned before t2. The trunk already does this. (check-in: [0d9edfab9f] user: dan branch: vtab-left-join, size: 167045) | |
18:05 | [38b2c4bea9] part of check-in [80ee56dda7] Avoid passing constraints that are unusable due to LEFT or CROSS joins to virtual table xBestIndex() methods. (check-in: [80ee56dda7] user: dan branch: vtab-left-join, size: 166968) | |
14:23 | [a328fcc334] part of check-in [46ef95c108] Split more subfunctions of where.c out into a new whereexpr.c source file, for improved maintainability. (check-in: [46ef95c108] user: drh branch: view-optimization, size: 165079) | |
2015-06-06
| ||
20:12 | [c9d804dcf0] part of check-in [faa0e420e9] Split out the bulk of the actual VDBE code generation logic from where.c into a new file, leaving behind the analysis logic. This makes the original where.c smaller and hopefully easier to edit. (check-in: [faa0e420e9] user: drh branch: view-optimization, size: 209992) | |
18:30 | [5cc416ad6d] part of check-in [4f20ac90bc] Code simplifications in select.c and where.c. (check-in: [4f20ac90bc] user: drh branch: view-optimization, size: 269275) | |
2015-06-05
| ||
15:59 | [f957a39866] part of check-in [f167bba446] Add a new opcode to the VDBE that gives the b-tree a hint about the set of columns in a table or index that are actually used by the query. (check-in: [f167bba446] user: drh branch: column-usage-hint, size: 270109) | |
2015-06-04
| ||
12:08 | [2db8137f14] part of check-in [6a9cf06337] Change the name of SrcList.a[].zIndex to the more descriptive SrcList.a[0].zIndexedBy. (check-in: [6a9cf06337] user: drh branch: trunk, size: 269370) | |
2015-06-02
| ||
15:32 | [dcdfee81d3] part of check-in [bce3f04186] Rename SQLITE_AFF_NONE to SQLITE_AFF_BLOB. (check-in: [bce3f04186] user: drh branch: blob-affinity-rename, size: 269366) | |
2015-05-29
| ||
14:36 | [f6f41c2f8b] part of check-in [6d410442fb] Add some extra source-code comments and a test case. (check-in: [6d410442fb] user: drh branch: coroutine-autoindex, size: 269353) | |
13:55 | [5eb9ab47f6] part of check-in [521345add6] An attempt to allow automatic index creation on subqueries accessed via co-routine. (check-in: [521345add6] user: drh branch: coroutine-autoindex, size: 269106) | |
2015-05-20
| ||
19:34 | [96ff2c976c] part of check-in [fc1a4f293c] Fix a problem causing collation sequence names to be dequoted multiple times under some circumstances. Cherrypick of [eddc05e7bb31]. (check-in: [fc1a4f293c] user: dan branch: branch-3.8.6, size: 245252) | |
2015-05-18
| ||
12:18 | [e71eae3b13] part of check-in [204e567f68] Use an ALWAY() on conditionals in the transitive constraint logic that are always true as far as we know. (check-in: [204e567f68] user: drh branch: transitive-constraints, size: 267863) | |
11:34 | [68369923d5] part of check-in [6bfaf525ca] Refinements to the determination of when an A==B term is an equivalence. Add test cases. (check-in: [6bfaf525ca] user: drh branch: transitive-constraints, size: 267744) | |
2015-05-16
| ||
20:51 | [ca8d3b5b57] part of check-in [8c886c43ff] Further restrictions on the use of the transitive property in WHERE clauses. (check-in: [8c886c43ff] user: drh branch: transitive-constraints, size: 267558) | |
19:17 | [58c0161b81] part of check-in [a46a247fbc] Fix the transitive constraint processing to only allow transitivity if the operands of the == or IS operator have compatible affinities. (check-in: [a46a247fbc] user: drh branch: transitive-constraints, size: 266903) | |
18:31 | [430ae75d88] part of check-in [ee4b74250a] Fix a typo in a comment. No changes to code. (check-in: [ee4b74250a] user: drh branch: trunk, size: 266154) | |
2015-05-15
| ||
20:14 | [8b319f2a96] part of check-in [1a4628c66c] Minor coding style change, adjust new local variable casing for consistency. (check-in: [1a4628c66c] user: mistachkin branch: trunk, size: 266157) | |
19:59 | [78dd9fc79b] part of check-in [e038ce8955] Do not assume that "col IS ?" matches at most a single row of a UNIQUE column unless the column is also NOT NULL. (check-in: [e038ce8955] user: dan branch: trunk, size: 266157) | |
2015-05-14
| ||
13:41 | [08fadd0d21] part of check-in [b3676377b2] More test cases. Remove some invalid testcase() macros. Rearrange some code for improved testability. (check-in: [b3676377b2] user: drh branch: index-is-operator, size: 266087) | |
13:18 | [cabecc4a0f] part of check-in [d195d4a65d] Add testcase() macros. Get transitive WHERE clause constraints on IS operators working again. (check-in: [d195d4a65d] user: drh branch: index-is-operator, size: 266181) | |
08:58 | [f6c34b6a75] part of check-in [299ed55c90] Merge latest trunk changes with this branch. (check-in: [299ed55c90] user: dan branch: ota-update, size: 265766) | |
01:05 | [64afb483fe] part of check-in [4541688b3f] A new implementation of indexing with the IS operator that works correctly when the IS operator is in the WHERE clause and the operands are from opposite sides of a LEFT JOIN. (check-in: [4541688b3f] user: drh branch: index-is-operator, size: 266040) | |
2015-05-13
| ||
19:33 | [fa61aca146] part of check-in [95b1f9bf14] Simplified implementation of indexing with the IS operator. (check-in: [95b1f9bf14] user: drh branch: index-is-operator, size: 265788) | |
17:54 | [98964edb2a] part of check-in [24263d08b1] Add testcase() macros and comments and a few test-cases. (check-in: [24263d08b1] user: drh branch: index-is-operator, size: 265992) | |
15:24 | [48e3c1f0a8] part of check-in [6f7f1673d0] An early attempt to get indexes to work with the IS operator. This code passes tests, but much more testing is needed to verify that it works on all corner cases. (check-in: [6f7f1673d0] user: drh branch: index-is-operator, size: 265472) | |
2015-05-02
| ||
11:45 | [85fff9c405] part of check-in [7952c32268] Cleanup of the sqlite3StrAccumInit() function. No functionality changes. (check-in: [7952c32268] user: drh branch: trunk, size: 265384) | |
2015-04-25
| ||
12:20 | [52c524b8b3] part of check-in [08ec9f2f5a] Fix an obscure memory leak that could follow an OOM in where.c. (check-in: [08ec9f2f5a] user: dan branch: trunk, size: 265397) | |
2015-04-23
| ||
19:32 | [80998bcd89] part of check-in [1506e99eca] Merge latest trunk changes into this branch. (check-in: [1506e99eca] user: dan branch: ota-update, size: 265600) | |
2015-04-22
| ||
14:41 | [ba0839e75f] part of check-in [658e20f554] Prototype for an sqlite3_db_log() interface. (check-in: [658e20f554] user: drh branch: sqlite3_db_log, size: 265233) | |
2015-04-21
| ||
02:12 | [32fe265e3d] part of check-in [588db14ffb] Make sure the whereSplit() routine in the query planner is not confused by the likely() operator. (check-in: [588db14ffb] user: drh branch: trunk, size: 265218) | |
2015-04-19
| ||
23:48 | [723b4f614c] part of check-in [5ae853aaeb] Fix another harmless compiler warning. (check-in: [5ae853aaeb] user: mistachkin branch: vsix2015, size: 265181) | |
2015-04-15
| ||
14:26 | [7e5d9a5690] part of check-in [9bd3e4453d] Merge all recent trunk enhancements and fixes into the ota-update branch. (check-in: [9bd3e4453d] user: drh branch: ota-update, size: 265575) | |
07:34 | [8ba8ff31dc] part of check-in [eeb4bd06bf] Remove an incorrect ALWAYS() from the automatic index generator. (check-in: [eeb4bd06bf] user: drh branch: trunk, size: 265193) | |
05:31 | [8a05434f5a] part of check-in [a0b6e2fed3] Correctly deal with an unknown collating sequence on an indexed DISTINCT query. (check-in: [a0b6e2fed3] user: drh branch: trunk, size: 265201) | |
2015-04-12
| ||
01:22 | [9952e4749f] part of check-in [e527d96a1e] Avoid problems when a query has a GROUP BY and an ORDER BY but no FROM clause. (check-in: [e527d96a1e] user: drh branch: trunk, size: 265209) | |
2015-04-11
| ||
11:44 | [bd435b75b9] part of check-in [e3b1f62551] Do not assume an index contains unique entries unless it is declared UNIQUE and NOT NULL is specified for all columns. Fix for [7b4fee9f6c]. (check-in: [e3b1f62551] user: dan branch: trunk, size: 265198) | |
2015-03-25
| ||
15:23 | [bc7276b6e7] part of check-in [4e8796af7d] Extend [52e73eec] so that the IS optimization may be used on primary keys with more than 3 columns. (check-in: [4e8796af7d] user: dan branch: ota-update, size: 265580) | |
2015-03-24
| ||
18:21 | [d336e91893] part of check-in [9d9b6c883b] Merge the latest trunk changes into this branch. (check-in: [9d9b6c883b] user: dan branch: ota-update, size: 265390) | |
2015-03-20
| ||
14:57 | [85d832efa5] part of check-in [e750830f1e] Provide the BTREE_SEEK_EQ hint to the b-tree layer. (check-in: [e750830f1e] user: drh branch: seek-eq, size: 265198) | |
08:43 | [6dc10d180e] part of check-in [eddc05e7bb] Fix a problem causing collation sequence names to be dequoted multiple times under some circumstances. (check-in: [eddc05e7bb] user: dan branch: trunk, size: 264932) | |
2015-03-18
| ||
20:03 | [67c115096f] part of check-in [52e73eeca0] Allow whereShortCut() to use the PRIMARY KEY index of a WITHOUT ROWID table to optimize a vector of "IS" operators in a WHERE clause. (check-in: [52e73eeca0] user: dan branch: ota-update, size: 257754) | |
2015-03-16
| ||
20:40 | [42ce3fd5ec] part of check-in [ab832336f4] Make SQLite slightly more likely to use an auto-index within a sub-query. (check-in: [ab832336f4] user: dan branch: trunk, size: 264949) | |
17:48 | [5ca2899f28] part of check-in [8bdda827a3] When the WHERE clause contains two OR-connected terms with identical operands but different operators, try to combine them into a single term. Example: (X=A OR X>A) becomes (X>=A). (check-in: [8bdda827a3] user: drh branch: trunk, size: 264949) | |
13:12 | [235b1f50ab] part of check-in [23f71a2638] Improved comments. No code changes. (check-in: [23f71a2638] user: drh branch: combine-disjuncts, size: 260926) | |
12:13 | [b879a02e59] part of check-in [7a3097689d] When a WHERE clause contains disjuncts with the same operands, try to combine them into a single operator. Example: (x=A OR x>A) becomes (x>=A). (check-in: [7a3097689d] user: drh branch: combine-disjuncts, size: 260779) | |
2015-03-14
| ||
18:59 | [5a4e4ab378] part of check-in [e1caf93c9a] When estimating the number of rows visited by a range scan for which the keys consist of more than one field, consider prefixes of stat4 samples as well as the full samples. (check-in: [e1caf93c9a] user: dan branch: stat4-change, size: 261585) | |
2015-03-09
| ||
13:01 | [eb141b0757] part of check-in [984c3fd526] Fix the LIKE optimization so that it works even if there are additional range contraints on the column that is subject to the LIKE or GLOB. (check-in: [984c3fd526] user: drh branch: trunk, size: 257562) | |
12:11 | [21c96bc026] part of check-in [0e02dc94fd] Always use LIKE optimization range constraints in pairs. (check-in: [0e02dc94fd] user: drh branch: like-opt-fix, size: 257323) | |
2015-03-07
| ||
20:32 | [6581369992] part of check-in [465bfc72d2] Fix another problem with the LIKE optimization. (check-in: [465bfc72d2] user: drh branch: like-opt-fix, size: 256480) | |
03:02 | [8410412339] part of check-in [55ff429177] Remove some code that is commented out. (check-in: [55ff429177] user: drh branch: like-opt-fix, size: 256230) | |
02:51 | [efa0cef9fd] part of check-in [564b8fe794] Fix problems with reverse order sorting and indexes in the LIKE optimization. (check-in: [564b8fe794] user: drh branch: like-opt-fix, size: 256342) | |
00:57 | [7c646a15d0] part of check-in [26cb5145bf] Refactor some jump opcodes in the VDBE. Add JumpZeroIncr and DecrJumpZero. Fix the LIKE optimization to work with DESC sort order. (check-in: [26cb5145bf] user: drh branch: like-opt-fix, size: 256067) | |
2015-03-06
| ||
20:49 | [8cd4fc29ad] part of check-in [6b993bd540] Test cases added. Comments fixed. Proposed solution for ticket [05f43be8fdda9fbd9]. (check-in: [6b993bd540] user: drh branch: like-opt-fix, size: 255673) | |
19:47 | [cace7eef18] part of check-in [a58aafdb4e] Fix the LIKE optimization even when comparing mixed-case BLOBs. (check-in: [a58aafdb4e] user: drh branch: like-opt-fix, size: 255099) | |
16:45 | [b7e82341d2] part of check-in [5757e803cb] The LIKE optimization must be applied twice, once for strings and a second time for BLOBs. Ticket [05f43be8fdda9f]. This check-in is a proof-of-concept of how that might be done. (check-in: [5757e803cb] user: drh branch: like-opt-fix, size: 253753) | |
2015-03-02
| ||
17:25 | [c1b3706929] part of check-in [17890292cf] Ensure that automatic indexes are *not* considered when doing the the subqueries of the OR-optimization. (check-in: [17890292cf] user: drh branch: trunk, size: 252160) | |
2015-02-25
| ||
00:24 | [a50d5082b0] part of check-in [3af300bf6f] Remove an always-false conditional from constructAutomaticIndex(). Put an assert() in its place to prove that the conditional is always false. (check-in: [3af300bf6f] user: drh branch: trunk, size: 252072) | |
2015-02-24
| ||
20:10 | [294423cf9a] part of check-in [1d6fb43a57] Prevent partial indexes on the table on the left hand side of a LEFT JOIN from being incorrectly qualified by a constraint in the ON clause of the join. This relaxes the rule introduced by the previous commit (as the partial indexes on the table on the rhs of the LEFT JOIN may now be qualified by terms within the ON clause). (check-in: [1d6fb43a57] user: dan branch: trunk, size: 251874) | |
16:48 | [88509f19a6] part of check-in [1a1516e4da] This additional fix prevents a partial index from being qualified for use if the constraint that qualifies the partial index is part of the ON clause of a LEFT JOIN. (check-in: [1a1516e4da] user: drh branch: tkt-2326c258, size: 251765) | |
16:05 | [59ab7da73b] part of check-in [c0f4e308a5] Make sure partial automatic indexes are not based on terms in the ON clause of a LEFT JOIN. Fix for ticket [2326c258d02ead3]. UPDATE: This fix does not work where the partial index is a named index. (check-in: [c0f4e308a5] user: drh branch: tkt-2326c258, size: 251696) | |
2014-12-12
| ||
00:20 | [d46de821bc] part of check-in [b7489f9451] Fix a bug in the threadtest4.c program. Remove the keyinfo cache as it provides minimal performance improvements, and then only at SQL preparation time, not at runtime, and it has problems with data races in shared-cache mode. We might later add the keyinfo cache back but only enable it when shared-cache mode is off. (check-in: [b7489f9451] user: drh branch: threadtest4, size: 251644) | |
2014-12-05
| ||
21:18 | [e914fdb915] part of check-in [42d44adc13] Avoid a potential NULL pointer deference in the sqlite3_stmt_scanstatus() logic. (check-in: [42d44adc13] user: drh branch: trunk, size: 251700) | |
19:50 | [8877b55e68] part of check-in [fdb667335c] Make sure the WhereTerm objects are fully zeroed when they are allocated. (check-in: [fdb667335c] user: drh branch: trunk, size: 251682) | |
2014-12-04
| ||
20:24 | [d67fe69dd1] part of check-in [1461d543ac] Performance enhancement for single-table queries with many OR-connected WHERE clause terms and multiple indexes with the same left-most columns. (check-in: [1461d543ac] user: drh branch: trunk, size: 251603) | |
2014-11-22
| ||
19:52 | [a0b16f9d78] part of check-in [9660ce5418] Fix an error in the comments from the previous check-in. (check-in: [9660ce5418] user: drh branch: trunk, size: 251670) | |
18:50 | [33285024c5] part of check-in [221659945c] Deploy heuristics (well-commented) to better estimate how much unindexed terms in the WHERE clause filter the number of output rows from a single table. (check-in: [221659945c] user: drh branch: trunk, size: 251667) | |
16:14 | [46dd9b7629] part of check-in [e1f893c606] Unintentional edits mistakenly checked in. Was: Remove an obsolete and incorrect comment from the whereLoopOutputAdjust() routine in the query planner. No changes to working code. (check-in: [e1f893c606] user: drh branch: mistake, size: 250186) | |
12:22 | [13a9920431] part of check-in [eea4793349] Remove a redundant test case (probably a copy/paste error). Add an assert() to where.c to ensure that automatic indexes do not have there output row counts adjusted downward by supplementary constraints. (check-in: [eea4793349] user: drh branch: trunk, size: 250324) | |
2014-11-18
| ||
21:54 | [e275cb7473] part of check-in [4461bf045d] Adding the "noskipscan" token to an sqlite_stat1.stat field prevents an index for being used with the skip-scan algorithm. (check-in: [4461bf045d] user: drh branch: trunk, size: 250272) | |
2014-11-15
| ||
19:08 | [cb89128d24] part of check-in [00fe095057] Adding the "noskipscan" token to an sqlite_stat1.stat field prevents an index for being used with the skip-scan algorithm. (check-in: [00fe095057] user: drh branch: noskipscan-token, size: 250216) | |
2014-11-14
| ||
19:34 | [4d72a350fd] part of check-in [93642a65ef] Consider using an automatic-index for a scan even if there exists a possible skip-scan that uses one or more "=" operators. (check-in: [93642a65ef] user: dan branch: experimental-autoindex-fix, size: 250244) | |
2014-11-06
| ||
03:55 | [3862a1173a] part of check-in [f968400066] Change the SQLITE_SCANSTAT_EST parameter so that it returns a double for the estimated number of output rows per loop, rather than a 64-bit integer. Revise the output format for the ".scanstats on" in the shell to make use of this new capability. (check-in: [f968400066] user: drh branch: scanstatus, size: 250188) | |
2014-11-05
| ||
19:26 | [2c2081c546] part of check-in [2d36be5d9a] Change the query planner to do a better job of estimating the number rows selected by a BETWEEN operator using STAT4 when both upper and lower bounds are contained within the same sample. (check-in: [2d36be5d9a] user: drh branch: trunk, size: 250270) | |
13:13 | [240961041f] part of check-in [c106b75536] Enhance whereLoopCheaperProperSubset(X,Y) so that it does not report true if X uses skip-scan less than Y, since in that case X might deserve to be cheaper even if it is a proper subset. (check-in: [c106b75536] user: drh branch: trunk, size: 249504) | |
2014-11-03
| ||
15:33 | [d5fa1081bf] part of check-in [a2303c7192] Add further tests. Fixes so that compilation without ENABLE_STMT_SCANSTATUS works. (check-in: [a2303c7192] user: dan branch: scanstatus, size: 249416) | |
11:25 | [53dae5ed61] part of check-in [f5313e0c68] Remove unused variable from struct WhereInfo. Add some explanatory comments to new code. (check-in: [f5313e0c68] user: dan branch: scanstatus, size: 249406) | |
2014-11-01
| ||
21:00 | [ad4a3bca90] part of check-in [f13d6ba8a7] Minor performance enhancements to SQLITE_ENABLE_STMT_SCANSTATUS code. (check-in: [f13d6ba8a7] user: dan branch: scanstatus, size: 248618) | |
20:38 | [fb404e3db4] part of check-in [9ea37422a8] If SQLITE_ENABLE_STMT_SCANSTATUS is defined, record the number of times each VDBE opcode is executed. Derive the values returned by sqlite3_stmt_scanstatus() from these records on demand. (check-in: [9ea37422a8] user: dan branch: scanstatus, size: 248569) | |
18:08 | [636ca646c8] part of check-in [8d8cc9608d] Minor fixes and documentation improvements for sqlite3_stmt_scanstatus(). (check-in: [8d8cc9608d] user: dan branch: scanstatus, size: 249143) | |
2014-10-31
| ||
20:11 | [344beac082] part of check-in [6a9bab34ae] Add the experimental sqlite3_stmt_scanstatus() API. (check-in: [6a9bab34ae] user: dan branch: scanstatus, size: 248662) | |
2014-10-28
| ||
15:58 | [5665df88cb] part of check-in [23073a0539] Trivial simplification to the automatic index logic. (check-in: [23073a0539] user: drh branch: trunk, size: 247514) | |
2014-10-25
| ||
13:42 | [4ce8c4826b] part of check-in [0f08924fe0] Increase the resolution of the second parameter to the likelihood() SQL function (the probability value) so that it can handle probabilities as small as 0.00000001. Formerly, it ran out of precision at 0.001. (check-in: [0f08924fe0] user: drh branch: trunk, size: 247591) | |
12:28 | [3312adfda3] part of check-in [b9ad601eab] Do not use virtual (and hence redundant) WHERE-clause terms to restrict the content of a automatic partial index. Show when an automatic partial index is used in the EXPLAIN QUERY PLAN output. (check-in: [b9ad601eab] user: drh branch: trunk, size: 247590) | |
2014-10-24
| ||
19:28 | [cc0733c59b] part of check-in [d95d0313c4] Enhance the automatic index logic so that it creates a partial index when doing so gives the same answer for less work. UPDATE: This change introduced a bug described by ticket [2326c258d02ead33]. (check-in: [d95d0313c4] user: drh branch: trunk, size: 247412) | |
15:26 | [f5c13d9c19] part of check-in [401235edf4] Honor a high likelihood() on range constraints. (check-in: [401235edf4] user: drh branch: trunk, size: 246671) | |
14:32 | [746d4f22d7] part of check-in [03d0498d0f] Get the likelihood() functions working on operators like BETWEEN that create virtual terms in the WHERE-clause analysis. (check-in: [03d0498d0f] user: drh branch: trunk, size: 246553) | |
2014-10-23
| ||
17:26 | [c9613a13a0] part of check-in [c6a5b67ae1] Add debugging code to count the number of iterations of each loop made as part of statement execution. (check-in: [c6a5b67ae1] user: dan branch: debug-loopcounters, size: 246992) | |
2014-10-22
| ||
19:57 | [2cd9e0af71] part of check-in [ca3b00c44e] Change the 0x800 bit of SQLITE_TESTCTRL_OPTIMIZATIONS so that it disables the loading of STAT3 and STAT4 content, not just the using of that content. Change the internal name of that bit to SQLITE_Stat34. (check-in: [ca3b00c44e] user: drh branch: trunk, size: 246397) | |
15:27 | [5099c42e24] part of check-in [3c933bf95f] Take steps to avoid misestimating range query costs based on STAT4 data due to the roundoff error of converting from integers to LogEst and back to integers. (check-in: [3c933bf95f] user: drh branch: trunk, size: 246500) | |
2014-10-21
| ||
18:16 | [994b38c869] part of check-in [a27861c28c] Further tuning of the cost estimates for skip-scan loops, especially for cases when skip-scan loops are in competition with regular loops. (check-in: [a27861c28c] user: drh branch: trunk, size: 246526) | |
16:01 | [45cb63cb14] part of check-in [ec1e942f08] Add WHERETRACE debugging output to the whereLoopAdjustCost() routine. (check-in: [ec1e942f08] user: drh branch: trunk, size: 246666) | |
01:05 | [2d1ff51eed] part of check-in [f4b22a2620] If a skip-scan is a proper subset of some other scan, then adjust the cost of the skip-scan upward so that it is more costly than the other scan. Such a cost imbalance can arise under STAT4 because of difficulties in getting an accurate estimate for skip-scans. (check-in: [f4b22a2620] user: drh branch: trunk, size: 246372) | |
2014-10-11
| ||
02:12 | [2947912f1f] part of check-in [7a32fdfd4b] Make sure that a GROUP BY that also implements an ORDER BY scans the table in the correct order. Fix for ticket [ba7cbfaedc7e6]. (check-in: [7a32fdfd4b] user: drh branch: trunk, size: 247233) | |
01:22 | [45202a9a28] part of check-in [c5dc83ebde] Remove an unnecessary conditional from the EXPLAIN QUERY PLAN logic. (check-in: [c5dc83ebde] user: drh branch: trunk, size: 247183) | |
2014-10-10
| ||
20:52 | [7137da023f] part of check-in [2a9573962b] Account for the ASC/DESC properties of ORDER BY expressions when using the same index for GROUP BY and ORDER BY. Candidate fix for [ba7cbfaedc]. (check-in: [2a9573962b] user: dan branch: experimental, size: 247482) | |
19:15 | [75af78b4a4] part of check-in [c301245200] Restrict the scope of the explainIndexRange() function in where.c. (check-in: [c301245200] user: drh branch: trunk, size: 247271) | |
17:20 | [b511252533] part of check-in [daa8314fba] Add the estimated number of output rows to the EXPLAIN QUERY PLAN output if compiled with SQLITE_EXPLAIN_ESTIMATED_ROWS. This feature is off by default for the time being. (check-in: [daa8314fba] user: drh branch: trunk, size: 247264) | |
15:47 | [23b9e5dd96] part of check-in [beea1efc3a] Simplify the code used to generate the text for EXPLAIN QUERY PLAN. (check-in: [beea1efc3a] user: drh branch: trunk, size: 247044) | |
15:01 | [d1e315e338] part of check-in [68e1b4de70] Fix a potential problem in the whereRangeScanEst() routine when STAT4 is active. The problem was introduced by recent enhancements. (check-in: [68e1b4de70] user: drh branch: trunk, size: 247368) | |
2014-10-08
| ||
19:33 | [6fe21e0f60] part of check-in [42e48fd3a6] Remove an always-true branch in whereRangeScanEst(). Replace it with an assert(). (check-in: [42e48fd3a6] user: drh branch: trunk, size: 247406) | |
02:53 | [982f1ce213] part of check-in [e3fe840052] Fix the STAT4 range scan estimates for DESC indexes. (check-in: [e3fe840052] user: drh branch: trunk, size: 247359) | |
00:08 | [74e1f7e136] part of check-in [adcb3fed48] More intuitive labels on ".wheretrace" output. (check-in: [adcb3fed48] user: drh branch: trunk, size: 247139) | |
2014-09-30
| ||
17:31 | [2f42fe0d19] part of check-in [b6b289182f] Enable the query planner to deal with WHERE clauses that have OR terms nested within AND terms that are nested within OR terms. Also remove an unused function declaration. (check-in: [b6b289182f] user: drh branch: trunk, size: 247143) | |
17:03 | [a459332dc6] part of check-in [670993eb81] Further enhancements to the "wheretrace" debugging output. (check-in: [670993eb81] user: drh branch: trunk, size: 247118) | |
14:14 | [1d22623f4c] part of check-in [2e375eae47] Enhanced debug output for OR-logic in the query loop optimizer. (check-in: [2e375eae47] user: drh branch: trunk, size: 246755) | |
13:46 | [5924c54986] part of check-in [92e0b4bd4d] Show tree diagrams of data structures in the debugging output when the 0x100 bit is set on sqlite3WhereTrace or sqlite3SelectTrace. (check-in: [92e0b4bd4d] user: drh branch: trunk, size: 246547) | |
12:33 | [5a2c700f6f] part of check-in [4ff51325d6] Remove the SQLITE_ENABLE_TREE_EXPLAIN compile-time option. Add alternative debugging display routines: sqlite3TreeViewExpr(), sqlite3TreeViewExprList(), and sqlite3TreeViewSelect(). (check-in: [4ff51325d6] user: drh branch: trunk, size: 245521) | |
2014-09-23
| ||
01:40 | [a14d3d8042] part of check-in [ae9a42b268] Adjust skip-scan cost estimates slightly so that a full table scan is preferred over a skip-scan to a column with only two distinct values. (check-in: [ae9a42b268] user: drh branch: trunk, size: 247403) | |
2014-09-22
| ||
14:30 | [3f859ecfad] part of check-in [41de1643bf] Tune the query planner to be more aggressive about using automatic indexes on views and subqueries for which there is not opportunity to declare a persistent schema index. (check-in: [41de1643bf] user: drh branch: trunk, size: 247233) | |
2014-09-19
| ||
02:01 | [0888567c0e] part of check-in [72727b68cd] Make sure that the sorting-index pre-filter recognizes that a rowid reference might be sortable. This fixes a performance regression. (check-in: [72727b68cd] user: drh branch: Cplusplus-comment, size: 246775) | |
2014-09-16
| ||
14:37 | [dc27628803] part of check-in [8239c35aed] Reduce the number of arguments to RecordCompare functions from 4 to 3, resulting in a small performance increase. (check-in: [8239c35aed] user: drh branch: micro-optimizations, size: 246736) | |
2014-09-06
| ||
16:39 | [839b5e1db2] part of check-in [e62aab5e92] Fix typos in comments. No code changes. (check-in: [e62aab5e92] user: peter.d.reid branch: trunk, size: 246748) | |
02:00 | [27af96780d] part of check-in [a758465e3c] Fix a couple of typos in comments. No changes to code. (check-in: [a758465e3c] user: mistachkin branch: trunk, size: 246750) | |
01:35 | [738213f25b] part of check-in [73954f93c4] Query planner heuristic update: When doing a full table scan on a table that has an equality constraint on an unindexed column, do not allow the estimated number of output rows to be greater than half the total number of rows in the table. (check-in: [73954f93c4] user: drh branch: trunk, size: 246748) | |
2014-08-28
| ||
19:38 | [d9eae96b2c] part of check-in [fdd478bb11] Improved WHERETRACE messages for the estimated output row reductions from range scans. (check-in: [fdd478bb11] user: drh branch: trunk, size: 246099) | |
17:20 | [8214c30123] part of check-in [6ba609522e] Add a testcase() macro to help verfity the row estimation logic. (check-in: [6ba609522e] user: drh branch: stat4-experimental, size: 245928) | |
16:01 | [70dc840893] part of check-in [052d89b554] Fix a problem causing an inaccurate stat4-based estimate for the number of rows visited by a range scan. (check-in: [052d89b554] user: dan branch: stat4-experimental, size: 245856) | |
13:42 | [2fd5cfaf26] part of check-in [c931ca2b77] Fix a formatting error ("%d" needed in place of "%g") on a WHERETRACE macro inside of the query planner. This fix applies to debugging logic only. (check-in: [c931ca2b77] user: drh branch: trunk, size: 245803) | |
2014-08-27
| ||
17:37 | [b80cb72645] part of check-in [fcebca166f] When determining whether or not a partial index is usable, do not assume that the cursor number assigned to each table in the query is the same as its index in the FROM clause. Fix for ticket [98d973b8f5]. (check-in: [fcebca166f] user: dan branch: trunk, size: 245803) | |
2014-08-25
| ||
18:29 | [4e2770a191] part of check-in [e06dc6f0c3] In cases where stat4 data is available but cannot be used because the rhs of a range constraint is too complex a expression, fall back to using the default estimates for number of rows scanned. (check-in: [e06dc6f0c3] user: dan branch: trunk, size: 245724) | |
2014-08-20
| ||
23:38 | [4c499d1858] part of check-in [bc985caa78] Enhancements to skip-scan such that it is operable when a middle column of an index is skipped while the left-most column is constrained in the WHERE clause. (check-in: [bc985caa78] user: drh branch: trunk, size: 245742) | |
2014-08-08
| ||
17:25 | [ab20f9c24a] part of check-in [43c59c8543] Fix a buffer overrun in the previous commit. (check-in: [43c59c8543] user: dan branch: query-planner-fix, size: 245269) | |
16:52 | [012ef65af2] part of check-in [299b957027] Because SQLite internally calculates query plan costs using a logarithmic scale, very large estimated sorting costs can cause all other estimated costs to be rounded down to zero. In these cases break ties between plans with the same total cost by comparing the costs with sorting excluded. This is an alternative fix for the problem addressed by [2af630c572]. (check-in: [299b957027] user: dan branch: query-planner-fix, size: 245062) | |
2014-08-07
| ||
20:37 | [4cd4b3622c] part of check-in [b5e8fd575a] Clarify the computation of compatible isOrdered by in the plan solver of the query planner. (check-in: [b5e8fd575a] user: drh branch: query-planner-fix, size: 243143) | |
20:25 | [5e4fe92979] part of check-in [8f04d2c008] Remove the extraneous debugging printf() from the previous check-in. (check-in: [8f04d2c008] user: drh branch: query-planner-fix, size: 242936) | |
16:50 | [5a099c6d2a] part of check-in [ec5d84ba69] Oops! This check-in was on trunk. But it contains a debugging printf(). Original comment: When the estimated cost to do a sort overwhelms the estimated cost to do individual table lookups, make sure that the table lookup costs are still taken into consideration when selecting the lookup algorithm. (check-in: [ec5d84ba69] user: drh branch: query-planner-fix, size: 243016) | |
2014-08-04
| ||
15:12 | [93e9bec739] part of check-in [2f724cbac9] Changed my mind: This opcode name changes mere creates unnecessary diff marks between older and newer versions without significantly improving readability. Was: Rename the IsNull opcode to IfNull and rename the NotNull opcode to IfNotNull. (check-in: [2f724cbac9] user: drh branch: deadend, size: 241638) | |
2014-08-01
| ||
14:46 | [ce1b9a3a25] part of check-in [ee0fd6aaf9] Begin making changes to the IN operator in an attempt to make it run faster and to make the code easier to understand. (check-in: [ee0fd6aaf9] user: drh branch: IN-operator-improvements, size: 241638) | |
2014-07-31
| ||
22:59 | [a7d0434de5] part of check-in [e75b26ee35] Refactoring: Change "pIndex->onError!=OE_None" to use a macro: "IsUniqueIndex(pIndex)". Easier to understand that way. (check-in: [e75b26ee35] user: drh branch: trunk, size: 241623) | |
2014-07-24
| ||
22:41 | [4dfcd80380] part of check-in [6aea2258dd] Fix a bug in the whereRangeSkipScanEst() procedure (added by check-in [d09ca6d5efad3e4cfa]) where it fails to consider the possibility of a ROWID column when computing the affinity of a table column. (check-in: [6aea2258dd] user: drh branch: trunk, size: 241633) | |
2014-07-23
| ||
23:57 | [9454af8e5e] part of check-in [729ece4088] Add experimental "costmult" logic. Only enabled when compiled with -DSQLITE_ENABLE_COSTMULT. (check-in: [729ece4088] user: drh branch: trunk, size: 241585) | |
2014-07-22
| ||
20:02 | [0ffd586e04] part of check-in [77f412caf0] Add the OP_ReopenIdx opcode that works like OP_OpenRead except that it becomes a no-op if the cursor is already open on the same index. Update the OR-optimization logic to make use of OP_ReopenIdx in order to avoid unnecessary cursor open requests sent to the B-Tree layer. (check-in: [77f412caf0] user: drh branch: trunk, size: 241116) | |
19:14 | [4e7e6bc639] part of check-in [eed754fe93] The optimization of check-in [b67a6e33f2] does not work (it generates incorrect VDBE code) if an OR term is AND-ed with a constant expression. So back that optimization out and add a test case to make sure it does not get added back in. (check-in: [eed754fe93] user: drh branch: trunk, size: 240899) | |
14:42 | [52edd7f5df] part of check-in [b083a961f8] Expire prepared statements after running ANALYZE. (check-in: [b083a961f8] user: drh branch: trunk, size: 241667) | |
12:05 | [00c4b52d97] part of check-in [b22dd165da] Enhance the comment on whereLoopAddBtree(). No changes to code. (check-in: [b22dd165da] user: drh branch: trunk, size: 241712) | |
00:40 | [4f8dce8f4e] part of check-in [b67a6e33f2] For the OR-optimization, avoid generating OP_OpenRead opcodes that reopen exactly the same index. (check-in: [b67a6e33f2] user: drh branch: trunk, size: 241239) | |
2014-07-15
| ||
11:59 | [907fd82f4f] part of check-in [1efa6ed584] Add simple tests for new sqlite3BtreeCursorHint() functionality. (check-in: [1efa6ed584] user: dan branch: cursor-hints, size: 221604) | |
2014-07-14
| ||
19:04 | [dcea610445] part of check-in [f9dddd008c] In the expression passed to sqlite3BtreeCursorHint() for the inner loops of joins, replace any TK_COLUMN references to columns in the outer loops with TK_REGISTER expressions (Expr.iTable indicates the specific register containing the value). There are no automated tests for this yet. (check-in: [f9dddd008c] user: dan branch: cursor-hints, size: 221619) | |
2014-07-01
| ||
11:54 | [3a451b0051] part of check-in [21981e3506] Ensure that all fields are loaded from the stat4 table for records that correspond to indexes on WITHOUT ROWID tables with composite primary keys. (check-in: [21981e3506] user: dan branch: trunk, size: 240471) | |
2014-06-30
| ||
19:07 | [6ff6f7e3b2] part of check-in [d09ca6d5ef] Attempt to use STAT4 information to estimate the selectivity of WHERE clause terms when using the skip-scan optimization. (check-in: [d09ca6d5ef] user: drh branch: trunk, size: 240498) | |
18:02 | [2bc0226fce] part of check-in [053a210e31] Fix a problem in where.c with using the stat4 sample data of an index on a WITHOUT ROWID table. (check-in: [053a210e31] user: dan branch: stat4-without-rowid, size: 236088) | |
15:23 | [da15506cd5] part of check-in [6624a61d16] Fix where.c so that the primary key values appended to every index entry on a WITHOUT ROWID table may be used when useful. (check-in: [6624a61d16] user: dan branch: stat4-without-rowid, size: 236091) | |
2014-06-28
| ||
15:26 | [84659c3084] part of check-in [dfb09db6d4] Fix a problem with using stat4 samples of type text when estimating the rows visited by a range-query/skip-scan loop. (check-in: [dfb09db6d4] user: dan branch: stat4-skipscan, size: 240597) | |
14:28 | [1f448161f1] part of check-in [d186d1ac3c] Change the VDBE to export the sqlite3MemCompare() routine and thus free where.c from the dependency on vdbeInt.h. (check-in: [d186d1ac3c] user: drh branch: stat4-skipscan, size: 240607) | |
2014-06-27
| ||
20:14 | [fea270aeef] part of check-in [219736f54d] Fix a couple of problems in estimating the number of rows visited by a range query that uses a skip-scan. (check-in: [219736f54d] user: dan branch: stat4-skipscan, size: 240628) | |
2014-06-26
| ||
21:32 | [0396f040a1] part of check-in [74a5454a71] Fix compilation issue when STAT4 is not enabled. (check-in: [74a5454a71] user: mistachkin branch: stat4-skipscan, size: 239985) | |
20:21 | [643abd2dce] part of check-in [01dc810259] Attempt to use sqlite_stat4 data to estimate the number of rows visited by a range query that uses a skip-scan. This code is largely untested. (check-in: [01dc810259] user: dan branch: stat4-skipscan, size: 239907) | |
2014-06-18
| ||
15:11 | [7b9e13cff9] part of check-in [0a52bddd9d] Prevent an automatic index from taking the place of a declared index. (check-in: [0a52bddd9d] user: drh branch: trunk, size: 236187) | |
2014-06-17
| ||
20:16 | [0035f45de6] part of check-in [4ece839d44] Prevent an automatic index from taking the place of a declared index. (check-in: [4ece839d44] user: drh branch: autoindex-improvements, size: 236186) | |
17:00 | [7f59d3786a] part of check-in [b500f2a097] Fix a missing space in a "wheretrace" comment. No changes to production code. (check-in: [b500f2a097] user: drh branch: trunk, size: 235795) | |
15:13 | [9ec7ce024a] part of check-in [2d9de154f8] Small tweaks to the query planner to get it to try harder to use an index for sorting and to avoid using automatic indexes on constant terms. (check-in: [2d9de154f8] user: drh branch: branch-3.8.3, size: 219338) | |
12:33 | [cd3110c7dc] part of check-in [f270fb6e9e] A different approach to the autoindex problem that deletes query-planner code rather than adding it. (check-in: [f270fb6e9e] user: drh branch: autoindex-improvements, size: 235794) | |
09:52 | [3214e390ca] part of check-in [36d67e1dd2] Simplification to the logic that prevents automatic indexes from being formed on constant expressions. (check-in: [36d67e1dd2] user: drh branch: autoindex-improvements, size: 236172) | |
09:00 | [d6a284abd9] part of check-in [58acc2a8b3] Allow an automatic index on a WHERE constraint where the RHS is does not reference another table as long as the RHS is not a constant. (check-in: [58acc2a8b3] user: drh branch: autoindex-improvements, size: 236221) | |
02:46 | [46e94a513f] part of check-in [d6883e960f] Do not attempt to create an automatic index on a constant constraint, as doing so is pointless. (check-in: [d6883e960f] user: drh branch: autoindex-improvements, size: 236150) | |
2014-06-16
| ||
21:30 | [5ee08882fd] part of check-in [3181d2069a] In the "wheretrace" logic (disabled for normal builds) expand the print width of the flags field to be wide enough for all 17 bits. (check-in: [3181d2069a] user: drh branch: trunk, size: 236106) | |
2014-06-12
| ||
15:46 | [778943263d] part of check-in [6c68d758bc] Simplify the estLog() routine. (check-in: [6c68d758bc] user: drh branch: trunk, size: 236106) | |
2014-06-06
| ||
20:20 | [1c0a0b1f13] part of check-in [75437bee49] Make sure the estLog() routine in the query planner handles negative values correctly (always returning 1). Prior to this change, estLog(-1) would return a large number which could throw off the cost computations in the query planner in obscure circumstances. (check-in: [75437bee49] user: drh branch: trunk, size: 236131) | |
17:09 | [b6dc818941] part of check-in [b16bf8518b] Fix an obsolete comment on the whereRangeScanEst() routine. No changes to code. (check-in: [b16bf8518b] user: drh branch: trunk, size: 236121) | |
2014-06-02
| ||
21:00 | [a7d59dd5d5] part of check-in [1cbe7a0883] Remove the WHERE_LIKELIHOOD bit, as it does not seem to effect any result. (check-in: [1cbe7a0883] user: drh branch: trunk, size: 236119) | |
11:26 | [308ed08c64] part of check-in [9f18b303cd] Fix the query planner so that it once again knows that queries without a FROM clause will never return more than one row and hence do not require sorting. (check-in: [9f18b303cd] user: drh branch: trunk, size: 236212) | |
2014-05-27
| ||
18:18 | [b3be5eb419] part of check-in [d16e575dac] Change the name of the Index.autoIndex field to Index.idxType and provide symbolic names for the various values of that field rather than using magic numbers. (check-in: [d16e575dac] user: drh branch: trunk, size: 236198) | |
17:57 | [a2dba34bd8] part of check-in [9c785c5832] Avoid unnecessary cursor opens and seeks when running the OR-optimization on a WITHOUT ROWID table. (check-in: [9c785c5832] user: drh branch: trunk, size: 236182) | |
16:41 | [c0d3d34744] part of check-in [77fef5a398] Improved comments on the OR-optimization logic in the query planner. (check-in: [77fef5a398] user: drh branch: trunk, size: 235754) | |
2014-05-26
| ||
22:01 | [b5719b11c4] part of check-in [cbec30d0c4] Minor enhancements to comments and clarification of the code. (check-in: [cbec30d0c4] user: drh branch: without-rowid-or-opt, size: 234993) | |
20:25 | [d46d73c76f] part of check-in [b4980a07e2] Add a missing VdbeCoverage() macro on an OP_Found opcode added in the previous check-in. (check-in: [b4980a07e2] user: drh branch: without-rowid-or-opt, size: 234883) | |
20:06 | [a911a484ed] part of check-in [2c7e277bbe] Enable the OR optimization for WITHOUT ROWID tables. Use a temp table instead of the RowSet object to track the rows that have already been included in the result set. (check-in: [2c7e277bbe] user: dan branch: without-rowid-or-opt, size: 234850) | |
2014-05-23
| ||
17:17 | [9d351a5ece] part of check-in [9268df305b] Changes to the output of EXPLAIN QUERY PLAN to make it clearer when a query uses the PRIMARY KEY index of a WITHOUT ROWID table. (check-in: [9268df305b] user: dan branch: trunk, size: 232722) | |
2014-05-19
| ||
15:16 | [5733d54dcc] part of check-in [17349a49d2] Changes to help ensure that a multiplication does not overflow when computing the number of bytes needed for a memory allocation, and cause a malfunction. No problems existing problems were discovered. However, these changes should help to ensure that no problems arise in the future. (check-in: [17349a49d2] user: drh branch: safer-malloc, size: 232477) | |
2014-05-07
| ||
20:33 | [fd4b525cd5] part of check-in [68766f8374] Remove a superfluous variable initialization. (check-in: [68766f8374] user: drh branch: trunk, size: 232447) | |
2014-05-06
| ||
15:28 | [b8df0204d0] part of check-in [8ad0a123a2] Experimental changes that reduce the size of Expr objects from 72 to 64 bytes each on x64 and from 48 to 44 bytes each on x32. (check-in: [8ad0a123a2] user: drh branch: smaller-expr, size: 233373) | |
2014-05-02
| ||
00:09 | [91dfd38227] part of check-in [3bc43594aa] Add a comment explaining why WhereLoop cost adjustments are omitted for skip-scan loops. (check-in: [3bc43594aa] user: drh branch: trunk, size: 232452) | |
2014-05-01
| ||
20:24 | [9e67d6c480] part of check-in [be2702ce35] Add #ifdefs for test coverage. Add a testcase(). (check-in: [be2702ce35] user: drh branch: trunk, size: 231761) | |
2014-04-30
| ||
18:11 | [3eaf3d241d] part of check-in [9bbca48b42] Fix a problem in calculating the costs of "OR" scans. (check-in: [9bbca48b42] user: dan branch: trunk, size: 231728) | |
15:00 | [4aeb1caa0a] part of check-in [05e6e16cb2] Add text to the header comment of whereLoopAddBtree() describing how the costs of various b-tree loops are estimated. (check-in: [05e6e16cb2] user: dan branch: experimental-costs, size: 230997) | |
14:47 | [e91b92908c] part of check-in [eefeda32d5] Fix a couple of out-of-date comments in where.c. (check-in: [eefeda32d5] user: dan branch: experimental-costs, size: 229932) | |
2014-04-29
| ||
16:46 | [9651faf05f] part of check-in [d74299f037] Merge trunk changes into this branch. (check-in: [d74299f037] user: dan branch: experimental-costs, size: 229371) | |
16:10 | [397bd5d4f4] part of check-in [5bb7757a7b] Ignore likelihood() values on indexed IPK lookups. (check-in: [5bb7757a7b] user: dan branch: experimental-costs, size: 229629) | |
2014-04-28
| ||
20:11 | [da9c2c1d0c] part of check-in [a8ae93f0cf] Do not reduce the number of rows scanned at all for "IS NOT NULL" constraints. Fix a bug in calculating the number of rows visited by scans of partial indicies. (check-in: [a8ae93f0cf] user: dan branch: experimental-costs, size: 229618) | |
19:34 | [0a51894006] part of check-in [4047ac75e2] The trunk assumes that an open range constraint on an indexed term (col>?) term matches 1/4 of the indexed rows, and that a closed constraint (col BETWEEN ? AND ?) matches 1/64. Change this branch to do the same. (check-in: [4047ac75e2] user: dan branch: experimental-costs, size: 229583) | |
09:35 | [263f8940aa] part of check-in [88a5758dcc] Modify internal function whereLoopAdjustCost() so that it does not prefer a skip-scan over a regular index scan even if the regular scan uses a subset of the WHERE terms used by the skip-scan. (check-in: [88a5758dcc] user: dan branch: experimental-costs, size: 229207) | |
08:49 | [d4efd09b7b] part of check-in [d491de62fc] Fix an error in estimating of the number of rows visited by a range scan. (check-in: [d491de62fc] user: dan branch: experimental-costs, size: 229097) | |
2014-04-26
| ||
20:21 | [488cc018a3] part of check-in [dee2040924] Fix an sqlite3_stmt_status() problem caused by recent changs on this branch. (check-in: [dee2040924] user: dan branch: experimental-costs, size: 229000) | |
2014-04-25
| ||
20:22 | [2b3f478019] part of check-in [c51efaa5d2] If the user provides likelihood() data for a WHERE clause term used as part of an index key, have the planner use it when calculating the expected number of rows visited by the loop. (check-in: [c51efaa5d2] user: dan branch: experimental-costs, size: 228921) | |
15:01 | [15a5c94c8c] part of check-in [1bd74c49dd] Store values loaded from the stat1 table as logarithmic values in memory. (check-in: [1bd74c49dd] user: dan branch: experimental-costs, size: 228111) | |
14:42 | [6ae02f1e8b] part of check-in [1711381226] Make sure ORDER BY clauses on joins that involve virtual tables and that have a DISTINCT clause work correctly. This is a candidate fix for ticket [388d01d4bb8f9]. Test cases for that ticket will be checked in separately. (check-in: [1711381226] user: drh branch: trunk, size: 228169) | |
2014-04-24
| ||
20:04 | [c12bc20cd6] part of check-in [c5a6ec0a88] Changes to the way the planner calculates the costs of various table and index scans. Some test cases still failing. (check-in: [c5a6ec0a88] user: dan branch: experimental-costs, size: 228072) | |
2014-04-21
| ||
13:21 | [3b127bdc24] part of check-in [de9a490f59] Avoid discarding an ORDER BY clause in the case where an identical GROUP BY clauses uses an index to group, but not sort, the rows. Fix for [b75a9ca6b0]. (check-in: [de9a490f59] user: dan branch: trunk, size: 228427) | |
2014-04-18
| ||
22:20 | [114b480d3c] part of check-in [9a5d38c79d] Clean up the proper-subset cost adjustment logic to make it more compact and easier to read and so that full branch test coverage is more easily obtained. (check-in: [9a5d38c79d] user: drh branch: trunk, size: 226950) | |
2014-04-13
| ||
19:28 | [7614c4383d] part of check-in [ab23abf392] Remove the unused second argument from sqlite3ExprCachePop(). Add an ALWAYS() on an always-true conditional in sqlite3VdbeResolveLabel(). (check-in: [ab23abf392] user: drh branch: trunk, size: 226344) | |
2014-04-04
| ||
18:20 | [70eb10da08] part of check-in [683dd379a2] Merge changes to the query planner that strive to ensure that any index usage that is a proper subset of some other index usage always has a slightly higher cost. (check-in: [683dd379a2] user: drh branch: trunk, size: 226347) | |
2014-04-03
| ||
16:29 | [ebad891b74] part of check-in [d5513dfa23] Use OP_Copy instead of OP_SCopy when moving results out of a subquery, to prevent the subquery results from changing out from under the outer query. Fix for ticket [98825a79ce1456]. Problem introduced by check-in [1e64dd782a126f48d78]. (check-in: [d5513dfa23] user: drh branch: trunk, size: 223450) | |
16:16 | [7e56746cb3] part of check-in [ec6a06246e] Use OP_Copy instead of OP_SCopy when moving results out of a subquery, to prevent the subquery results from changing out from under the outer query. Fix for ticket [98825a79ce1456]. Problem introduced by check-in [1e64dd782a126f48d78]. (check-in: [ec6a06246e] user: drh branch: branch-3.8.4, size: 221227) | |
2014-03-31
| ||
20:05 | [7b5010f5c4] part of check-in [7473c4dfc1] Remove an unnecessary conditional. (check-in: [7473c4dfc1] user: drh branch: query-plan-experiments, size: 226348) | |
19:49 | [182f16d910] part of check-in [b7830d232b] Also make sure an index that is a proper subset of some other index has a higher cost than that other index. Add test cases. (check-in: [b7830d232b] user: drh branch: query-plan-experiments, size: 226319) | |
18:24 | [50ac315447] part of check-in [ea8b091004] Make sure that an index that covers a proper superset of the WHERE clause terms of some other index has a lower cost than the other index. (check-in: [ea8b091004] user: drh branch: query-plan-experiments, size: 226114) | |
2014-03-29
| ||
21:16 | [26c6f6260b] part of check-in [8f869ca7a6] Experiments in picking better query plans, especially when the usage of one index is a subset of another. (check-in: [8f869ca7a6] user: drh branch: query-plan-experiments, size: 224832) | |
2014-03-28
| ||
12:56 | [7d539cedb1] part of check-in [a4e47150f3] Fix a harmless compiler warning. (check-in: [a4e47150f3] user: drh branch: trunk, size: 223451) | |
2014-03-27
| ||
18:36 | [7c53de68bd] part of check-in [9b4d7226bc] Minor cleanup of the code in the query planner that computes the costs estimates for the various plans. There are no changes to the costs at this time. But the code is slightly more readable now and that might facilitate future enhancements. (check-in: [9b4d7226bc] user: drh branch: trunk, size: 223447) | |
2014-03-22
| ||
00:27 | [da8ec216f1] part of check-in [c36f74611c] Fix the ORDER BY optimization logic so that it will do a block-sort on a partial DESC ORDER BY. This enhancement uncovered a memory leak in pushUntoSorter() which is also fixed. (check-in: [c36f74611c] user: drh branch: trunk, size: 222114) | |
2014-03-21
| ||
18:45 | [f394453e49] part of check-in [71e9ae72c2] Merge the OFFSET-on-query-without-FROM fix from trunk. (check-in: [71e9ae72c2] user: drh branch: orderby-planning, size: 222122) | |
18:16 | [eed0b83bd7] part of check-in [179ef81648] Fix the OFFSET clause so that it works correctly on queries that lack a FROM clause. Ticket [07d6a0453d4ed8]. (check-in: [179ef81648] user: drh branch: trunk, size: 221395) | |
2014-03-20
| ||
20:56 | [d6d99a4d83] part of check-in [eca35871c3] Merge trunk fixes for "x IN (?)" handling. (check-in: [eca35871c3] user: drh branch: orderby-planning, size: 222068) | |
13:26 | [a2f20bdc65] part of check-in [e68b427afb] Convert expressions of the form "X IN (?)" with exactly one value on the RHS of the IN into equality tests: "X=?". Add test cases to verify that statements work correctly on this corner case. Fix for ticket [e39d032577df6942]. (check-in: [e68b427afb] user: drh branch: trunk, size: 221341) | |
12:36 | [09246177a7] part of check-in [eae6dfbe55] One possible fix for the [e39d032577d] problem it to replace the failing assert() with a testcase() as shown here. (check-in: [eae6dfbe55] user: drh branch: tkt-e39d0325, size: 221286) | |
12:17 | [e433accd20] part of check-in [ca31408131] Fix an unnecessarily obtuse use of a bitmask flag. (check-in: [ca31408131] user: drh branch: trunk, size: 221207) | |
2014-03-19
| ||
23:24 | [7c74debe2e] part of check-in [01afbf97c0] Fix query planner weights associated with choosing block-sorting. Fix block sorting of tables with collating functions. Fix various test cases. All "veryquick" tests are now passing, though more tests need to be added. (check-in: [01afbf97c0] user: drh branch: orderby-planning, size: 221955) | |
14:30 | [1757f31c7f] part of check-in [b186d8d15a] Make sure the where.c query planner never reports that the number of ORDER BY terms that are satisfied by indices is negative. (check-in: [b186d8d15a] user: drh branch: orderby-planning, size: 221639) | |
14:10 | [d4739c3900] part of check-in [59742dd4c5] First attempt at getting block-sort to work. This is an incremental check-in. There are many problems still to be worked out. (check-in: [59742dd4c5] user: drh branch: orderby-planning, size: 221590) | |
2014-03-18
| ||
20:33 | [3f5de18e74] part of check-in [e258df236b] Make the partial-ORDER-BY information in the query planner available to the SELECT code generator. Still doesn't make a difference in the generated code. (check-in: [e258df236b] user: drh branch: orderby-planning, size: 221570) | |
18:59 | [81eea5ced2] part of check-in [59d49b7fc4] Adjust the query planner to keep track of the number of ORDER BY terms satisfied. Still doesn't do anything with this information. Some tests fail after this check-in, but all failures are believed to be benign. The failures will be addressed at a later stage. (check-in: [59d49b7fc4] user: drh branch: orderby-planning, size: 221376) | |
15:30 | [222e6ed521] part of check-in [b150902579] Experiments with the optimization of ORDER BY and GROUP BY clauses. (check-in: [b150902579] user: drh branch: orderby-planning, size: 220994) | |
2014-03-10
| ||
20:12 | [bb50b5aed4] part of check-in [0769eebd02] Adjustments to the cost computation for the skip-scan query plan, to take into account the fact that a seek has to occur on each skip. (check-in: [0769eebd02] user: drh branch: trunk, size: 221228) | |
2014-03-06
| ||
12:36 | [95d3048587] part of check-in [4a4997221f] Remove a branch that is never taken from where.c. (check-in: [4a4997221f] user: dan branch: trunk, size: 221139) | |
2014-03-03
| ||
14:45 | [2269342f82] part of check-in [e00ed717fb] Merge latest trunk changes. (check-in: [e00ed717fb] user: dan branch: experimental, size: 221118) | |
14:20 | [e4b57d81d2] part of check-in [7fdd378d54] Fix a segfault that can occur following an OOM error. (check-in: [7fdd378d54] user: dan branch: trunk, size: 221106) | |
2014-03-01
| ||
19:44 | [36ef94b653] part of check-in [3861e85310] Remove the vdbeRecordCompareLargeHeader function. Fix some other details. (check-in: [3861e85310] user: dan branch: experimental, size: 221097) | |
2014-02-26
| ||
19:05 | [655b8fc185] part of check-in [3ad687b7aa] Only run the OP_OpenRead opcodes for a correlated subquery once, on the initial iteration. Keep the cursor open for subsequent runs. This was suppose to be a performance enhancement, but it is difficult to come up with a query where is makes a significant difference. Hence, the change is getting parked in a branch. (check-in: [3ad687b7aa] user: drh branch: open-only-once, size: 221297) | |
02:26 | [6042e1a377] part of check-in [dca1945aeb] Improved handling of constants and especially constant functions in the ORDER BY clause of a query. Do not optimize out "ORDER BY random()". Fix for ticket [65bdeb9739605cc2296]. (check-in: [dca1945aeb] user: drh branch: trunk, size: 221085) | |
2014-02-25
| ||
21:55 | [0b5a4d45fd] part of check-in [97a8c9733c] Do not allow temporary registers to be in use across an OP_Yield within a co-routine. Fix for ticket [8c63ff0eca81a9132d8]. (check-in: [97a8c9733c] user: drh branch: trunk, size: 221489) | |
2014-02-18
| ||
03:07 | [d622974f30] part of check-in [b92d31a97d] Add VdbeCoverage() and VdbeCoverageIf() macros for improved VDBE coverage testing. (check-in: [b92d31a97d] user: drh branch: trunk, size: 221519) | |
2014-02-17
| ||
22:40 | [7825dce3f9] part of check-in [ce184c7bb1] Add logic to do test coverage measurements on the VDBE code. (check-in: [ce184c7bb1] user: drh branch: insert-optimization, size: 220476) | |
2014-02-14
| ||
23:49 | [7d9c988741] part of check-in [e07a32f308] Seek past NULLs in a top-constrained search. Avoid checking for NULLs in the body of the search. (check-in: [e07a32f308] user: drh branch: trunk, size: 219787) | |
20:59 | [bf849f08ee] part of check-in [3c1ae447de] Reduce the number of cases where it is necessary to check for NULL after the loop terminating condition. (check-in: [3c1ae447de] user: drh branch: trunk, size: 220065) | |
15:13 | [43eb827f10] part of check-in [b6bea903ac] Add OP_IdxGT and OP_IdxLE as distinct opcodes. Formerly these operations where done using OP_IdxGE and OP_IdxLT with the P5 flag set. But VDBE code is easier to read with distinct opcode names. Also change OP_SeekGe to OP_SeekGE, and so forth, so that the capitalization is consistent. The whole point of this change is to improve the readability of VDBE listings. (check-in: [b6bea903ac] user: drh branch: trunk, size: 220150) | |
2014-02-11
| ||
03:50 | [540f52385a] part of check-in [de635e0960] Make sure that virtual WHERE-clause terms do not get transformed into real terms when processing set of OR-connected terms. Fix for ticket [4c86b126f22ad]. (check-in: [de635e0960] user: drh branch: branch-3.8.3, size: 219267) | |
01:50 | [b0436385f4] part of check-in [c950d6c411] Make sure that virtual WHERE-clause terms do not get transformed into real terms when processing set of OR-connected terms. Fix for ticket [4c86b126f22ad]. (check-in: [c950d6c411] user: drh branch: trunk, size: 220057) | |
2014-02-08
| ||
23:20 | [90fef20dd1] part of check-in [1e64dd782a] Do away with the "multi-register pseudo-table" abstration. Instead, just use an OP_SCopy to load results directory from the result registers of the co-routine. (check-in: [1e64dd782a] user: drh branch: trunk, size: 219929) | |
13:12 | [30fd77c349] part of check-in [129217ee91] Tweaks to the generated VDBE code to make it a little easier to follow. (check-in: [129217ee91] user: drh branch: trunk, size: 219192) | |
01:40 | [924f24a04b] part of check-in [192dea9731] Change the OP_Trace opcode to OP_Init and give it the ability to jump to the initialization code at the bottom of the program, thus avoiding the need for an extra OP_Goto. (check-in: [192dea9731] user: drh branch: trunk, size: 219199) | |
2014-02-07
| ||
19:18 | [8c2aada8b4] part of check-in [a522f364a6] Change the OP_InitCoroutine instruction to jump over the co-routine implementation. (check-in: [a522f364a6] user: drh branch: coroutine-refactor, size: 219263) | |
18:27 | [07179d15d7] part of check-in [1ec0e9dd4b] Get rid of the OP_Undef and OP_IsUndef opcodes in favor of higher-level OP_InitCoroutine and OP_EndCoroutine. (check-in: [1ec0e9dd4b] user: drh branch: coroutine-refactor, size: 219260) | |
2014-02-06
| ||
03:31 | [087307272e] part of check-in [715fac7749] Use OpenHash instead of OpenEphemeral for the RHS of IN operators if the result is not needed for sorting. (check-in: [715fac7749] user: drh branch: subquery-codegen-refactor, size: 219522) | |
2014-02-03
| ||
14:04 | [bacb79fb31] part of check-in [6c643e45c2] Provide hints to the btree layer Next and Previous primitives to let them know if they can be no-ops if the underlying index is unique. (check-in: [6c643e45c2] user: drh branch: trunk, size: 219301) | |
2014-01-28
| ||
00:49 | [549067bd1c] part of check-in [a2c347faf9] Provide hints to the btree layer Next and Previous primitives to let them know if they can be no-ops if the underlying index is unique. (check-in: [a2c347faf9] user: drh branch: branch-3.8.2, size: 218779) | |
2014-01-22
| ||
10:22 | [67ae3b5e97] part of check-in [cceacc0e79] Fix a typo in a comment. No changes to code or tests. (check-in: [cceacc0e79] user: dan branch: cte-via-queue, size: 219139) | |
00:23 | [943bb82104] part of check-in [5e6c4a55f6] Remove an unnecessary parameter from selectInnerLoop(). Clean up comments. (check-in: [5e6c4a55f6] user: drh branch: cte-via-queue, size: 219141) | |
2014-01-21
| ||
22:25 | [d908f4e9e4] part of check-in [b2671e1133] Change the recursive common table expression algorithm to use a queue instead of a pair of tables. Runs about 25% faster on the sudoku solver query. The OP_SwapCursors opcode is no longer required. The current implementation uses just a fifo, but the plan is to change it into a queue that will support ORDER BY and LIMIT in a recursive query. (check-in: [b2671e1133] user: drh branch: cte-via-queue, size: 218993) | |
2014-01-20
| ||
19:55 | [56f85486bc] part of check-in [7d9e22187d] In where.c, do not allocate space in sqlite3_index_info structures for the internal WHERE clause "terms" generated to record column equivalencies. Fix for ticket [1a1a194d1e5f8]. (check-in: [7d9e22187d] user: dan branch: trunk, size: 218907) | |
2014-01-17
| ||
15:15 | [5e11de480a] part of check-in [0171e3bb4f] Add support for common table expressions (WITH clauses). (check-in: [0171e3bb4f] user: dan branch: trunk, size: 218791) | |
2014-01-16
| ||
18:34 | [369b0259fa] part of check-in [a296b73360] Allow only a single recursive reference in a recursive CTE. Also require that this reference is not part of a sub-query. (check-in: [a296b73360] user: dan branch: common-table-expr, size: 218767) | |
15:31 | [81cec50fe7] part of check-in [16bd54783a] Always use available indices to optimize LIKE operators even if the pattern of the LIKE operator has a COLLATE modifier. This fixes an ineffiency that was introduced into 3.7.15 by check-in [8542e6180d4] on 2012-12-08. (check-in: [16bd54783a] user: drh branch: trunk, size: 218766) | |
2014-01-15
| ||
19:42 | [27eb508c41] part of check-in [3908e2ea2e] Fixes so that SQLITE_OMIT_CTE builds work. (check-in: [3908e2ea2e] user: dan branch: common-table-expr, size: 218963) | |
18:21 | [9448a176c1] part of check-in [28aa6db8c8] Disable automatic indices on recursive CTE references. (check-in: [28aa6db8c8] user: dan branch: common-table-expr, size: 218932) | |
2014-01-14
| ||
20:14 | [830b42f452] part of check-in [a5c2a54a07] Add code to handle recursive CTEs. (check-in: [a5c2a54a07] user: dan branch: common-table-expr, size: 218907) | |
2014-01-04
| ||
19:27 | [18f07fd0fd] part of check-in [8f6e6149a1] Avoid redundant register loads during index key generation when doing a DELETE or INTEGRITY_CHECK on a table with multiple indices. (check-in: [8f6e6149a1] user: drh branch: trunk, size: 218742) | |
14:16 | [14403429f7] part of check-in [19f3208b26] Have the planner detect cases where a MATCH constraint is applied to a virtual table, and ignore any plans that do not allow the virtual table implementation to implement the MATCH filtering. (check-in: [19f3208b26] user: dan branch: avoid-unusable-match, size: 219083) | |
2014-01-02
| ||
21:05 | [8e3cb2030e] part of check-in [9d05777fe2] Try to factor constant subcomponents of the WHERE clause out of the loop. (check-in: [9d05777fe2] user: drh branch: trunk, size: 218736) | |
2013-12-23
| ||
15:35 | [3b589eee28] part of check-in [ac5852d640] Make sure the WhereLoop.aLTerm[] array is large enough when processing the skip-scan optimization. Fix for ticket [520070ec7fbaac]. (check-in: [ac5852d640] user: drh branch: branch-3.8.2, size: 218617) | |
2013-12-22
| ||
20:44 | [60bc8c5b00] part of check-in [46d040591f] Make sure the WhereLoop.aLTerm[] array is large enough when processing the skip-scan optimization. Fix for ticket [520070ec7fbaac]. (check-in: [46d040591f] user: drh branch: trunk, size: 218615) | |
2013-12-09
| ||
19:03 | [b8f3aab1e5] part of check-in [9227ad48e1] Performance optimizations for sqlite3VXPrintf(). (check-in: [9227ad48e1] user: drh branch: trunk, size: 218549) | |
2013-12-07
| ||
23:35 | [34cf769795] part of check-in [bfefc57554] Do not allow cursor hints to use expressions containing subqueries. This change fixes the problem seen in the previous check-in. (check-in: [bfefc57554] user: drh branch: cursor-hints, size: 219940) | |
20:39 | [c3bdcd3886] part of check-in [3a9bec524e] If the SQLITE_ENABLE_CURSOR_HINTS macro is defined, then invoke the sqlite3BtreeCursorHint() interface to provide hints to the storage engine about rows that need not be returned. Hints can be disabled using SQLITE_TESTCTRL_OPTIMIZATIONS with SQLITE_CursorHints (0x2000). Cursor hints are not used by the built-in storage engine of SQLite but might be useful to applications that provide their own storage engine. The current code is work-in-progrss and contains bugs. (check-in: [3a9bec524e] user: drh branch: cursor-hints, size: 219878) | |
2013-12-03
| ||
19:49 | [e6a4e713ab] part of check-in [eca7d3f161] Remove a branch in STAT4 logic that is no longer reachable after the previous change. (check-in: [eca7d3f161] user: drh branch: trunk, size: 218551) | |
2013-11-27
| ||
04:22 | [e0a9909a58] part of check-in [83c0bb9913] Lower the threshold for using skip-scan from 50 to 18, based on experiments that show that 18 is the approximate break-even point for a variety of schemas. (check-in: [83c0bb9913] user: drh branch: trunk, size: 218603) | |
2013-11-21
| ||
03:12 | [e558bfa670] part of check-in [ecaac28a2e] Performance optimization to the OP_Next and OP_Prev opcodes. (check-in: [ecaac28a2e] user: drh branch: trunk, size: 218471) | |
2013-11-19
| ||
12:33 | [aa72ba871f] part of check-in [3e577f4018] Change Noop-comments in where.c into Module-comments, so that they are omitting without SQLITE_ENABLE_MODULE_COMMENTS. (check-in: [3e577f4018] user: drh branch: trunk, size: 218459) | |
2013-11-18
| ||
19:32 | [c0a9bab3e7] part of check-in [e9df04cec4] Add comments identifing where the skip-scan option is decided in the query planner, to aid in tuning that decision. No changes to code. (check-in: [e9df04cec4] user: drh branch: trunk, size: 218449) | |
2013-11-16
| ||
14:03 | [de64e326bb] part of check-in [de08a7e7ab] Avoid unnecessary OP_IfNull checks when doing a range query where there is a constraint on the lower bound of the range. (check-in: [de08a7e7ab] user: drh branch: trunk, size: 218199) | |
2013-11-15
| ||
18:15 | [c7d50e26ba] part of check-in [d10fb49a92] Changes to make the new constant expression factoring logic more general and more testable. (check-in: [d10fb49a92] user: drh branch: expr-codegen-enhancement, size: 218144) | |
12:41 | [6e7e932ee3] part of check-in [372686bfbb] Simplify the range scan code generate while also avoiding an unnecessary OP_Affinity opcode. (check-in: [372686bfbb] user: drh branch: expr-codegen-enhancement, size: 218195) | |
01:10 | [9bff77c96e] part of check-in [8dc5c76c76] Rework the logic that factors constant expressions out of inner loops, making it both simpler and faster. (check-in: [8dc5c76c76] user: drh branch: expr-codegen-enhancement, size: 218482) | |
2013-11-14
| ||
19:34 | [9d0b21b65b] part of check-in [10d5922638] Remove an unused local variable. (check-in: [10d5922638] user: drh branch: trunk, size: 218526) | |
2013-11-13
| ||
19:01 | [2eb88f96a7] part of check-in [f668616a29] Import the "PRAGMA vdbe_eqp" enhancement and the enhanced EXPLAIN formatting the shell from trunk. Fix a bug in skip-scan and add a test case to prevent a regression. (check-in: [f668616a29] user: drh branch: skip-scan, size: 218575) | |
17:58 | [537f4d7e86] part of check-in [8ce33f4c81] Add the "PRAGMA vdbe_eqp" command, only available with SQLITE_DEBUG. Simplify some of the other debugging logic. (check-in: [8ce33f4c81] user: drh branch: trunk, size: 216205) | |
17:24 | [1d19a1d49a] part of check-in [0c85d93b52] Add VDBE comments to the beginning and end of skip-scan loops. (check-in: [0c85d93b52] user: drh branch: skip-scan, size: 218516) | |
16:58 | [f50428d2e9] part of check-in [5e75ab9388] Improve the way that skip-scan loops are constructued. Add test cases. Improved the scoring of skip-scan loops. (check-in: [5e75ab9388] user: drh branch: skip-scan, size: 218378) | |
12:27 | [15170b1526] part of check-in [27dd5993d1] Add the ability to use an index even if the left-most columns of the index are unconstrainted, provided that the left-most columns have few distinct values. (check-in: [27dd5993d1] user: drh branch: skip-scan, size: 218367) | |
08:55 | [346944c20b] part of check-in [5196000930] Avoid an unnecessary OP_IfNull while doing an indexed search. (check-in: [5196000930] user: drh branch: trunk, size: 216174) | |
2013-11-12
| ||
20:18 | [48404454d7] part of check-in [0d1328e33c] Minor enhancements to the auxiliary information added to EXPLAIN output with SQLITE_EXPLAIN_ENABLE_COMMENTS. (check-in: [0d1328e33c] user: drh branch: trunk, size: 216030) | |
18:37 | [7ce9564fc4] part of check-in [c444671246] Break out the structure and macro definitions of where.c into a separate header file whereInt.h for easier editing and debugging. (check-in: [c444671246] user: drh branch: trunk, size: 215947) | |
12:17 | [a80cab07e9] part of check-in [e2684ece45] Fix for [4065ac8595]: Do not order CROSS or LEFT joins, even if the right-hand-side is a virtual table. (check-in: [e2684ece45] user: dan branch: trunk, size: 236483) | |
2013-11-11
| ||
19:01 | [85766647d6] part of check-in [5a3cfd747a] Add a way for virtual tables to return the expected number of rows for a scan (not just the overall cost) to SQLite. Have the rtree module make use of this. (check-in: [5a3cfd747a] user: dan branch: trunk, size: 236507) | |
16:55 | [2c2a593157] part of check-in [924d63b283] Remove unreachable code, replacing it in most cases with assert() or NEVER() macros. (check-in: [924d63b283] user: drh branch: trunk, size: 236467) | |
2013-11-08
| ||
17:13 | [748cabee9c] part of check-in [0077c0772a] Fix harmless compiler warnings. (check-in: [0077c0772a] user: drh branch: trunk, size: 236319) | |
15:19 | [1b5780b645] part of check-in [6f187a0fb1] Performance improvements: Avoid unnecessary seeks when doing a single-row UPDATE on a WITHOUT ROWID table. (check-in: [6f187a0fb1] user: drh branch: trunk, size: 236317) | |
2013-11-07
| ||
21:25 | [30462cf041] part of check-in [2153079855] Enable the WHERE_ONEPASS_DESIRED optimization for UPDATE operations on WITHOUT ROWID tables. (check-in: [2153079855] user: drh branch: trunk, size: 234206) | |
2013-11-06
| ||
19:59 | [1a99f1275f] part of check-in [defd5205a7] Reference count the KeyInfo object. Cache a copy of an appropriate KeyInfo for each index in the Index object, and reuse that one copy as much as possible. (check-in: [defd5205a7] user: drh branch: omit-rowid, size: 234177) | |
12:56 | [ce16448190] part of check-in [8f1709ff2d] Improved ORDER BY optimization for WITHOUT ROWID tables. (check-in: [8f1709ff2d] user: drh branch: omit-rowid, size: 234326) | |
12:05 | [1df23d22ea] part of check-in [6055dad2ba] Disable the OR optimization for WITHOUT ROWID tables, since it relies on the use of rowids. (check-in: [6055dad2ba] user: drh branch: omit-rowid, size: 234161) | |
2013-10-31
| ||
17:38 | [4e472e13ca] part of check-in [cff1f55c52] Fix issues with quering from an auxiliary index that must refer back to the PRIMARY KEY index of a WITHOUT ROWID table. (check-in: [cff1f55c52] user: drh branch: omit-rowid, size: 234112) | |
2013-10-28
| ||
22:39 | [3dc37f7984] part of check-in [9f8191d1d8] Merge recent fixes from trunk. (check-in: [9f8191d1d8] user: drh branch: omit-rowid, size: 233923) | |
22:33 | [f18400f121] part of check-in [3a9e3ed94b] Formatting improvements to the WHERE-clause constraint display in the wheretrace debugging logic. (check-in: [3a9e3ed94b] user: drh branch: trunk, size: 233473) | |
20:15 | [626e04bea7] part of check-in [9aac4e588c] Do not use transitive WHERE-clause constraints on LEFT JOINs. Fix for ticket [c620261b5b5dc]. (check-in: [9aac4e588c] user: drh branch: trunk, size: 233594) | |
19:59 | [0490bd61f1] part of check-in [92ccd70541] More wheretrace debugging support: Show a listing of all WHERE clause terms (on wheretrace bit 0x100) and include important flags such as TERM_VIRTUAL, WO_EQUIV, and EP_FromJoin. (check-in: [92ccd70541] user: drh branch: trunk, size: 233499) | |
19:03 | [65ff0a3241] part of check-in [10f125f5da] Bug fix and enhancements to the improved wheretrace logic that shows the constraint expressions. (check-in: [10f125f5da] user: drh branch: trunk, size: 232443) | |
14:34 | [8eaf13f304] part of check-in [710a18ac79] Improved "wheretrace" capabilities: Show the constraint expression if the wheretrace flag has the 0x100 bit set and if compiled with SQLITE_ENABLE_TREE_EXPLAIN. (check-in: [710a18ac79] user: drh branch: trunk, size: 232205) | |
2013-10-25
| ||
14:46 | [512ddbf288] part of check-in [9eafafa31c] Basic DELETE operations now working on WITHOUT ROWID tables. (check-in: [9eafafa31c] user: drh branch: omit-rowid, size: 231949) | |
2013-10-24
| ||
14:16 | [04217a957c] part of check-in [0e56ba69f0] Delete PRIMARY KEY index entries last. Only construct the unique prefix of an index key when deleting entries from an index. (check-in: [0e56ba69f0] user: drh branch: omit-rowid, size: 231952) | |
00:18 | [b5f5244d53] part of check-in [d8bc859530] Correctly handle queries that use secondary indices of WITHOUT ROWID tables. (check-in: [d8bc859530] user: drh branch: omit-rowid, size: 231952) | |
2013-10-23
| ||
23:37 | [3dcdb09121] part of check-in [247f389930] Change the sqlite3OpenTable() utility to open the PRIMARY KEY index when reading a WITHOUT ROWID table. (check-in: [247f389930] user: drh branch: omit-rowid, size: 231406) | |
22:23 | [13add0a866] part of check-in [2c028ddc85] Construct secondary indices on WITHOUT ROWID tables. (check-in: [2c028ddc85] user: drh branch: omit-rowid, size: 231388) | |
01:57 | [f9e7662714] part of check-in [3f8016dee2] Some simple inserts and queries working on WITHOUT ROWID tables. (check-in: [3f8016dee2] user: drh branch: omit-rowid, size: 231396) | |
2013-10-22
| ||
18:01 | [32b6e99b43] part of check-in [a106ce86cd] The Index object now has nKeyCol and nColumn. nColumn is the total number of columns and nKeyCol is the number of key columns. Currently these always differ by one. Refactor aiColumn[] to be of type i16 instead of int. (check-in: [a106ce86cd] user: drh branch: omit-rowid, size: 231152) | |
14:28 | [a5253015dc] part of check-in [45efc94f9a] Add a procedure to handle the messy details of allocating an Index object from the heap. (check-in: [45efc94f9a] user: drh branch: omit-rowid, size: 231163) | |
2013-10-11
| ||
15:05 | [dd2d0d6928] part of check-in [7df06684ab] Fix various harmless compiler warnings. Change the "warnings.sh" script to work with STAT4 instead of STAT3. (check-in: [7df06684ab] user: drh branch: trunk, size: 231499) | |
2013-10-08
| ||
20:42 | [8dd4cb208b] part of check-in [65553ff34b] Rollback some of the previous changes in the branch such that the estimated row sizes are now only used as a tie-breaker for index scans. (check-in: [65553ff34b] user: drh branch: row-size-est, size: 231473) | |
18:40 | [2a04ab5856] part of check-in [18bd6ba96d] Further refinement of the idea of multiplying run-time cost estimates by the estimated row size. (check-in: [18bd6ba96d] user: drh branch: row-size-est, size: 231814) | |
2013-10-07
| ||
17:32 | [ad5e680c0b] part of check-in [cb34cfe57c] Multiply all cursor step cost estimates by the estimated size of the row in bytes, in order to get the query planner ot make use of estimated row sizes. This check-in uses magic numbers in a few places (for example, estimates of the size of output rows) and needs lots of refinement. Consider this a proof-of-concept only. (check-in: [cb34cfe57c] user: drh branch: row-size-est, size: 231369) | |
16:53 | [7916e32a4d] part of check-in [8e78557a40] Try to remember statistics from ANALYZE using LogEst instead of u64. (check-in: [8e78557a40] user: drh branch: log-stats, size: 231370) | |
2013-10-05
| ||
19:18 | [72c6c205e5] part of check-in [8b4aa0c7a2] Completely remove the iScanRatio field. The PRAGMA index_list(TABLE) command shows the estimated row size in the forth column. It also generates a row for the table with an index name of NULL. The query planner still does not take row size estimates into account - that is the next step. (check-in: [8b4aa0c7a2] user: drh branch: row-size-est, size: 231167) | |
18:16 | [7b98d09e0e] part of check-in [66c4a251d6] Begin an experimental refactoring to estimate the average number of bytes in table and index rows and to use that information in query planner. Begin by renaming WhereCost to LogEst and making that type and its conversion routines available outside of where.c. (check-in: [66c4a251d6] user: drh branch: row-size-est, size: 231210) | |
2013-10-04
| ||
02:36 | [903e295f94] part of check-in [6c352edbba] Progress toward using the iScanRatio information on indices. Many tests are still failing. (check-in: [6c352edbba] user: drh branch: index-scan-rate, size: 234264) | |
2013-09-30
| ||
19:33 | [d8c2c5ff3a] part of check-in [9c9fa151e9] Fix a minor typo in a comment in where.c. (check-in: [9c9fa151e9] user: drh branch: trunk, size: 234627) | |
2013-09-12
| ||
17:29 | [d2f58a441b] part of check-in [4c84d1b4c2] Merge in the Expr.flags expansion to 32-bits. Use an extra bit to help optimize the sqlite3ExprSkipCollate() routine. (check-in: [4c84d1b4c2] user: drh branch: unlikely-func, size: 234628) | |
2013-09-11
| ||
17:39 | [47a9d554aa] part of check-in [6e6bded055] Improvements to likelihood processing so that commuting an unindexed term in the WHERE clause does not change the query plan. (check-in: [6e6bded055] user: drh branch: unlikely-func, size: 234627) | |
14:34 | [74beca7152] part of check-in [5d00cce74a] Additional unlikely() test cases. Logic tweaks to support test coverage. (check-in: [5d00cce74a] user: drh branch: unlikely-func, size: 234683) | |
03:53 | [6b9e2bc47d] part of check-in [52d5268864] Tweaks to the index selection logic. (check-in: [52d5268864] user: drh branch: unlikely-func, size: 234675) | |
2013-09-10
| ||
01:53 | [05cf31505d] part of check-in [a51d751553] Merge trunk fixes into the unlikely-func branch. (check-in: [a51d751553] user: drh branch: unlikely-func, size: 234588) | |
2013-09-09
| ||
19:37 | [b5d59b899b] part of check-in [d6e361d7fb] Make sure that the transitive constraint optimization does not cause WHERE clause terms to be disabled prematurely. We are unable to find a test case that fails because of this, but it seems prudent to make this preventative change nevertheless. (check-in: [d6e361d7fb] user: drh branch: trunk, size: 232424) | |
2013-09-07
| ||
00:29 | [613cfc35ba] part of check-in [b65dc53415] Continuing refinements of the logic to take WHERE clause terms not used for indexing into account when computing the number of output rows from each table. (check-in: [b65dc53415] user: drh branch: unlikely-func, size: 234487) | |
2013-09-06
| ||
17:45 | [ce16c689b9] part of check-in [1a46a72423] Enhance the plan solver to take into account the number of output rows when computing the set of paths to retain for the next cycle. (check-in: [1a46a72423] user: drh branch: unlikely-func, size: 234283) | |
15:23 | [c9f8ae5179] part of check-in [036fc37a03] Initial implementation of the unlikely() SQL function used as a hint to the query planner. (check-in: [036fc37a03] user: drh branch: unlikely-func, size: 233765) | |
00:40 | [06c249a513] part of check-in [a99a53b81e] Make sure the destination WhereLoop is left in a sane state when an OOM fault occurs inside of whereLoopXfer(). (check-in: [a99a53b81e] user: drh branch: trunk, size: 232323) | |
2013-09-04
| ||
18:14 | [613993bd44] part of check-in [8462fb43c2] Rearrange the order of conditions in an "if" statement to facilitate testing. (check-in: [8462fb43c2] user: drh branch: trunk, size: 232274) | |
04:04 | [95a351c94e] part of check-in [8df95bb0b3] Fix out-of-order variable declaration. Fix harmless compiler warning. (check-in: [8df95bb0b3] user: mistachkin branch: trunk, size: 232273) | |
2013-09-03
| ||
19:26 | [1fe091c694] part of check-in [91d2cfbc95] Harden the STAT4 logic in where.c against OOM faults. (check-in: [91d2cfbc95] user: drh branch: trunk, size: 232273) | |
14:33 | [51f55344b1] part of check-in [cce541864d] Make sure the omit-noop-left-join optimization is not applied if columns of the LEFT JOIN are used in the ORDER BY clause. Ticket [be84e357c035]. Increase version number to 3.8.0.2. (check-in: [cce541864d] user: drh branch: branch-3.8.0, size: 231445) | |
14:03 | [99477e9dd4] part of check-in [0303d6bc71] Make sure the omit-noop-left-join optimization is not applied if columns of the LEFT JOIN are used in the ORDER BY clause. Ticket [be84e357c035] (check-in: [0303d6bc71] user: drh branch: trunk, size: 232173) | |
2013-09-02
| ||
20:22 | [573a815c28] part of check-in [f7079b5365] Simplify branch coverage testing by interchanging the order of two tests in the whereLoopInsert() function. (check-in: [f7079b5365] user: drh branch: trunk, size: 232163) | |
07:16 | [a37169b46f] part of check-in [c21f58d848] Fix a problem with using stat4 data to estimate the number of rows scanned by a range constraint on the second or subsequent column of any index where an affinity transformation must be applied to the constraint argument. (check-in: [c21f58d848] user: dan branch: trunk, size: 232163) | |
2013-08-30
| ||
17:50 | [83f6106e0e] part of check-in [1e0b77cf0e] Fix comment typos in the where.c module. No code changes. (check-in: [1e0b77cf0e] user: drh branch: trunk, size: 232074) | |
17:35 | [97fc542b38] part of check-in [79e458ef7a] If the cost of two whereLoop objects is the same in every way except that one has fewer expected output rows than the other, then choose the one with fewer output rows. (check-in: [79e458ef7a] user: drh branch: trunk, size: 232070) | |
2013-08-29
| ||
14:56 | [cad6497f79] part of check-in [d4b6ad3333] Restore fix [f15591f802], which was accidentally clobbered by the stat4 merge. (check-in: [d4b6ad3333] user: dan branch: trunk, size: 231932) | |
13:21 | [a9ec7caba7] part of check-in [cb667449d0] In the query optimizer, when converting BETWEEN and LIKE/GLOB expressions into simpler forms for processing, be sure to transfer the LEFT JOIN markings. Fix for ticket [bc878246eafe0f52c]. Cherrypick of [caab361ebe]. (check-in: [cb667449d0] user: drh branch: branch-3.8.0, size: 231435) | |
13:15 | [53ac244126] part of check-in [c3f75941e5] Cherrypick of [c1152bdcbb] and fix for [9f2eb3abac]: Have the whereShortCut() planner ignore indexes with more than four columns. (check-in: [c3f75941e5] user: drh branch: branch-3.8.0, size: 231276) | |
10:46 | [dab4d4b8f4] part of check-in [c1152bdcbb] Candidate fix for [9f2eb3abac]: Have the whereShortCut() planner ignore indexes with more than four columns. (check-in: [c1152bdcbb] user: dan branch: trunk, size: 231915) | |
2013-08-28
| ||
18:18 | [e0b70ec707] part of check-in [12d0a8859d] Add the win32-longpath VFS allowing windows filenames up to 32K characters in length. Remove unused code when -DSQLITE_MAX_MMAP_SIZE=0. Fix some compiler warnings on windows. (check-in: [12d0a8859d] user: drh branch: trunk, size: 231799) | |
16:27 | [6a82cd9edf] part of check-in [caab361ebe] In the query optimizer, when converting BETWEEN and LIKE/GLOB expressions into simpler forms for processing, be sure to transfer the LEFT JOIN markings. Fix for ticket [bc878246eafe0f52c]. (check-in: [caab361ebe] user: drh branch: trunk, size: 231794) | |
01:54 | [ee148dd577] part of check-in [8917e9f9a0] Fix several harmless compiler warnings. Fix a couple compiler issues with the shell. (check-in: [8917e9f9a0] user: mistachkin branch: mmapDisabled, size: 231165) | |
2013-08-27
| ||
23:15 | [289bfa2392] part of check-in [67a9a392ed] Adjust ANALYZE for improved test coverage. Use the SQLITE_ENABLE_STAT3_OR_STAT4 macro (created in sqliteInt.h) to conditionally include code, instead of a boolean specifying both macros separately. (check-in: [67a9a392ed] user: drh branch: trunk, size: 231635) | |
2013-08-26
| ||
23:18 | [18cd15160c] part of check-in [a32af0abe5] Merge the STAT4 capability into trunk. (check-in: [a32af0abe5] user: drh branch: trunk, size: 231935) | |
2013-08-23
| ||
17:33 | [6e718c39d6] part of check-in [ed31020162] Adjust #ifdefs to get SQLITE_OMIT_AUTOMATIC_INDEX and SQLITE_OMIT_PAGER_PRAGMAS to build. (check-in: [ed31020162] user: drh branch: trunk, size: 231160) | |
2013-08-22
| ||
02:56 | [8596edcfbf] part of check-in [0775501acf] Defer the creation of automatic indices until the index is actually used. (check-in: [0775501acf] user: drh branch: trunk, size: 231083) | |
2013-08-20
| ||
17:14 | [0ced8882ca] part of check-in [ef192abb82] Fix an invalid assert() in where.c. Also a crash that can occur in the EXPLAIN QUERY PLAN code under obscure circumstances. (check-in: [ef192abb82] user: dan branch: trunk, size: 230874) | |
17:00 | [1a020a02c9] part of check-in [e476408e3c] Ignore IS NOT NULL and NOT NULL constraints on NOT NULL columns. (check-in: [e476408e3c] user: drh branch: trunk, size: 230813) | |
2013-08-19
| ||
19:29 | [03a50ecb2f] part of check-in [d6c4d48a00] Initialize a variable in fts3_write.c on the grounds that the argument required to show that it does not require initialization with is complicated. Add an assert() to where.c to silence a clang scan-build warning. (check-in: [d6c4d48a00] user: dan branch: trunk, size: 230813) | |
14:19 | [be91b3d110] part of check-in [f15591f802] Fix a potential reference off the end of an array in the query planner. (check-in: [f15591f802] user: drh branch: trunk, size: 230793) | |
11:15 | [67a823e781] part of check-in [a0d9ca4f07] Fixes for harmless compiler warnings. (check-in: [a0d9ca4f07] user: drh branch: trunk, size: 230772) | |
2013-08-16
| ||
14:49 | [9be69c42a0] part of check-in [dc1ccd09c4] Fix valueFromExpr() so that it returns SQLITE_NOMEM following an OOM when changing text encodings. Also fix some asserts to accommodate OOM errors. (check-in: [dc1ccd09c4] user: drh branch: sqlite_stat4, size: 231534) | |
2013-08-12
| ||
20:14 | [d97b5cb215] part of check-in [cca8bf4372] If ENABLE_STAT3 is defined but ENABLE_STAT4 is not, have ANALYZE create and populate the sqlite_stat3 table instead of sqlite_stat4. (check-in: [cca8bf4372] user: dan branch: sqlite_stat4, size: 231423) | |
09:29 | [c1090a2769] part of check-in [088d1ff948] Fix minor problems caused by adding the rowid to the records in stat4. (check-in: [088d1ff948] user: dan branch: sqlite_stat4, size: 230917) | |
2013-08-10
| ||
19:08 | [adf476146f] part of check-in [3a5e8ab7dd] Add the rowid field to the end of sample records stored in the sqlite_stat4 table. (check-in: [3a5e8ab7dd] user: dan branch: sqlite_stat4, size: 230890) | |
2013-08-08
| ||
19:38 | [0e058c33d0] part of check-in [9228aaf54d] Fix problems in estimating the number of rows visited by a range query using sqlite_stat4 data when the column subject to the range query is not the leftmost of the index. (check-in: [9228aaf54d] user: dan branch: sqlite_stat4, size: 230770) | |
16:17 | [2323663d07] part of check-in [e50dc30523] Use a binary search instead of a linear scan when comparing a sample key against data from the sqlite_stat4 table. (check-in: [e50dc30523] user: dan branch: sqlite_stat4, size: 229238) | |
12:21 | [a14294548b] part of check-in [9fec3e3828] Fix a segfault in "ALTER TABLE t1 ADD COLUMN b DEFAULT (-+1)". Also an assert() failure that could occur if SQLITE_ENABLE_STAT4 were not defined. (check-in: [9fec3e3828] user: dan branch: sqlite_stat4, size: 228176) | |
11:48 | [5ea698bd91] part of check-in [f783938ea9] Fix a bug in using stat4 data to estimate the number of rows selected by a range constraint. (check-in: [f783938ea9] user: dan branch: sqlite_stat4, size: 228099) | |
2013-08-07
| ||
19:46 | [c973297fc2] part of check-in [7b70b419c4] Replace variable Index.avgEq (average number of rows in keys for which there is no sample in sqlite_stat4) with vector Index.aAvgEq. (check-in: [7b70b419c4] user: dan branch: sqlite_stat4, size: 228464) | |
18:42 | [0051a36404] part of check-in [08f74c45ec] Merge latest trunk changes with this branch. (check-in: [08f74c45ec] user: dan branch: sqlite_stat4, size: 228354) | |
15:52 | [4e188dc4a1] part of check-in [353950a526] When estimating the number of rows scanned using data from the sqlite_stat4 table, avoid allocating UnpackedRecord and KeyInfo structures until they are definitely required. (check-in: [353950a526] user: dan branch: sqlite_stat4, size: 228356) | |
01:18 | [ea01a52eb3] part of check-in [f8d8790ede] Fix typos and add clarification to comments in where.c. No code changes. (check-in: [f8d8790ede] user: drh branch: trunk, size: 230738) | |
2013-08-06
| ||
20:15 | [142525786b] part of check-in [84999e27cc] Fixes for builds without SQLITE_ENABLE_STAT4. (check-in: [84999e27cc] user: dan branch: sqlite_stat4, size: 228582) | |
20:01 | [37c3dc9e9f] part of check-in [2973f5ca73] When possible, use the multi-column samples in sqlite_stat4 to estimate the number of index rows scanned by a query plan. (check-in: [2973f5ca73] user: dan branch: sqlite_stat4, size: 228539) | |
2013-08-03
| ||
20:24 | [072abd8556] part of check-in [2beea303a1] Begin adding experimental sqlite_stat4 table. This commit is buggy. (check-in: [2beea303a1] user: dan branch: sqlite_stat4, size: 228227) | |
2013-08-02
| ||
23:40 | [67245bb73f] part of check-in [213020769f] Updates to requirements marks. No code changes. (check-in: [213020769f] user: drh branch: trunk, size: 230740) | |
16:41 | [30a9f5e4ac] part of check-in [478113f18b] Add support for partial indices. (check-in: [478113f18b] user: drh branch: trunk, size: 231742) | |
2013-08-01
| ||
17:21 | [38264830c3] part of check-in [127a5b776d] An improved method for avoiding the use of the STAT3 samples to compute the estimated number of outputs when the left-most index is equality constrained. This check-in undoes the previous fix and applies a new one. (check-in: [127a5b776d] user: drh branch: trunk, size: 231087) | |
16:52 | [fe1d056ffa] part of check-in [31b4e63b3c] Avoid using left-most column STAT3 samples if the left-most column has an equality constrain and there are inequality constraints on the second column. (check-in: [31b4e63b3c] user: drh branch: trunk, size: 231070) | |
15:09 | [5642a0f1d7] part of check-in [0c8cfdfae2] More test cases and corresponding bug fixes. (check-in: [0c8cfdfae2] user: drh branch: partial-indices, size: 231709) | |
12:21 | [bad23a5482] part of check-in [81834c3023] Refactor internal function name sqlite3VdbeGetValue() to sqlite3VdbeGetBoundValue(). (check-in: [81834c3023] user: drh branch: partial-indices, size: 231683) | |
01:14 | [14d48fe735] part of check-in [fb9044d15a] Add the logic to keep partial indices up to date through DML statements and when new partial indices are created. This new logic is untested except to verify that it does not interfere with full indices. (check-in: [fb9044d15a] user: drh branch: partial-indices, size: 231673) | |
2013-07-31
| ||
23:22 | [afa3384267] part of check-in [8ca3eac111] Add logic to the query planner to only use partial indices if the WHERE clause constrains the search to rows covered by the partial index. This is just infrastructure. The key routine, sqlite3ExprImpliesExpr(), is currently a no-op so that partial indices will never be used. (check-in: [8ca3eac111] user: drh branch: partial-indices, size: 231670) | |
2013-07-30
| ||
15:10 | [a55e27475c] part of check-in [eb6d4278b8] Reduce the size of the stack required by the codeOneLoopStart() function in where.c. (check-in: [eb6d4278b8] user: drh branch: trunk, size: 231054) | |
2013-07-18
| ||
14:50 | [1a26c37b7b] part of check-in [5dcffa671f] Fix a 8-byte alignment problem in the query planner that might cause problems on sparc when compiled with -m32. (check-in: [5dcffa671f] user: drh branch: trunk, size: 230928) | |
2013-07-16
| ||
21:31 | [927acb798c] part of check-in [5e19d05410] Enhance the query planner so that it looks at multiple solutions to OR expressions in the WHERE clause. (check-in: [5e19d05410] user: drh branch: trunk, size: 230875) | |
2013-07-09
| ||
03:04 | [f520133450] part of check-in [52a49cbc16] Make sure the schema is verified prior to processing a "WHERE 0" on the first term of a compound SELECT statement. Fix for ticket [490a4b723562429] (check-in: [52a49cbc16] user: drh branch: trunk, size: 229011) | |
2013-07-08
| ||
21:12 | [cd7ef913bb] part of check-in [3b30b75b34] Fix an adverse interaction between the IS NOT NULL optimization (available only with SQLITE_ENABLE_STAT3) and the transitive constraint processing. Fix for ticket [d805526eae253] (check-in: [3b30b75b34] user: drh branch: trunk, size: 229011) | |
2013-07-05
| ||
11:10 | [7867ef5b45] part of check-in [5c906e914b] Add missing "static" qualifier to functions in where.c. (check-in: [5c906e914b] user: dan branch: trunk, size: 228659) | |
2013-07-02
| ||
15:25 | [987eaefc92] part of check-in [91bc840eea] Remove a surplus local variable (check-in: [91bc840eea] user: drh branch: trunk, size: 228645) | |
10:06 | [8fc6dc55ae] part of check-in [4a9d51e792] Fix a minor typo in a comment in where.c. (check-in: [4a9d51e792] user: dan branch: trunk, size: 228667) | |
2013-07-01
| ||
17:27 | [b546b95b70] part of check-in [72919ec34f] Add a missing test that prevented double LEFT JOINs with transitive constraints from working correctly. Fix for ticket [868145d012]. (check-in: [72919ec34f] user: drh branch: trunk, size: 228669) | |
11:05 | [3ea606b128] part of check-in [0d68d4d018] Further minor comment corrections and enhancements in where.c. (check-in: [0d68d4d018] user: drh branch: trunk, size: 228631) | |
10:38 | [789d319334] part of check-in [0ffaab3b9c] Make a trivial comment fix in where.c. (check-in: [0ffaab3b9c] user: drh branch: trunk, size: 228051) | |
2013-06-28
| ||
23:55 | [2c447e3773] part of check-in [338826ef3f] Issue the new SQLITE_WARNING_AUTOINDEX warning on the SQLite log whenever an automatic index is created. (check-in: [338826ef3f] user: drh branch: trunk, size: 228078) | |
21:12 | [b0cdc92ae0] part of check-in [459b317902] Add the SQLITE_DEFAULT_AUTOMATIC_INDEX compile-time option, which if set to zero turns automatic indices off by default. Increase the estimated cost of an automatic index. Additional minor refactoring of the automatic index code. (check-in: [459b317902] user: drh branch: trunk, size: 227807) | |
17:29 | [e110b9efa3] part of check-in [60c19b8679] Add a bit to the SQLITE_TESTCTRL_OPTIMIZATIONS option for sqlite3_file_control() that will disable the use of SQLITE_STAT3 information in the query planner. (check-in: [60c19b8679] user: drh branch: trunk, size: 227607) | |
13:43 | [69c39db238] part of check-in [5480d124b7] Fix an issue with the OmitNoopJoin optimization and add test cases that are specifically for that optimization. (check-in: [5480d124b7] user: drh branch: trunk, size: 227467) | |
2013-06-22
| ||
15:44 | [9bcfcb4ec6] part of check-in [d929df9b1b] Add the ability to disable the omit-join-table optimization for testing purposes. (check-in: [d929df9b1b] user: drh branch: omit-join-table-opt, size: 227157) | |
2013-06-21
| ||
02:15 | [0ca9544cca] part of check-in [d7a25cc797] Only eliminate inner loops of a JOIN if they are the RHS of a LEFT JOIN and if they give no more than a single result. This appears to give correct answers in all cases. (check-in: [d7a25cc797] user: drh branch: omit-join-table-opt, size: 227101) | |
02:05 | [fc5293b54a] part of check-in [ca839723a2] Attempt to disable inner loops of a join that do not generate output. This does not work, since the inner loops might run zero times and thus inhibit all output. Needs to be enhanced to work only for LEFT JOINs or when we know that the inner loop will always run at least once. (check-in: [ca839723a2] user: drh branch: omit-join-table-opt, size: 227041) | |
00:35 | [c950b13158] part of check-in [2c2577e69c] Modify the query planner interface so that it always passes in the result set. This is the first step toward adding an optimization that will omit tables from a join that do not contribute to the result. (check-in: [2c2577e69c] user: drh branch: omit-join-table-opt, size: 226336) | |
2013-06-20
| ||
17:32 | [8d6c07d964] part of check-in [604c3c5de6] Add a NEVER() macro and an explanation comment around an unreachable branch in the STAT3 logic. (check-in: [604c3c5de6] user: drh branch: nextgen-query-plan-exp, size: 226199) | |
2013-06-19
| ||
18:01 | [ac9f8c4ee8] part of check-in [d97898e8e3] Add in the cost of doing a table lookup on OR searches. Make test case changes to deal with difference in STAT3 behavior. (check-in: [d97898e8e3] user: drh branch: nextgen-query-plan-exp, size: 226032) | |
13:59 | [88884f3a03] part of check-in [8d2ae8e2f3] Additional compiler warning fixes. (check-in: [8d2ae8e2f3] user: drh branch: nextgen-query-plan-exp, size: 225952) | |
13:32 | [0d12d709b4] part of check-in [9d3ef3bd2c] Fix a harmless uninitialized variable warning. (check-in: [9d3ef3bd2c] user: drh branch: nextgen-query-plan-exp, size: 225996) | |
12:34 | [e5ecc3d12c] part of check-in [8f27f35f28] Simplify and add invariants to the WhereLoop merging logic inside of whereLoopInsert(). (check-in: [8f27f35f28] user: drh branch: nextgen-query-plan-exp, size: 225996) | |
03:27 | [5cc059bd28] part of check-in [10021941d0] Fix compiler warnings. Fix a harmless off-by-one error in the solver. (check-in: [10021941d0] user: drh branch: nextgen-query-plan-exp, size: 225863) | |
2013-06-18
| ||
20:06 | [85b7b80a35] part of check-in [4fbb0c4d26] Adjustments to testcase() macros for improved testability. (check-in: [4fbb0c4d26] user: drh branch: nextgen-query-plan-exp, size: 225525) | |
01:52 | [86cc9705ef] part of check-in [4c6d58d75d] Remove some redundant and unreachable code. (check-in: [4c6d58d75d] user: drh branch: nextgen-query-plan-exp, size: 225543) | |
2013-06-17
| ||
21:37 | [b911a484d3] part of check-in [b61402af69] Add more testcase() macros. Fix a memory leak following OOM in the virtual table analysis logic. (check-in: [b61402af69] user: drh branch: nextgen-query-plan-exp, size: 225636) | |
18:20 | [74627cb941] part of check-in [eaf1f1b405] Simplifications to the NGQP. Add the queryplantest makefile target. Add testcase() macros in the NGQP. (check-in: [eaf1f1b405] user: drh branch: nextgen-query-plan-exp, size: 223866) | |
14:18 | [74ecd744a5] part of check-in [e8f124284e] Use automatic indices on subqueries of the FROM clause when appropriate. (check-in: [e8f124284e] user: drh branch: nextgen-query-plan-exp, size: 224590) | |
2013-06-15
| ||
15:11 | [df0d274ff1] part of check-in [3e8ac46918] Fix compiler warnings. (check-in: [3e8ac46918] user: drh branch: nextgen-query-plan-exp, size: 224624) | |
2013-06-14
| ||
13:27 | [cd2ee239c4] part of check-in [cecc5fdd5d] Comment tweaks in where.c. No changes to code. (check-in: [cecc5fdd5d] user: drh branch: nextgen-query-plan-exp, size: 224872) | |
02:51 | [7d406cca2f] part of check-in [b920bb70bb] Add a new ORDER BY optimization that bypasses ORDER BY terms that are constrained by == and IS NULL terms of the WHERE clause. (check-in: [b920bb70bb] user: drh branch: nextgen-query-plan-exp, size: 224984) | |
2013-06-13
| ||
17:58 | [ba5f6766cf] part of check-in [ade473b5ae] An index might be useful for ORDER BY if any indexed column is in the ORDER BY clause, not just the first indexed column. (check-in: [ade473b5ae] user: drh branch: nextgen-query-plan-exp, size: 223776) | |
17:28 | [700085a8d8] part of check-in [e8b7ea8202] Make sure that disabling the covering index scan optimization does not prevent a covering index from being used to satisfy an ORDER BY clause. (check-in: [e8b7ea8202] user: drh branch: nextgen-query-plan-exp, size: 223761) | |
15:50 | [82b519b79e] part of check-in [459a7b9068] Restore the ability to do a BETWEEN query on the rowid. Also fix a nearby comment. (check-in: [459a7b9068] user: drh branch: nextgen-query-plan-exp, size: 223716) | |
15:16 | [2e8e0a18dc] part of check-in [3a72af2a95] Make the MIN() and MAX() macros available in sqliteInt.h. Add TUNING comments to the NGQP and adjust costs slightly. (check-in: [3a72af2a95] user: drh branch: nextgen-query-plan-exp, size: 223719) | |
14:51 | [c6944d98be] part of check-in [b5ca80d924] Fix an off-by-one error in the WhereCost to integer conversion. (check-in: [b5ca80d924] user: drh branch: nextgen-query-plan-exp, size: 221352) | |
2013-06-12
| ||
20:18 | [4209851115] part of check-in [e120c558a5] Activate the one-pass optimization. Update comments, especially the descriptions of the various objects. (check-in: [e120c558a5] user: drh branch: nextgen-query-plan-exp, size: 221353) | |
17:55 | [568aef7548] part of check-in [25c0f7292a] Bug fixes in the handling of virtual tables. (check-in: [25c0f7292a] user: drh branch: nextgen-query-plan-exp, size: 220042) | |
17:17 | [97f5d9c3a9] part of check-in [f2e15b1974] Merge all changes from trunk. (check-in: [f2e15b1974] user: drh branch: nextgen-query-plan-exp, size: 219994) | |
17:08 | [58522e12fc] part of check-in [addd7f466d] "make test" now passing. (check-in: [addd7f466d] user: drh branch: nextgen-query-plan-exp, size: 220118) | |
14:52 | [67d70ce776] part of check-in [25e2cde105] Add the "queryplanner" test permutation. Continuing refinements to NGQP. (check-in: [25e2cde105] user: drh branch: nextgen-query-plan-exp, size: 219900) | |
03:48 | [3f38f769ef] part of check-in [40567fddd4] Continue refining the NGQP (check-in: [40567fddd4] user: drh branch: nextgen-query-plan-exp, size: 219922) | |
2013-06-11
| ||
18:59 | [2afa8f1a71] part of check-in [ba897100fe] Improved processing of DISTINCT. (check-in: [ba897100fe] user: drh branch: nextgen-query-plan-exp, size: 219963) | |
13:30 | [572357246b] part of check-in [f1cac24f06] Fix the Parse.nQueryLoop state variable to work with NGQP. (check-in: [f1cac24f06] user: drh branch: nextgen-query-plan-exp, size: 218756) | |
02:32 | [1241512fec] part of check-in [36373b85f9] Fixes to EXPLAIN QUERY PLAN output. Change weights back to something closer to what they are in legacy. More test case fixes. (check-in: [36373b85f9] user: drh branch: nextgen-query-plan-logcost, size: 218663) | |
01:50 | [72f9aa6c35] part of check-in [e612664aa2] Handle virtual tables correctly when using logarithmic costs. Fixes to test cases. (check-in: [e612664aa2] user: drh branch: nextgen-query-plan-logcost, size: 218645) | |
2013-06-10
| ||
23:30 | [672b76db74] part of check-in [aa580e368e] Fix test cases for the new EXPLAIN QUERY PLAN format. Add the wherecosttest tool. Other fixes to logarithm cost. (check-in: [aa580e368e] user: drh branch: nextgen-query-plan-logcost, size: 217892) | |
20:46 | [402d3f74aa] part of check-in [69cf877283] Fix some minor issues with logarithmic cost in NGQP. (check-in: [69cf877283] user: drh branch: nextgen-query-plan-logcost, size: 217789) | |
19:12 | [ae52899cfb] part of check-in [9e8109673c] First attempt to store costs and row counts as a logarithm. (check-in: [9e8109673c] user: drh branch: nextgen-query-plan-logcost, size: 217247) | |
14:56 | [2e75418eb4] part of check-in [0f8a38ee54] Simplification and performance tweak to the high-speed NGQP bypass. (check-in: [0f8a38ee54] user: drh branch: nextgen-query-plan-exp, size: 216117) | |
12:34 | [eddcadac3d] part of check-in [aae14350a3] Performance improvements for whereScan methods. (check-in: [aae14350a3] user: drh branch: nextgen-query-plan-exp, size: 216215) | |
12:15 | [9fff9a5f3f] part of check-in [20eeccf1f2] Minor problems in the high-speed NGQP fixed. (check-in: [20eeccf1f2] user: drh branch: nextgen-query-plan-fast, size: 216329) | |
2013-06-09
| ||
17:21 | [2dae18fe0b] part of check-in [db2415fa67] High-speed version of NGQP. Still has some minor problems. (check-in: [db2415fa67] user: drh branch: nextgen-query-plan-fast, size: 215856) | |
2013-06-07
| ||
02:04 | [70e1ebd1c3] part of check-in [dfbca3acae] Must faster computation of estimated logarithm. (check-in: [dfbca3acae] user: drh branch: nextgen-query-plan-exp, size: 213546) | |
00:29 | [bbd8aad0e5] part of check-in [02741d177b] Further prepare-time performance improvements. (check-in: [02741d177b] user: drh branch: nextgen-query-plan-exp, size: 213448) | |
2013-06-06
| ||
23:44 | [fb4bee9bfe] part of check-in [9f8e84ab98] Performance improvements. (check-in: [9f8e84ab98] user: drh branch: nextgen-query-plan-exp, size: 213746) | |
23:02 | [e029cd3fe9] part of check-in [d4141ecbea] Improved management of the space to hold WhereLoop.aLTerm[]. (check-in: [d4141ecbea] user: drh branch: nextgen-query-plan-exp, size: 213849) | |
19:25 | [0b652e425f] part of check-in [b4a5dbad36] Remove some commented-out code that was mistakenly left in the previous check-in. (check-in: [b4a5dbad36] user: drh branch: nextgen-query-plan-exp, size: 211587) | |
19:16 | [e3b7d7ef7a] part of check-in [bfc76ae1e9] Clean up and reorganize the elements of the various objects in the analysis tree for the NGQP. (check-in: [bfc76ae1e9] user: drh branch: nextgen-query-plan-exp, size: 211743) | |
2013-06-05
| ||
23:39 | [83c6fce38c] part of check-in [1574653b9b] Move the definitions of the WhereLevel and WhereInfo objects out of sqliteInt.h and into where.c. This will facilitate future refactoring of the internal query planner data structures. (check-in: [1574653b9b] user: drh branch: nextgen-query-plan-exp, size: 211975) | |
17:53 | [35e510bf0d] part of check-in [9b1c4954e4] Performance improvement for the OR-clause analysis in the NGQP. (check-in: [9b1c4954e4] user: drh branch: nextgen-query-plan-exp, size: 206968) | |
16:19 | [7d8a020b2d] part of check-in [cbef38c2d1] Minor performance tuning of the NGQP. (check-in: [cbef38c2d1] user: drh branch: nextgen-query-plan-exp, size: 206895) | |
12:47 | [3b175d731c] part of check-in [1c4a78807b] Performance tweak to whereLoopInsert(). (check-in: [1c4a78807b] user: drh branch: nextgen-query-plan-exp, size: 206741) | |
2013-06-04
| ||
23:40 | [0b8fd61de3] part of check-in [cf96eb5945] Update some variable names and comments in the ORDER BY optimizer. Fix a bug in the ORDER BY optimizer dealing with IS NULL constraints. Updates to test cases. (check-in: [cf96eb5945] user: drh branch: nextgen-query-plan-exp, size: 206670) | |
18:27 | [cc1e1a7255] part of check-in [f49cd6c4e7] Restore the PRAGMA reverse_unordered_selects behavior. (check-in: [f49cd6c4e7] user: drh branch: nextgen-query-plan-exp, size: 206007) | |
18:03 | [e46c09e1fb] part of check-in [774d5ff857] Get the index-only optimization working for OR queries. (check-in: [774d5ff857] user: drh branch: nextgen-query-plan-exp, size: 205922) | |
13:37 | [07d741484a] part of check-in [63fd025ad9] Better determination of when an index is UNIQUE. (check-in: [63fd025ad9] user: drh branch: nextgen-query-plan-exp, size: 205919) | |
12:58 | [89e9e0180f] part of check-in [ff2fa40755] Fix a display issue with EXPLAIN QUERY PLAN. (check-in: [ff2fa40755] user: drh branch: nextgen-query-plan-exp, size: 205921) | |
12:42 | [cca3284b91] part of check-in [e605c468e3] Refactor the ORDER BY optimizer in the NGQP so that it is easier to maintain and so that it can support optimizing out GROUP BY and DISTINCT clauses. (check-in: [e605c468e3] user: drh branch: nextgen-query-plan-exp, size: 205838) | |
2013-06-03
| ||
20:46 | [0082ef5994] part of check-in [6bc71dfcf0] Pull in recent trunk changes. Fix the ORDER BY optimizer so that it is better able to deal with COLLATE clauses. Clean up ambiguities in the descidx1.test script. (check-in: [6bc71dfcf0] user: drh branch: nextgen-query-plan-exp, size: 202530) | |
19:17 | [6226d9912f] part of check-in [fabb21854e] Do not use an index fullscan for an UPDATE or DELETE or if disabled by sqlite3_test_control() or sqlite3_config(). (check-in: [fabb21854e] user: drh branch: nextgen-query-plan-exp, size: 202506) | |
17:35 | [a60b272962] part of check-in [ff134e6ee9] Update the NGQP to make use of STAT3 information if it is available. (check-in: [ff134e6ee9] user: drh branch: nextgen-query-plan-exp, size: 202317) | |
16:56 | [82c6fd16a6] part of check-in [aaf7f5896d] Honor the orderByConsumed boolean returned from virtual table query planner. (check-in: [aaf7f5896d] user: drh branch: nextgen-query-plan-exp, size: 201428) | |
16:03 | [b8a41bcd6a] part of check-in [62d382406b] Fix to the logic that disables constraints on virtual tables. (check-in: [62d382406b] user: drh branch: nextgen-query-plan-exp, size: 201360) | |
15:34 | [078c3aeafa] part of check-in [0298401240] Fix an issue that was causing ORDER BY DESC to come out in ascending order. (check-in: [0298401240] user: drh branch: nextgen-query-plan-exp, size: 201356) | |
15:07 | [7e34bb26af] part of check-in [510f4d8ecf] Set the WHERE_UNIQUE flag on loops that can only run once. (check-in: [510f4d8ecf] user: drh branch: nextgen-query-plan-exp, size: 201305) | |
2013-05-31
| ||
20:43 | [7c931bf930] part of check-in [42511a7e12] The NGQP might not find a solution if INDEXED BY constraints on the query are set wrong. If that is the case, print a "no query solution" error and abort before trying to use the non-existant solution. (check-in: [42511a7e12] user: drh branch: nextgen-query-plan-exp, size: 201129) | |
20:28 | [3e4ca21a9b] part of check-in [723f901a63] Do not search using ON clause constraints of LEFT JOINs to the right of the table. (check-in: [723f901a63] user: drh branch: nextgen-query-plan-exp, size: 201100) | |
20:00 | [3d93b77c4a] part of check-in [433d1aecd3] Make sure a unique cursor number is allocated for automatic indices. (check-in: [433d1aecd3] user: drh branch: nextgen-query-plan-exp, size: 200986) | |
19:14 | [0c1d6feb0c] part of check-in [665e4291c6] Do not attempt to generate code in the NGQP if there have been prior errors, since with prior errors some of the expressions might not be fully named resolved. (check-in: [665e4291c6] user: drh branch: nextgen-query-plan-exp, size: 200950) | |
18:20 | [a8bb7f25f6] part of check-in [0b1bee92a0] Fix a problem with code generation on LEFT JOIN of tables without an index. (check-in: [0b1bee92a0] user: drh branch: nextgen-query-plan-exp, size: 200830) | |
18:13 | [e6d80ad378] part of check-in [2f2ce41677] Another virtual table fix in NGQP. (check-in: [2f2ce41677] user: drh branch: nextgen-query-plan-exp, size: 200818) | |
17:55 | [103ccfa82f] part of check-in [23af28e24b] Fix problems in the virtual table logic for NGQP. (check-in: [23af28e24b] user: drh branch: nextgen-query-plan-exp, size: 200818) | |
15:50 | [586b6c3628] part of check-in [816f8add7e] Remove the definitions of objects that are no longer used: WhereCost, WherePlan, and WhereBestIdx. (check-in: [816f8add7e] user: drh branch: nextgen-query-plan-exp, size: 200804) | |
15:18 | [e120e28cb5] part of check-in [707f032326] Allow tracing of whereLoopInsert() when the 0x8 bit is set on ".wheretrace". Remove the use of sqlite_query_plan from where2.test. Fix a bug in the code generator for OR clause optimizations. (check-in: [707f032326] user: drh branch: nextgen-query-plan-exp, size: 202431) | |
13:36 | [8e9922815b] part of check-in [d8efa5f8b6] Futher enhancements to the ORDER BY optimizer. (check-in: [d8efa5f8b6] user: drh branch: nextgen-query-plan-exp, size: 201721) | |
12:43 | [0e1c41804f] part of check-in [58805eb36b] Improved detection of unnecessary ORDER BY clauses. (check-in: [58805eb36b] user: drh branch: nextgen-query-plan-exp, size: 201549) | |
11:57 | [530dd22d4f] part of check-in [5e1e613995] Fix the constructAutomaticIndex() routine so that it works with NGQP. (check-in: [5e1e613995] user: drh branch: nextgen-query-plan-exp, size: 200934) | |
2013-05-30
| ||
23:21 | [38beadcfdf] part of check-in [24a2e9ddce] Improvements to the ORDER BY suppressor in the NGQP. (check-in: [24a2e9ddce] user: drh branch: nextgen-query-plan-exp, size: 200527) | |
22:27 | [28e0cefe34] part of check-in [a51d8c9249] Incremental check-in with various NGQP fixes. Many tests still fail. (check-in: [a51d8c9249] user: drh branch: nextgen-query-plan-exp, size: 200379) | |
19:29 | [3e9b7b3323] part of check-in [ae985db4fa] Futher simplifications to the NGQP. Fix some test cases to use EXPLAIN QUERY PLAN rather than the (now obsolete) sqlite_query_plan global variable. (check-in: [ae985db4fa] user: drh branch: nextgen-query-plan-exp, size: 199903) | |
17:43 | [296baae1cb] part of check-in [001539df4b] Cut over the NGQP query planner. Remove lots of legacy code. This check-in compiles but does not work. The test suite gets incorrect answers and crashes. (check-in: [001539df4b] user: drh branch: nextgen-query-plan-exp, size: 202872) | |
2013-05-27
| ||
17:59 | [3f4f25df65] part of check-in [211f7a5374] Update the NGQP to record which loops need be run in reverse order to satisfy ORDER BY clauses. (check-in: [211f7a5374] user: drh branch: nextgen-query-plan-exp, size: 267404) | |
2013-05-24
| ||
14:52 | [2fd11c00ff] part of check-in [b49fa74561] Record in the WhereLoop object the set of virtual table constraints that need not be separately checked. (check-in: [b49fa74561] user: drh branch: nextgen-query-plan-exp, size: 267296) | |
2013-05-22
| ||
20:49 | [627bf1af3a] part of check-in [f783e8e6b1] Use the NGQP plan for EXPLAIN QUERY PLAN output. This change causes 207 errors in veryquick.test, many of which are benign. (check-in: [f783e8e6b1] user: drh branch: nextgen-query-plan-exp, size: 267069) | |
17:01 | [3ca12d203c] part of check-in [9bf0524df7] Allow the rowid at the end of an index to be used in a constraint on that index. (check-in: [9bf0524df7] user: drh branch: nextgen-query-plan-exp, size: 266744) | |
02:06 | [b695db3fe8] part of check-in [12c709b436] Improvements to ORDER BY handling in the NGQP. Fix an "exit" mistakenly left in a test script during the previous check-in. (check-in: [12c709b436] user: drh branch: nextgen-query-plan-exp, size: 266575) | |
2013-05-21
| ||
19:23 | [759c34becf] part of check-in [04dfb85a2a] Enhanced "wheretrace" output in the NGQP solver routine. (check-in: [04dfb85a2a] user: drh branch: nextgen-query-plan-exp, size: 266227) | |
15:52 | [a01d93b37f] part of check-in [67367f1e1f] Work toward improving the NGQP's ability to optimize out ORDER BY clauses. (check-in: [67367f1e1f] user: drh branch: nextgen-query-plan-exp, size: 263827) | |
2013-05-14
| ||
15:31 | [51d935c659] part of check-in [9fe2029255] First attempt to get ORDER BY optimization working in NGQP. (check-in: [9fe2029255] user: drh branch: nextgen-query-plan-exp, size: 261462) | |
2013-05-11
| ||
00:06 | [049e7011b9] part of check-in [d6946f33c7] Minor fixes to the OR-clause processing in the NGQP. (check-in: [d6946f33c7] user: drh branch: nextgen-query-plan-exp, size: 257576) | |
2013-05-10
| ||
20:26 | [374f50ced9] part of check-in [e17003fcfe] Now generating OR-clause plans. (check-in: [e17003fcfe] user: drh branch: nextgen-query-plan-exp, size: 257454) | |
15:16 | [f96b2602fd] part of check-in [586b55d8d7] Update the NGQP so that it can produce plans that include automatic indices. (check-in: [586b55d8d7] user: drh branch: nextgen-query-plan-exp, size: 254772) | |
03:30 | [31160bacc3] part of check-in [0278e42061] Factor out common operations into whereLoopAddAll(). Add stubs for missing features. (check-in: [0278e42061] user: drh branch: nextgen-query-plan-exp, size: 252659) | |
02:11 | [4816e3ec62] part of check-in [5ed31c8279] Merge in the latest trunk changes. (check-in: [5ed31c8279] user: drh branch: nextgen-query-plan-exp, size: 253149) | |
02:00 | [2be67c1a1a] part of check-in [82d50e1980] Free up bits of wsFlags for reuse. Install the ORDER BY optimization infrastructure for the NGQP. (check-in: [82d50e1980] user: drh branch: nextgen-query-plan-exp, size: 252910) | |
2013-05-09
| ||
14:20 | [5c4cbc1e52] part of check-in [1128575d0a] Do not move WHERE clause terms inside OR expressions that are contained within an ON clause of a LEFT JOIN. Fix for ticket [f2369304e47167e3e]. (check-in: [1128575d0a] user: drh branch: trunk, size: 222053) | |
2013-05-08
| ||
20:05 | [e2e0ff8165] part of check-in [3c2e83a4a2] Fix memory leaks in the NGQP logic for virtual tables. (check-in: [3c2e83a4a2] user: drh branch: nextgen-query-plan-exp, size: 250191) | |
14:14 | [409691bea5] part of check-in [bd9327a968] NGQP working with virtual tables, though many legacy tests fail and there are yet some memory leaks. (check-in: [bd9327a968] user: drh branch: nextgen-query-plan-exp, size: 250147) | |
04:22 | [c02037efa6] part of check-in [8e5aad3752] More bug fixes to the WhereLoop generator and the solver in NGQP. Now finds the best plan for TPC-H Q8. This seems to prove the concept, but there is still much work to be done. (check-in: [8e5aad3752] user: drh branch: nextgen-query-plan-exp, size: 243041) | |
03:22 | [22da73b779] part of check-in [b36034bbd1] Bug fixes in the solver. (check-in: [b36034bbd1] user: drh branch: nextgen-query-plan-exp, size: 243065) | |
03:05 | [cac7c10d42] part of check-in [5d37587c50] Add the NGQP solver. (check-in: [5d37587c50] user: drh branch: nextgen-query-plan-exp, size: 242610) | |
2013-05-07
| ||
23:06 | [e957c2c6fd] part of check-in [15cc8a1648] Continued progress on generating good WhereLoop objects for the new query planner. (check-in: [15cc8a1648] user: drh branch: nextgen-query-plan-exp, size: 238345) | |
19:44 | [e987a4ff28] part of check-in [e8881a8b2f] Inserting a few WhereLoop objects without leaking memory. Costs are not correct. Inequality and IN constraints are not implemented. (check-in: [e8881a8b2f] user: drh branch: nextgen-query-plan-exp, size: 236032) | |
2013-05-04
| ||
20:25 | [173347e459] part of check-in [dd92b8fa92] In where.c, make findTerm() a wrapper around methods to a new WhereScan object which is capable of finding all suitable matching terms, not just the first. This check-in includes some prototype functions for building WhereLoop objects. (check-in: [dd92b8fa92] user: drh branch: nextgen-query-plan-exp, size: 235527) | |
2013-05-02
| ||
00:15 | [fc62bea654] part of check-in [ccaf4c3f7e] Begin inserting some experimental code for the next generation query planner. (check-in: [ccaf4c3f7e] user: drh branch: nextgen-query-plan-exp, size: 228869) | |
2013-05-01
| ||
17:58 | [12d4200eb6] part of check-in [faedaeace9] Do not use a transitive constraint to an IN operator where the RHS is a constant if there exists a direct == operator to another table in an outer loop. (check-in: [faedaeace9] user: drh branch: trunk, size: 221814) | |
17:22 | [e36bbfbf56] part of check-in [329478cbed] Avoid redundant constraint checking due to transitive constraints. (check-in: [329478cbed] user: drh branch: trunk, size: 221783) | |
2013-04-22
| ||
19:56 | [d54e63087b] part of check-in [49cfa14fce] Do not allow a virtual table to cancel the ORDER BY clause unless all outer loops are guaranteed to return no more than one row result. Candidate fix for ticket [ba82a4a41eac1]. (check-in: [49cfa14fce] user: drh branch: trunk, size: 221734) | |
02:39 | [c7c74fe8e3] part of check-in [5f4907e1c6] Use transitivity to move constraints into the outer loops of a join whenever possible, thereby reducing the amount of work that needs to occur in inner loops. (check-in: [5f4907e1c6] user: drh branch: trunk, size: 221429) | |
2013-04-18
| ||
02:55 | [e63f84e558] part of check-in [61b2a7be3b] Do not suppress the ORDER BY clause on a virtual table query if an IN constraint is used. Fix for ticket [f69b96e3076e]. Testing done on TH3 using cov1/where37.test. (check-in: [61b2a7be3b] user: drh branch: trunk, size: 220273) | |
2013-03-27
| ||
17:20 | [4ad2329c43] part of check-in [2936f7466e] In order to optimize out the ORDER BY clause, outer loops must generate values for ORDER BY terms that are unique or else the inner loops must generate no more than a single row. Fix for ticket [a179fe7465]. (check-in: [2936f7466e] user: drh branch: trunk, size: 220298) | |
16:42 | [8179f4c891] part of check-in [c77ee6e20d] Restore additional ORDER BY optimizations that where broken by the recent ORDER BY fix. (check-in: [c77ee6e20d] user: drh branch: orderby-fix, size: 219897) | |
16:05 | [fc912c1d32] part of check-in [97e5c70f2f] Improved optimization of ORDER BY. (check-in: [97e5c70f2f] user: drh branch: orderby-fix, size: 219787) | |
15:04 | [979868386d] part of check-in [488089e615] A fix and test-case for the ORDER BY problem identified by ticket [a179fe7465]. This change causes sorting to occur in some cases where it is not strictly necessary. Further work is needed to avoid those extra sorts. (check-in: [488089e615] user: drh branch: orderby-fix, size: 219708) | |
2013-03-21
| ||
21:20 | [9a16c0b84b] part of check-in [6f6e2d5094] Many spelling fixes in comments. No changes to code. (check-in: [6f6e2d5094] user: mistachkin branch: trunk, size: 218932) | |
2013-03-12
| ||
23:58 | [bdbbfa7ef4] part of check-in [7e7356f155] Add a single new test case to the ORDER BY with IN logic verify that if the RHS of the IN is a descending index that it still works. Add testcase() macros to the ORDER BY with IN logic to help verify that corner cases are tested. (check-in: [7e7356f155] user: drh branch: desc-orderby-fix-1, size: 218934) | |
20:38 | [6fdacd2cd5] part of check-in [62316ebaca] Fix the ORDER BY optimization with IN constraints when the RHS of the IN constraint is a descending index. (check-in: [62316ebaca] user: drh branch: desc-orderby-fix-1, size: 218729) | |
18:49 | [494da8b32d] part of check-in [3ce7eb0265] Revise the patch to make it easier to understand. (check-in: [3ce7eb0265] user: drh branch: desc-orderby-fix-1, size: 218681) | |
18:40 | [6c2940f1fa] part of check-in [8b2eb7a43b] Revised fix for the DESC ORDER BY and IN constraint bug, ticket [4dd95f6943fbd18]. The previous check-in was incorrect. (check-in: [8b2eb7a43b] user: drh branch: desc-orderby-fix-1, size: 218705) | |
18:34 | [3db35b6231] part of check-in [614a038ad2] A proposed fix for the DESC ORDER BY bug of ticket [4dd95f6943fbd18]. Seems to work, but lots more testing is needed prior to moving to trunk. (check-in: [614a038ad2] user: drh branch: desc-orderby-fix-1, size: 218802) | |
2013-03-06
| ||
01:55 | [8b7690cae8] part of check-in [7097241c12] Fix a bug (ticket [fc7bd6358f59]) that caused incorrect query results in three way queries that involved comparing INTEGER and TEXT columns for equality. (check-in: [7097241c12] user: drh branch: trunk, size: 218467) | |
2013-02-08
| ||
23:18 | [43e05406f0] part of check-in [71b6c26053] Fix a potential NULL-pointer dereference following an OOM error in the query planner logic for virtual tables with OR-connected terms. (check-in: [71b6c26053] user: drh branch: IN-with-ORDERBY, size: 218348) | |
20:39 | [df3f8f6107] part of check-in [b016b7546d] Make sure the virtual tables that take advantage of IN operators sort the RHS of the IN operator in the correct order according to the ORDER BY clause. (check-in: [b016b7546d] user: drh branch: IN-with-ORDERBY, size: 218278) | |
18:48 | [36370580f2] part of check-in [f78395c889] Loop through the elements on the RHS of an IN operator in reverse order when the ORDER BY clauses specifies DESC. (check-in: [f78395c889] user: drh branch: IN-with-ORDERBY, size: 217856) | |
16:04 | [e09d21a450] part of check-in [a917c1f092] Allow the "a=?1 OR a=?2" to "a IN (?1,?2)" transformation to work on virtual tables again. This was formerly restricted because virtual tables could not optimize IN terms. (See check-in [fad88e71cf195e].) But IN terms are now used by virtual tables (as of check-in [3d65c70343]) so the restriction can now be removed. (check-in: [a917c1f092] user: drh branch: IN-with-ORDERBY, size: 217977) | |
2013-02-07
| ||
21:15 | [74f8a58289] part of check-in [98bf668ab1] Allow an index to be used for sorting even if prior terms of the index are constrained by IN operators. (check-in: [98bf668ab1] user: drh branch: IN-with-ORDERBY, size: 218542) | |
09:33 | [427c6ec07c] part of check-in [4a7b4ee011] Fix harmless compiler warnings. (check-in: [4a7b4ee011] user: drh branch: trunk, size: 218475) | |
2013-01-17
| ||
16:43 | [374a6c8190] part of check-in [593d67c8b0] Add the ability to disable transitive constraints using the sqlite3_test_control(SQLITE_TESTCTRL_OPTIMIZATIONS) interface. (check-in: [593d67c8b0] user: drh branch: transitive-constraints, size: 218486) | |
16:18 | [79c257691c] part of check-in [56549f4566] Avoid unnecessary collating sequence and affinity restrictions on the use of transitivity. Add test cases to show that the restrictions are not needed. (check-in: [56549f4566] user: drh branch: transitive-constraints, size: 218414) | |
15:05 | [701c32fecb] part of check-in [d96762841a] Make more aggressive use of transitivity in optimizing queries. Add a test case. (check-in: [d96762841a] user: drh branch: transitive-constraints, size: 219137) | |
00:08 | [24d74ec54a] part of check-in [fe152f8b04] Improved comments explaining the operation of the findTerm() utility routine in where.c. Increase the maximum number of levels of transitivity from 4 to 11. (check-in: [fe152f8b04] user: drh branch: transitive-constraints, size: 219093) | |
2013-01-16
| ||
17:08 | [eb1e1dfc17] part of check-in [13171eb5dc] Enhance the query planner to exploit transitivity of join constraints in a multi-way join. (check-in: [13171eb5dc] user: drh branch: transitive-constraints, size: 217563) | |
00:46 | [d48a57d8af] part of check-in [d5ebb78778] Improvements to query planning for joins: Avoid unnecessary calls to "optimal scan" checks in cases where table reordering is not possible. Make sure optimal scan checks are carried out for CROSS JOINs and LEFT JOINs. (check-in: [d5ebb78778] user: drh branch: trunk, size: 215390) | |
2013-01-15
| ||
18:49 | [b2a827f2b3] part of check-in [ac4e119a87] Fix a missing word in a comment. Enhance the "wheretrace" debugging output to show the estimated cost of each table option while planning the join order. (check-in: [ac4e119a87] user: drh branch: trunk, size: 213903) | |
16:15 | [9df0419ef7] part of check-in [04507c1763] Clarification to a comment in where.c. No code changes. (check-in: [04507c1763] user: drh branch: trunk, size: 213866) | |
2013-01-09
| ||
11:44 | [613a89f1c9] part of check-in [3d0609c958] Fix an over-aggressive optimization of ORDER BY on a three-way join where the second table is UNIQUE and the ORDER BY occurs on the third table. Ticket [c997b11c4d53a2ee]. (check-in: [3d0609c958] user: drh branch: branch-3.7.15, size: 212380) | |
11:31 | [4c7fec9cfa] part of check-in [5774f2175c] Fix an over-aggressive optimization of ORDER BY on a three-way join where the second table is UNIQUE and the ORDER BY occurs on the third table. Ticket [c997b11c4d53a2]. (check-in: [5774f2175c] user: drh branch: trunk, size: 214002) | |
2012-12-19
| ||
17:10 | [74d72b1613] part of check-in [bae528f486] Backport to the 3.7.15 branch the fix to the segfault problem of ticket [a7b7803e8d1e869] which involved the use of "AS" named result columns as logical terms of the WHERE clause. Also, change the version number to 3.7.15.1. (check-in: [bae528f486] user: drh branch: branch-3.7.15, size: 212376) | |
15:53 | [b971ee2d1a] part of check-in [3d0e00c731] Proposed fix for ticket [a7b7803e8d1e8699cd8a]. (check-in: [3d0e00c731] user: drh branch: tkt-a7b7803e, size: 213998) | |
2012-12-14
| ||
17:48 | [7bdfde434b] part of check-in [d2fb7619b0] Remove an unreachable branch. Improvements to comments. (check-in: [d2fb7619b0] user: drh branch: vtab-IN-opt, size: 213943) | |
15:54 | [6bcd38a2bc] part of check-in [6d507e4de9] Merge in all the trunk changes that have occurred since this branch was opened. (check-in: [6d507e4de9] user: drh branch: vtab-IN-opt, size: 213744) | |
15:36 | [87c95ca900] part of check-in [d6e045f89c] Fix the virtual table IN optimizer so that it work even if the virtual table implementation leaves the sqlite3_index_info.aConstraintUsage[].omit flag clear for an equality constraint that it intends to use. (check-in: [d6e045f89c] user: drh branch: vtab-IN-opt, size: 212030) | |
2012-12-08
| ||
22:14 | [53b991af50] part of check-in [92c9ab56b1] Factor some work out of the index loop of the bestBtreeIndex() routine for a small performance increase. (check-in: [92c9ab56b1] user: drh branch: trunk, size: 212321) | |
21:36 | [b613cf5be7] part of check-in [cdbfa66483] Adjustments to the collating-sequence refactoring to facilitate full-coverage testing and to fix some minor issues found by TH3. (check-in: [cdbfa66483] user: drh branch: ticket-71e333e7, size: 212189) | |
14:16 | [f4b0ec5ac0] part of check-in [b3f5366811] Make sure WHERE clause constraints A=B and B=A work the same even with COLLATE clauses. (check-in: [b3f5366811] user: drh branch: ticket-71e333e7, size: 212198) | |
03:34 | [fdf9eb0551] part of check-in [7b96115e81] Veryquick passes all tests now. (check-in: [7b96115e81] user: drh branch: ticket-71e333e7, size: 212174) | |
2012-12-07
| ||
20:31 | [bc400d4591] part of check-in [f9fa7581c0] Many more tests are passing. Only about 100 failures remain in veryquick. (check-in: [f9fa7581c0] user: drh branch: ticket-71e333e7, size: 212086) | |
18:38 | [5ad63b25b3] part of check-in [972443b4eb] Some errors in veryquick resolved. Many more to go. (check-in: [972443b4eb] user: drh branch: ticket-71e333e7, size: 211983) | |
14:02 | [e415f98342] part of check-in [7fafab12e4] Veryquick now runs to completion without segfaulting or asserting. But there are still lots of errors. (check-in: [7fafab12e4] user: drh branch: ticket-71e333e7, size: 211981) | |
2012-12-06
| ||
21:16 | [1c7ff5ad06] part of check-in [fd011cb22f] Remove the Expr.pColl field and compute the collating sequence as it is needed. This fixes the test script "shared9.test", though there is still a memory leak. And there are other problems. Consider this a work-in-progress. (check-in: [fd011cb22f] user: drh branch: ticket-71e333e7, size: 211966) | |
20:19 | [13e6e3e15b] part of check-in [0d7b5d455c] Cherrypick [557c69055a3] and [0064bab7714] (OP_Once-related fixes for triggers). (check-in: [0d7b5d455c] user: dan branch: branch-3.7.9, size: 201260) | |
2012-12-03
| ||
17:04 | [b5325975cb] part of check-in [b0c1ba655d] Make sure that the optimization that set the maximum column that will be used on a particular query does not mistakenly change an opcode other than OP_OpenRead or OP_OpenWrite. In particular, make sure it does not overwrite the P4 field of an OP_SorterOpen. (check-in: [b0c1ba655d] user: drh branch: trunk, size: 211687) | |
2012-11-09
| ||
18:22 | [832e33fefb] part of check-in [51bfd63b7f] Disable the table selection rule that tried to prevent full table scans from migrating to the outer loop unless they were optimal. The new scaling of outer-loop costs by cost of inner loops obviates the need for that step. And, in fact, that step causes problems with the new inner-loop cost accounting. (check-in: [51bfd63b7f] user: drh branch: inner-loop-cost, size: 211637) | |
17:59 | [b97f14d4ce] part of check-in [942556342a] Try to take into account the cost of inner loops when selecting which table of a join to use for the outer loop. (check-in: [942556342a] user: drh branch: inner-loop-cost, size: 212098) | |
2012-10-30
| ||
15:31 | [6a753aa008] part of check-in [f83aa0de84] Make sure that the optimizer never tries to create an automatic index on a coroutine subquery. (check-in: [f83aa0de84] user: drh branch: subquery-as-coroutine, size: 211161) | |
00:29 | [73eb4c41f3] part of check-in [7af3acbbd4] Add an optimization that attempts to run a subquery as a coroutine rather than manifesting it into a temporary table. (check-in: [7af3acbbd4] user: drh branch: subquery-as-coroutine, size: 211081) | |
2012-10-26
| ||
18:40 | [bcd54574cf] part of check-in [ac1d5d8a55] Make sure the automatic index optimization is checked even if the covering index scan optimization was previously selected. (check-in: [ac1d5d8a55] user: drh branch: trunk, size: 210660) | |
2012-10-16
| ||
23:17 | [62f667db8c] part of check-in [aa650746b1] Enable optimization of IN operators on constraints to virtual tables. (check-in: [aa650746b1] user: drh branch: vtab-IN-opt, size: 210941) | |
2012-10-09
| ||
21:07 | [3e6c1f9efe] part of check-in [dd34bec389] Merge the fix for ticket [d02e1406a58ea02] into trunk. (check-in: [dd34bec389] user: drh branch: trunk, size: 210607) | |
09:26 | [410017c604] part of check-in [bb5c0f1c92] Bring some comments up to date in the query planner, and especially the ORDER BY optimizer. Also add testcase() macros. (check-in: [bb5c0f1c92] user: drh branch: trunk, size: 210596) | |
01:39 | [7d24dda2b2] part of check-in [01dc032b5b] Remove an unused variable. Fix code that occurs before a variable declaration. (check-in: [01dc032b5b] user: drh branch: trunk, size: 210409) | |
01:23 | [50d1d0d3e6] part of check-in [981b9943e4] Replace an always-false conditional with an assert(). (check-in: [981b9943e4] user: drh branch: trunk, size: 210523) | |
2012-10-08
| ||
21:51 | [56916abbd9] part of check-in [c027a9af91] Merge ORDER BY optimization refactoring and repair into trunk. (check-in: [c027a9af91] user: drh branch: trunk, size: 210541) | |
21:01 | [b74866c4c1] part of check-in [8314fd6078] All test cases (veryquick.tcl and min.rc) pass. A few branch operations in ORDER BY optimization logic are untested by min.rc. (check-in: [8314fd6078] user: drh branch: qp-enhancements, size: 210647) | |
20:27 | [6bc65388a6] part of check-in [bcb4f26247] Further tweaks to the ORDER BY optimizer, to fix a bug and to get the optimizer to recognize some additional cases. (check-in: [bcb4f26247] user: drh branch: qp-enhancements, size: 210636) | |
19:41 | [d4a39bc7ea] part of check-in [301bbee404] Bug fixes in the ORDER BY optimizer. (check-in: [301bbee404] user: drh branch: qp-enhancements, size: 210590) | |
18:23 | [968bea2560] part of check-in [adbdc663f3] Continued refactoring of the ORDER BY optimization logic. This check-in is close to working, but it still has issues. A few test cases fail. (check-in: [adbdc663f3] user: drh branch: qp-enhancements, size: 209946) | |
2012-10-05
| ||
14:43 | [bf45ec770a] part of check-in [8ea67522fb] Consolidate all occurrences of the "no such collation sequence" error message into a single spot. (check-in: [8ea67522fb] user: drh branch: trunk, size: 210628) | |
2012-10-04
| ||
16:00 | [e74f9ed463] part of check-in [81fd941da6] Candidate fix for ticket [d02e1406a58ea02]. (check-in: [81fd941da6] user: drh branch: branch-3.7.14, size: 204990) | |
12:10 | [f246807108] part of check-in [8f4487450b] Yet another refactoring of ORDER BY logic in the query planner. This particular check-in works mostly, but still has a few minor issues. (check-in: [8f4487450b] user: drh branch: qp-enhancements, size: 210556) | |
2012-10-03
| ||
18:09 | [fabdb47375] part of check-in [ba2f492f95] Fix an out-of-order memset() that occurs before all variable declarations are finished. Also fix a line that exceeds the 80-character line length limit. (check-in: [ba2f492f95] user: drh branch: trunk, size: 210734) | |
12:38 | [cd99218c11] part of check-in [0f9bb90100] Fix a query planner problem that only occurs when covering-index-scan is disabled. Fix to tests whose output changed due to the new and more aggressive ORDER BY optimization. (check-in: [0f9bb90100] user: drh branch: qp-enhancements, size: 210723) | |
00:25 | [76de193489] part of check-in [6744d9a37f] Further attempts to optimize out unnecessary ORDER BY clauses. (check-in: [6744d9a37f] user: drh branch: qp-enhancements, size: 210671) | |
2012-10-02
| ||
15:19 | [69398e95e9] part of check-in [abcf6a5d05] More lenient handling of ORDER BY optimization in joins with mixed ASC/DESC. This is a better and less restrictive fix for the problem addressed by the previous check-in. (check-in: [abcf6a5d05] user: drh branch: trunk, size: 209345) | |
14:11 | [d40f2fa13b] part of check-in [b0e7b4df6c] Only continue an ORDER BY optimization into inner loops if the equality constraints on the inner loop match terms of an outer ordered index that are actually used by the ORDER BY clause. (check-in: [b0e7b4df6c] user: drh branch: trunk, size: 209435) | |
01:46 | [58a99bf57e] part of check-in [545bb33688] Factor an invariant out the loop termination condition for the ORDER BY satisfied-by-index analyzer routine. (check-in: [545bb33688] user: drh branch: trunk, size: 209335) | |
01:25 | [0a309f52e9] part of check-in [351dc8d9ca] Make sure the outer loop cursor numbers are recorded in time for them to be used by the ORDER BY optimizer. (check-in: [351dc8d9ca] user: drh branch: trunk, size: 209323) | |
01:10 | [9f706f5400] part of check-in [76b2776556] Improvements to the wheretrace output. (check-in: [76b2776556] user: drh branch: trunk, size: 209314) | |
2012-10-01
| ||
17:44 | [e676efbfa8] part of check-in [c12044df32] Minor changes to the query planner for improved test coverage. (check-in: [c12044df32] user: drh branch: trunk, size: 209181) | |
2012-09-29
| ||
19:10 | [acc2ec5f68] part of check-in [62225b4a4c] Improved ORDER BY optimization when outer loops of a join return a single row. (check-in: [62225b4a4c] user: drh branch: trunk, size: 209147) | |
2012-09-27
| ||
23:27 | [d836df3a20] part of check-in [98b633717a] Fix some corner case behavior in the new ORDER BY optimization logic. Remove the SQLITE_OrderByIdx bit from the SQLITE_TESTCTRL_OPTIMIZATIONS mask, since enabling it caused many TH3 tests to fail when the NO_OPT configuration parameter was engaged, and since there really isn't any need to turn that optimization off. The SQLITE_OrderByIdxJoin bit remains. (check-in: [98b633717a] user: drh branch: qp-enhancements, size: 208896) | |
19:53 | [cd047c1223] part of check-in [0d57332005] More test cases an bug fixes for the ORDER BY optimization of joins. All veryquick tests now pass. (check-in: [0d57332005] user: drh branch: qp-enhancements, size: 208914) | |
17:31 | [a537824b2e] part of check-in [75cda864ed] Test cases and bug fixes applied to the ORDER BY optimization for joins. Some test cases fail, but except for the new orderby1.test failures, all failures appear to be issues with the tests, not with the core code. (check-in: [75cda864ed] user: drh branch: qp-enhancements, size: 208713) | |
15:05 | [4b837884c4] part of check-in [d2fcba1e14] Add more bits to the bit vector that is used to disable optimizations for built-in test. Add specific bit patterns to disable ORDER BY using an index in general and for joins. Use macros to test for bits in the disabled-optimization bit vector, in order to make the code clearer. (check-in: [d2fcba1e14] user: drh branch: qp-enhancements, size: 208368) | |
14:11 | [36af33a92c] part of check-in [c29538f9b1] Enable ORDER BY clauses that span joins to be optimized out. (check-in: [c29538f9b1] user: drh branch: qp-enhancements, size: 208390) | |
12:05 | [67438c6192] part of check-in [53efc10af9] Further tweaks to the query planner logic in preparation for adding ORDER BY opt-out for joins. (check-in: [53efc10af9] user: drh branch: qp-enhancements, size: 206719) | |
2012-09-26
| ||
23:17 | [59b852d51d] part of check-in [96496ddae1] Further refactoring of the ORDER BY related query-planning logic in order to make it easier to extend to support optimizing out ORDER BY on joins. No actual behavior changes, yet. (check-in: [96496ddae1] user: drh branch: qp-enhancements, size: 206627) | |
2012-09-25
| ||
20:43 | [e75e67f063] part of check-in [4226e51ff8] Augment the WhereBestIdx structure to pass down into the query planner information that might be used to better detect ORDER BY and DISTINCT optimizations spanning multiple tables of a join. (check-in: [4226e51ff8] user: drh branch: qp-enhancements, size: 205718) | |
14:29 | [82be1d2f8f] part of check-in [1104d42e10] Pass information around between the major routines of the query planner using a single pointer to a structure rather than a long list of parameters. (check-in: [1104d42e10] user: drh branch: qp-enhancements, size: 205288) | |
2012-09-24
| ||
19:50 | [40708330a0] part of check-in [349a55cd8b] Remove an unused subfunction parameter and an obsolete comment from the query planner logic in where.c. (check-in: [349a55cd8b] user: drh branch: trunk, size: 206016) | |
15:30 | [af126a6cdb] part of check-in [22989f3588] Change the internal sqlite3WhereBegin() to report that the ORDER BY clause is satisfied by indices using the WhereInfo.nOBSat field of the returned structure. (check-in: [22989f3588] user: drh branch: trunk, size: 205872) | |
2012-09-21
| ||
22:50 | [3b52eeffab] part of check-in [1be4b16b9e] Enable query planner tracing using the new (and undocumented) ".wheretrace 1" command in the command-line shell if both the shell and the core are compiled with SQLITE_DEBUG and SQLITE_ENABLE_WHERETRACE. This is not a supported API. Use for testing and debugging only. (check-in: [1be4b16b9e] user: drh branch: trunk, size: 205860) | |
2012-09-18
| ||
17:32 | [95a2fe36c5] part of check-in [2be661a480] This change generates incorrect code when there are two or more IN operators in the WHERE clause that are both used by the same index. Was: Omit an unnecessary OP_IfNull that immediately follows an OP_Rowid. (check-in: [2be661a480] user: drh branch: mistake, size: 204981) | |
2012-09-17
| ||
21:24 | [cc3ef08bb6] part of check-in [698b2a2800] Make sure the WHERE_IDX_ONLY flag is not set on query plans that will not be using an index. (check-in: [698b2a2800] user: drh branch: fullscan-covering-index, size: 205809) | |
20:44 | [b124d9d7c6] part of check-in [ccb8ecc30c] Add the ability to disable the covering-index-scan optimization at compile-time, start-time, or at run-time. Add test cases to check this configurability. (check-in: [ccb8ecc30c] user: drh branch: fullscan-covering-index, size: 205775) | |
2012-09-15
| ||
18:45 | [0d9970a606] part of check-in [cfaa7bc128] Attempt to use a covering index even on a full table scan, under the theory that the index will be smaller and require less disk I/O and thus be faster. (check-in: [cfaa7bc128] user: drh branch: fullscan-covering-index, size: 205628) | |
2012-08-25
| ||
02:11 | [22783f4275] part of check-in [929b51840b] Fix a harmless compiler warning. (check-in: [929b51840b] user: drh branch: trunk, size: 204979) | |
00:49 | [a4b2ea85ee] part of check-in [865dfcbaa5] Backport check-in [62678be3df35cd]: When the same index is used for all OR-terms in a WHERE clause, then try to use that index as a covering index. (check-in: [865dfcbaa5] user: drh branch: branch-3.7.2, size: 203059) | |
2012-08-24
| ||
23:24 | [9a28820fb0] part of check-in [b722143d07] Move field WhereLevel.pCovidx inside the union to WhereLevel.u.pCovidx. (check-in: [b722143d07] user: drh branch: multi-or-covering-index, size: 204973) | |
21:54 | [27c9e43fec] part of check-in [5499af53eb] Remove a NEVER() that is in fact reachable on an OOM. This probably has nothing to do with the multi-or-covering-index change but just happened to be found while testing that change. (check-in: [5499af53eb] user: drh branch: multi-or-covering-index, size: 204969) | |
18:44 | [b95276a535] part of check-in [a3e26038a1] Fix a problem to do with multi-or queries and automatic indexes. (check-in: [a3e26038a1] user: dan branch: multi-or-covering-index, size: 204976) | |
10:52 | [b4d98014de] part of check-in [1dc8c7c741] Experimental change to support the covering index optimization for queries with OR terms in the WHERE clause that search a single index more than once. (check-in: [1dc8c7c741] user: dan branch: multi-or-covering-index, size: 205229) | |
2012-05-11
| ||
11:28 | [24c7494d88] part of check-in [2b77301b96] Fix a harmless compiler warning. (check-in: [2b77301b96] user: drh branch: trunk, size: 203244) | |
2012-04-20
| ||
16:59 | [8e9f01cd16] part of check-in [7b8548b187] Do not consider a DISTINCT clause redundant unless a subset of the result-set is collectively subject to a UNIQUE constraint and it can be guaranteed that all columns of the subset are NOT NULL (either due to NOT NULL constraints WHERE clause terms). Fix for [385a5b56b9]. (check-in: [7b8548b187] user: dan branch: trunk, size: 203255) | |
15:24 | [e25ae482e9] part of check-in [9870e4c4fe] Fix for [2a5629202f]. When considering whether or not a UNIQUE index may be used to optimize an ORDER BY clause, do not assume that all index entries are distinct unless there is some reason to believe that the index contains no NULL values. (check-in: [9870e4c4fe] user: dan branch: trunk, size: 203021) | |
2012-03-29
| ||
14:29 | [2112422a40] part of check-in [0bacb879e1] Disable the LIKE optimization if the column on the left-hand-side of the LIKE operator belongs to a virtual table. (check-in: [0bacb879e1] user: dan branch: trunk, size: 202604) | |
2012-03-28
| ||
01:34 | [44d78f5811] part of check-in [b899dbeb60] Evaluate typeof(X) and length(Y) where X is any column and Y is a blob column without actually loading X and Y from disk. (check-in: [b899dbeb60] user: drh branch: faster-typeof-and-length, size: 202568) | |
2012-03-16
| ||
00:28 | [6baab5dfcf] part of check-in [74eadeec34] Fix harmless compiler warnings. (check-in: [74eadeec34] user: drh branch: trunk, size: 202565) | |
2012-03-09
| ||
22:02 | [d4ce63a288] part of check-in [0dc4cb9355] Candidate fix for the optimizer problem described in ticket [b7c8682cc17f3] which can causes a LEFT JOIN to be changed into a INNER JOIN if there are OR terms in the WHERE clause. (check-in: [0dc4cb9355] user: drh branch: trunk, size: 202603) | |
2012-03-03
| ||
00:34 | [f2cf59751f] part of check-in [dec9a995d7] Fix a bug [3557ad65a07] that causes incorrect DISTINCT processing on an indexed query involving the IN operator. (check-in: [dec9a995d7] user: drh branch: trunk, size: 201891) | |
2011-12-09
| ||
13:24 | [af62394251] part of check-in [557c69055a] Modify the OP_Once opcode so that it works correctly in trigger sub-programs. This is a candidate fix for [7bbfb7d442]. (check-in: [557c69055a] user: dan branch: trunk, size: 201848) | |
2011-11-16
| ||
15:27 | [f73752ca85] part of check-in [3b58f5f066] Where possible, take advantage of the rowid at the end of index records to optimize range constraints (<, >, <=, >=) on the rowid column. (check-in: [3b58f5f066] user: dan branch: trunk, size: 201962) | |
2011-10-21
| ||
19:06 | [7c85f4c930] part of check-in [aed2bf7a3c] Purge lingering references to SQLITE_STAT2 from the code and test scripts. (check-in: [aed2bf7a3c] user: drh branch: trunk, size: 201374) | |
16:47 | [922145a39c] part of check-in [76de9914be] Remove stale requirements marks from the query planner. (check-in: [76de9914be] user: drh branch: trunk, size: 201374) | |
2011-10-18
| ||
19:14 | [b617d9e1ed] part of check-in [54aecd9298] Fix an uninitialized variable in OR-clause processing. (check-in: [54aecd9298] user: drh branch: trunk, size: 201449) | |
2011-10-15
| ||
00:16 | [813233b3b2] part of check-in [39408702a9] Added the tool/warnings-clang.sh script. Changes so that there are no warnings with either gcc or clang even including FTS4 and RTREE and both with and without SQLITE_THREADSAFE=0. (check-in: [39408702a9] user: drh branch: trunk, size: 201416) | |
2011-10-14
| ||
21:49 | [0db7e2db51] part of check-in [60fee9574b] Add assert() statements and eliminate needless variable assignments in order to get the clang scan-build utility to report zero problems against the SQLite core. Clang's static analysis did find one real problem - but it was in the command-line shell, not in the SQLite core. (check-in: [60fee9574b] user: drh branch: trunk, size: 201425) | |
2011-10-11
| ||
12:39 | [12939ac49f] part of check-in [9325c1a8c4] Fix requirements marks associate with STAT3. (check-in: [9325c1a8c4] user: drh branch: trunk, size: 201330) | |
2011-10-07
| ||
17:45 | [a6d127dd05] part of check-in [5c13259282] Add testcase() macros to ensure good test coverage. (check-in: [5c13259282] user: drh branch: or-opt, size: 201330) | |
14:40 | [2e82da485a] part of check-in [9fca05eac5] Prevent infinite recursion of in the query planner for some pathological test cases by disabling OR-clause processing upon first recursion. (check-in: [9fca05eac5] user: drh branch: or-opt, size: 201219) | |
13:33 | [80c53e8e21] part of check-in [876bd21aaa] Begin an effort to enhance the query planner to do a better job with OR terms in the WHERE clause. This change allows ANDs outside of the OR to be factored into the OR terms if that is helpful in finding better indices. (check-in: [876bd21aaa] user: drh branch: or-opt, size: 200900) | |
2011-09-23
| ||
13:59 | [aafcb21a74] part of check-in [be44928cf2] Testability enhancements. (check-in: [be44928cf2] user: drh branch: stat3-trunk, size: 199560) | |
2011-09-22
| ||
18:46 | [432a42cf43] part of check-in [3ca7e449e2] Fix an issue in ANALYZE when STAT3 is disabled but both sqlite_stat2 and sqlite_stat3 tables exist. Also add testability tweaks to the STAT3 code. (check-in: [3ca7e449e2] user: drh branch: stat3-trunk, size: 199523) | |
00:28 | [bd9ca1bb5a] part of check-in [ee110d5a4a] Fix an uninitialized variable and a misuse of memcpy(). (check-in: [ee110d5a4a] user: drh branch: stat3-trunk, size: 199488) | |
2011-09-21
| ||
00:09 | [da04df6f00] part of check-in [63fc3e4bea] Pull in the latest changes from trunk. Update the STAT3 documentation. (check-in: [63fc3e4bea] user: drh branch: stat3-trunk, size: 199488) | |
2011-09-16
| ||
19:29 | [4d7321662f] part of check-in [51908c8f2b] Merge all the latest trunk changes into the experimental STAT3 branch. (check-in: [51908c8f2b] user: drh branch: stat3-trunk, size: 199488) | |
19:04 | [b641d399cf] part of check-in [cf51ef8ab8] Remove unreachable branches from the previous change. Add additional test cases. (check-in: [cf51ef8ab8] user: drh branch: trunk, size: 201582) | |
17:43 | [73234bca5e] part of check-in [0156f10e23] When analyzing the right-hand side of IN operators to see if the IN operator can work with an index, be sure to decend into nested subqueries. Fix for ticket [1a1308d2538d7] (check-in: [0156f10e23] user: drh branch: trunk, size: 201576) | |
01:34 | [e7be35164f] part of check-in [7f00552b73] Add the new OP_Once opcode. Use it to clean up and simplify various one-time initialization sections in the code, including the fix for ticket [002caede898ae]. (check-in: [7f00552b73] user: drh branch: tkt-002caede898, size: 201337) | |
2011-08-26
| ||
13:52 | [9323b7a65e] part of check-in [0df04f920b] Merge branches branch-3.7.2 and stat3-enhancement into a new branch for testing purposes. (check-in: [0df04f920b] user: drh branch: stat3-3.7.2, size: 199244) | |
2011-08-16
| ||
17:06 | [3d9a78a422] part of check-in [3d68f9afee] Fix a few harmless compiler warnings. Add SQLITE_ENABLE_STAT3 to the standard compiler warning script. (check-in: [3d68f9afee] user: drh branch: stat3-enhancement, size: 199291) | |
2011-08-13
| ||
19:35 | [118896232f] part of check-in [89b2f70884] Further testing and bug fixing for sqlite_stat3. Added the Index.avgEq field to index statistics. Fixed several problems in the query planner associated with stat3. (check-in: [89b2f70884] user: drh branch: stat3-enhancement, size: 199296) | |
2011-08-12
| ||
01:51 | [24d95b2181] part of check-in [52e1d7e8dd] Begin a branch that experimentally replaces sqlite_stat2 with a new table called sqlite_stat3 that will hopefully facilitate better query planning decisions. (check-in: [52e1d7e8dd] user: drh branch: stat3-enhancement, size: 198995) | |
2011-08-08
| ||
17:18 | [67c87af704] part of check-in [d1248165e3] Add code to actually use the sqlite_stat2.cnt field in the query planner. This changes some plans resulting in a few failures in analyze5.test. (check-in: [d1248165e3] user: drh branch: query-planner-tweaks, size: 202535) | |
2011-08-06
| ||
19:48 | [67ad221f87] part of check-in [6d1e2372fe] The sqlite_stat2.cnt field is parsed if it is present. But it is not yet used. A large comment added to analyze.c to explain the format of the ANALYZE system tables. (check-in: [6d1e2372fe] user: drh branch: query-planner-tweaks, size: 201390) | |
2011-08-05
| ||
01:09 | [b8ebb50b82] part of check-in [b9d41c3490] Allow the sqlite_stat2 table to contain a number of samples other than the default of 10. (check-in: [b9d41c3490] user: drh branch: query-planner-tweaks, size: 201375) | |
2011-08-03
| ||
01:07 | [e169242225] part of check-in [c8ba8855d8] Adjust the output row estimating logic when using STAT2. (check-in: [c8ba8855d8] user: drh branch: query-planner-tweaks, size: 201385) | |
2011-08-02
| ||
01:57 | [7d09f4c151] part of check-in [a55f4ab999] Make sure IS NOT NULL constraints work on virtual tables. Fix for ticket [6c14288a473ceff]. (check-in: [a55f4ab999] user: drh branch: trunk, size: 201385) | |
2011-07-13
| ||
18:53 | [db40458b67] part of check-in [d55b64ef7e] Cherrypicked from trunk: Do not try to use STAT2 for row estimates if the index is unique or nearly so. (check-in: [d55b64ef7e] user: drh branch: branch-3.7.2, size: 201330) | |
18:31 | [106cd9ab3e] part of check-in [efffc49baf] Do not try to use STAT2 to refine the row estimate of a query that uses a unique or nearly-unique index. (check-in: [efffc49baf] user: drh branch: trunk, size: 201289) | |
2011-07-12
| ||
14:48 | [def5ef5359] part of check-in [7afb2354d3] Cherrypick change [9f14fa56ba] (the fix for [54844eea3f]) from the trunk. (check-in: [7afb2354d3] user: dan branch: branch-3.7.2, size: 201235) | |
2011-07-11
| ||
15:52 | [bc46a3e6e3] part of check-in [8daf6e1b42] Here is an attempted enhancement to the query planner that didn't work out. But it seems good to save this change for historical reference, even if it does not belong on the trunk. (check-in: [8daf6e1b42] user: drh branch: query-planner-deadend, size: 201520) | |
2011-07-09
| ||
13:00 | [ce7cce80c5] part of check-in [418a4da2a9] In where.c::findIndexCol - make sure that the Expr.op is TK_COLUMN before accessing the Expr.iColumn and Expr.iTable fields. Also fix a couple of unreachable branches. (check-in: [418a4da2a9] user: drh branch: trunk, size: 201194) | |
2011-07-08
| ||
16:10 | [defae982c6] part of check-in [9f14fa56ba] Fix for [54844eea3f]: Do not create automatic indexes on correlated sub-queries. (check-in: [9f14fa56ba] user: dan branch: trunk, size: 201164) | |
13:07 | [c814c35a27] part of check-in [18501dd1a8] Extend the SQLITE_TESTCTRL_OPTIMIZATIONS option to disable DISTINCT optimizations. (check-in: [18501dd1a8] user: drh branch: trunk, size: 201047) | |
2011-07-02
| ||
19:12 | [c80c154db7] part of check-in [ff9fc722dc] Add a testcase macro to ensure testing a boundary case in DISTINCT processing. (check-in: [ff9fc722dc] user: drh branch: trunk, size: 200859) | |
15:42 | [f4561d5258] part of check-in [9bbcd8c076] Cherrypick change [27c65d4d9c] into the 3.7.2 branch. (check-in: [9bbcd8c076] user: dan branch: branch-3.7.2, size: 201118) | |
15:32 | [30dc117ecd] part of check-in [27c65d4d9c] Ensure that automatic indexes are only created in scenarios where they may be used more than once. (check-in: [27c65d4d9c] user: dan branch: trunk, size: 200820) | |
13:34 | [ecdf9bfa72] part of check-in [c593792ce0] Cherrypick [45e581bff7] into the 3.7.2 branch. (check-in: [c593792ce0] user: dan branch: branch-3.7.2, size: 200986) | |
06:44 | [dcc0d91cc4] part of check-in [090b29177f] Fix a broken assert() in where.c. (check-in: [090b29177f] user: dan branch: experimental, size: 200688) | |
2011-07-01
| ||
18:26 | [83cf8e8637] part of check-in [6c202ea024] Improve use of indexes to optimize DISTINCT queries. (check-in: [6c202ea024] user: dan branch: experimental, size: 200583) | |
14:21 | [207cf2c12b] part of check-in [7337293c87] Improvements and tests for detection of redundant DISTINCT qualifiers. (check-in: [7337293c87] user: dan branch: experimental, size: 197585) | |
2011-06-30
| ||
20:17 | [0bdcf6704d] part of check-in [f7ba0219ef] Experimental changes to improve optimization of DISTINCT queries. (check-in: [f7ba0219ef] user: dan branch: experimental, size: 197761) | |
2011-04-09
| ||
03:30 | [c232055196] part of check-in [803530209f] Back port the unordered-index-hack to the 3.7.2 branch. (check-in: [803530209f] user: drh branch: branch-3.7.2, size: 194256) | |
03:20 | [55403ce19c] part of check-in [8a42e23670] If the keyword "unordered" appears at the end of the SQLITE_STAT1.STAT column for an index, then use that index for equality lookups only, never for range queries or sorting. This feature is currently undocumented and my change or be removed in a future release. (check-in: [8a42e23670] user: drh branch: trunk, size: 193958) | |
2011-04-08
| ||
23:04 | [6a465e780b] part of check-in [e8177e0149] Make sure the left-hand side of the IS NOT NULL operator is a simple column and not a general expression before applying the IS NOT NULL optimization. This is a backport of check-in [543f75a6abe3]. (check-in: [e8177e0149] user: drh branch: branch-3.7.2, size: 194198) | |
21:35 | [494d106959] part of check-in [543f75a6ab] Always make sure the left-hand side of the IS NOT NULL operator is a simple column, not a general expression, before applying the IS NOT NULL query optimization. (check-in: [543f75a6ab] user: drh branch: trunk, size: 193900) | |
2011-04-07
| ||
19:56 | [9af3810842] part of check-in [5bbfa17d4d] Change two new internal functions in where.c from global to file scope. (check-in: [5bbfa17d4d] user: drh branch: trunk, size: 193861) | |
2011-04-05
| ||
22:08 | [71e6808f74] part of check-in [3eeb0ff78d] Suppress many harmless compiler warnings, mostly signed/unsigned comparisons within asserts or unused parameters in extensions. (check-in: [3eeb0ff78d] user: drh branch: trunk, size: 193847) | |
2011-04-01
| ||
02:26 | [176574bfee] part of check-in [e3bf2d5ce4] Fix two compiler errors associated with non-standard compile-time options. (check-in: [e3bf2d5ce4] user: drh branch: trunk, size: 193842) | |
2011-03-31
| ||
18:36 | [51e6657e2d] part of check-in [a5aae1743a] Provide hints to the btree layer Next and Previous primitives to let them know if they can be no-ops if the underlying index is unique. (check-in: [a5aae1743a] user: drh branch: branch-3.7.2, size: 194159) | |
2011-03-29
| ||
15:00 | [8614b235f8] part of check-in [3b964155f6] If the keyword "unordered" appears at the end of the SQLITE_STAT1.STAT column for an index, then use that index for equality lookups only, never for range queries or sorting. (check-in: [3b964155f6] user: drh branch: unordered-index-hack, size: 193900) | |
2011-03-17
| ||
01:58 | [a6e89fe7e5] part of check-in [869f894798] Comment enhancement to better explain the logic in the "x IS NULL" optimization. (check-in: [869f894798] user: drh branch: trunk, size: 193842) | |
01:53 | [deee520307] part of check-in [68daf20d01] Backport the "x IS NULL" query planner enhancement of [2353176811f] to the 3.7.2 branch. (check-in: [68daf20d01] user: drh branch: branch-3.7.2, size: 193965) | |
01:34 | [a41a1c64ac] part of check-in [2353176811] Enhances to the query planner such that "x IS NULL" constraints take the STAT2 statistics into account, just like "x=VALUE" constraints. (check-in: [2353176811] user: drh branch: trunk, size: 193758) | |
2011-03-09
| ||
22:09 | [124e56fc30] part of check-in [2d55234ea3] Backport the OP_Next and OP_Prev for UNIQUE indices patch from checkin [f000c9b2b7] on the trunk. (check-in: [2d55234ea3] user: drh branch: branch-3.7.2, size: 193776) | |
21:02 | [27c2f4e249] part of check-in [f000c9b2b7] Omit unnecessary OP_Next and OP_Prev operators when uniqueness constraints guarantee that the code will only make one pass through the loop. (check-in: [f000c9b2b7] user: drh branch: trunk, size: 193569) | |
2011-03-06
| ||
21:28 | [3bc364eeff] part of check-in [01a79d5a7a] Remove dead code identified by the clang static analyzer. (check-in: [01a79d5a7a] user: drh branch: trunk, size: 193442) | |
2011-03-04
| ||
01:23 | [4d5918de31] part of check-in [440d995661] Backport the query planner enhancement of [952f5e8c69904] to the 3.7.2 branch. (check-in: [440d995661] user: drh branch: branch-3.7.2, size: 193649) | |
00:56 | [d7b073867e] part of check-in [952f5e8c69] Do a better job of choosing the join table order when the tables having very different numbers of rows. (check-in: [952f5e8c69] user: drh branch: trunk, size: 193619) | |
2011-02-17
| ||
13:52 | [bf8c0f584a] part of check-in [21db719156] Remove an assert() that was made redundant by the previous checkin. (check-in: [21db719156] user: drh branch: trunk, size: 193535) | |
13:33 | [259a727427] part of check-in [8123283ee1] Add an ALWAYS() around a always-true test in where.c. (check-in: [8123283ee1] user: drh branch: trunk, size: 193581) | |
2011-02-16
| ||
23:32 | [ebc531430a] part of check-in [31fc4ba66e] Fix harmless compiler warnings in the query planner. (check-in: [31fc4ba66e] user: drh branch: trunk, size: 193573) | |
2011-02-11
| ||
06:59 | [9c140acd52] part of check-in [a5c36b9f39] Fix a bug in the new WHERE-clause processing that tries to use an index to resolve IS NOT NULL constraints when SQLITE_ENABLE_STAT2 is defined. The bug could cause memory overruns and segfaults. The bug was new to the code and has not appeared in an official release. Found during structural testing. (check-in: [a5c36b9f39] user: drh branch: trunk, size: 193565) | |
03:56 | [96d634b853] part of check-in [d78949fc93] Allow an index paired with an IS NULL constraint to be used for sorting under the condition that the index be treated as a non-unique index. (check-in: [d78949fc93] user: drh branch: trunk, size: 193517) | |
02:43 | [612ca339d1] part of check-in [5ecd117882] Disable unused NULL tests when SQLITE_ENABLE_STAT2 is not in use. (check-in: [5ecd117882] user: drh branch: trunk, size: 193251) | |
2011-02-10
| ||
17:46 | [ebecb7b9e0] part of check-in [f01030a0df] Prevent a segfault when automatic indices try to use a column with an unknown collating function. Ticket [77aa3b1e6592582e38605d36]. This check-in also removes some stray \r characters unrelated to the problem. (check-in: [f01030a0df] user: drh branch: trunk, size: 193146) | |
00:08 | [83a89fe482] part of check-in [878da276eb] Refactor the cost function in the query planner. Give extra cost (thus reduce likelihood of selection) to full table scans. (check-in: [878da276eb] user: drh branch: trunk, size: 193081) | |
2011-02-09
| ||
03:04 | [0ff78ba478] part of check-in [5f2ec44b22] Use macros to define the relative costs of search and seek operations when computing costs in the query planner. Current constants seems wrong and need to be fixed, but doing so will alter test results. Need more experimentation to determine accurate relative costs. (check-in: [5f2ec44b22] user: drh branch: trunk, size: 193475) | |
2011-01-28
| ||
01:57 | [f4915ac03e] part of check-in [4847c6cb71] Change the weighting of binary searches on tables to 1/10th the cost of a search on an index. Change the assumed reduction in search space from a indexed range constraint from 1/3rd to 1/4th. Do not let the estimated number of rows drop below 1. (check-in: [4847c6cb71] user: drh branch: stat2-enhancement, size: 192073) | |
2011-01-24
| ||
15:11 | [87de261615] part of check-in [b442525b0b] Change the cost estimator in the query planner to take into account the logN rowid lookup cost when going from an index to a table. (check-in: [b442525b0b] user: drh branch: stat2-enhancement, size: 189643) | |
2011-01-22
| ||
00:10 | [99a9ea7711] part of check-in [5d5bddd290] Add the ability to use indices for constraints of the form "x IS NOT NULL" when sqlite_stat2 is available and most entries for column x are NULL. (check-in: [5d5bddd290] user: drh branch: stat2-enhancement, size: 189660) | |
2011-01-21
| ||
18:18 | [2de6723cfb] part of check-in [c82cb9c028] Adjustments to the result row estimator for the IN operator so that it gives the same estimates as the equivalent OR operator. Test cases for the same. (check-in: [c82cb9c028] user: drh branch: stat2-enhancement, size: 188060) | |
16:27 | [7f2844afff] part of check-in [fd3977a27a] Make use of histogram data to make better estimates for the number of rows that will be returned from "x IN (v1,v2,v3,...)" constraints. (check-in: [fd3977a27a] user: drh branch: stat2-enhancement, size: 187612) | |
14:37 | [cf219a4275] part of check-in [f73a167b43] Add the ability to use indices when a range contraint is bounded on the lower end by NULL. (check-in: [f73a167b43] user: drh branch: stat2-enhancement, size: 184667) | |
2011-01-20
| ||
16:52 | [068ecc5195] part of check-in [6bfc5c69eb] Use histogram data to improve the row-count estimates on equality constraints. (check-in: [6bfc5c69eb] user: drh branch: stat2-enhancement, size: 184007) | |
02:56 | [5cd6b88d57] part of check-in [2cd374cd23] The first of a planned series of enhancements to the query planner that enable it to make better use of sqlite_stat2 histograms when the table has many repeated values. (check-in: [2cd374cd23] user: drh branch: stat2-enhancement, size: 181610) | |
2010-12-16
| ||
19:52 | [af069e6b53] part of check-in [70a3d81742] Fix an assertion fault that can only occur if SQLITE_ENABLE_STAT2 is defined and the constant folding optimization is disabled using sqlite3_test_control(). Problem introduced by [ad8bc68197f2b4] but we missed it prior to the 3.7.4 release due to taking shortcuts and skipping tests in the release checklist. (check-in: [70a3d81742] user: drh branch: trunk, size: 180630) | |
2010-11-18
| ||
13:47 | [fa22d45b25] part of check-in [6c4f1d5c24] Fix compiler warnings. (check-in: [6c4f1d5c24] user: drh branch: trunk, size: 180776) | |
2010-11-16
| ||
02:49 | [d5cc65f516] part of check-in [56bbc53924] Use the estimated number of rows computed for subqueries in the cost computations for outer queries. (check-in: [56bbc53924] user: drh branch: trunk, size: 180788) | |
2010-11-15
| ||
21:50 | [6ba0540b6f] part of check-in [d52b593978] Change the EQP output for the min/max optimization from "SCAN" to "SEARCH". Other changes in where.c in support of full branch coverage testing. (check-in: [d52b593978] user: drh branch: trunk, size: 180715) | |
16:29 | [f4023c5f2f] part of check-in [136c2ac24e] Fix the EQP logic so that it correctly reports OOM errors while formatting "detail" text. (check-in: [136c2ac24e] user: drh branch: trunk, size: 180511) | |
2010-11-13
| ||
16:42 | [5a982c3423] part of check-in [6611b76b02] Change the EXPLAIN QUERY PLAN output to use "USING INDEX" instead of "BY INDEX", and to use "SEARCH" instead of "SCAN" for loops that are not full-table scans. (check-in: [6611b76b02] user: dan branch: experimental, size: 180496) | |
2010-11-12
| ||
15:36 | [2a5a0c68cc] part of check-in [6fdae9a635] Reduce the number of branches that need to be tested in the explainIndexRange() function of where.c. (check-in: [6fdae9a635] user: drh branch: experimental, size: 180250) | |
2010-11-11
| ||
11:43 | [6c1905c835] part of check-in [7ae068952f] Fix a bug in the EXPLAIN QUERY PLAN code. (check-in: [7ae068952f] user: dan branch: experimental, size: 179477) | |
2010-11-09
| ||
17:35 | [2b69056fb5] part of check-in [925f35c535] Add missing comments and fix other issues with routines used by new EQP features. (check-in: [925f35c535] user: dan branch: experimental, size: 179427) | |
14:49 | [8aded05b98] part of check-in [73c93f5a2a] Further enhancements and fixes for explain query plan. (check-in: [73c93f5a2a] user: dan branch: experimental, size: 178428) | |
2010-11-08
| ||
19:01 | [ddfe0e1ac1] part of check-in [f4747eb83d] Experimental changes to EXPLAIN QUERY PLAN. (check-in: [f4747eb83d] user: dan branch: experimental, size: 177981) | |
2010-10-21
| ||
03:13 | [d9a31eb3d5] part of check-in [1e0db99797] Add new WHERETRACE macros for better diagnostics of the query planner. Added a new test case for the performance regression fixed by the previous check-in. (check-in: [1e0db99797] user: drh branch: trunk, size: 175902) | |
02:05 | [4ca22dea63] part of check-in [28ba625528] Fix the query planner so that it uses the multi-index OR-clause solution if that is the lowest cost estimate. A prior bug cause the multi-index solution to be ignored in some circumstances. (check-in: [28ba625528] user: drh branch: trunk, size: 175620) | |
2010-10-04
| ||
23:55 | [204cdfb66e] part of check-in [ece641eb89] Fix a performance regression (relative to version 3.6.23.1) caused by the query planner taking into account non-indexable WHERE clause terms to select the outermost join loops when it should be selecting tables for the outermost loop that do not benefit from being in an inner loop. (check-in: [ece641eb89] user: drh branch: trunk, size: 175580) | |
2010-09-25
| ||
22:32 | [34c733f9e8] part of check-in [a7645d2938] Enhance the ANALYZE command so that it gathers statistics in the sqlite_stat1 table even for tables that are empty or have no indices. (check-in: [a7645d2938] user: drh branch: trunk, size: 174814) | |
2010-09-14
| ||
18:23 | [a5040c0044] part of check-in [3e11f5155c] Clarify the documentation to better explain when an automatic re-prepare can be induced by rebinding parameters. Add evidence marks to the automatic re-prepare logic. (check-in: [3e11f5155c] user: drh branch: trunk, size: 175238) | |
2010-08-17
| ||
23:13 | [0777e1f8f1] part of check-in [220cca50da] Cherrypick the changes for enhancement requests [e090183531fc27474] (use indices on LIKE with no wildcards) and [4711020446da7d93d993] (use nocase index for LIKE even if the column is binary) into the 3.6.23.1 release of the Apple-OSX branch. (check-in: [220cca50da] user: drh branch: apple-osx-3623, size: 156561) | |
2010-08-06
| ||
02:10 | [7db3e41c2a] part of check-in [a7a15547cc] Change two automatic array variables into static constant arrays. Update and reformat some comments for cleaner presentation. (check-in: [a7a15547cc] user: drh branch: trunk, size: 175153) | |
2010-08-05
| ||
02:52 | [a4b2cb14db] part of check-in [309bbedf96] Fix the query planner so that when it has a choice of full-scan tables to move to the outer loop, it chooses the one that is likely to give the fewest output rows. Ticket [13f033c865f878]. (check-in: [309bbedf96] user: drh branch: trunk, size: 175065) | |
2010-08-04
| ||
21:17 | [a1398b29b8] part of check-in [e7a714b52c] If the outer loop of a join must be a full table scan, make sure that an incomplete ANALYZE does not trick the planner into use a table that might be indexable in an inner loop. Ticket [13f033c865f878] (check-in: [e7a714b52c] user: drh branch: trunk, size: 174151) | |
2010-07-24
| ||
19:08 | [8cf9ca6fff] part of check-in [e5ecb15984] Additional malloc sanity changes. Use sqlite3MemLink() on Index.zColAff and Table.zColAff as a proof of concept. (check-in: [e5ecb15984] user: drh branch: malloc-enhancement, size: 172904) | |
16:34 | [79202ca81e] part of check-in [ac1f37a647] Make sure all memory from sqlite3DbMalloc() is freed by sqlite3DbFree() and all memory from sqlite3_malloc() is freed by sqlite3_free(). (check-in: [ac1f37a647] user: drh branch: malloc-enhancement, size: 172980) | |
2010-07-22
| ||
22:40 | [62262cee28] part of check-in [f3f9e8e5bb] Add evidence marks to the where.c source file. Comment only - no code changes. (check-in: [f3f9e8e5bb] user: drh branch: trunk, size: 172993) | |
17:49 | [19a0f80a75] part of check-in [9f932655f9] Enhance the LIKE/GLOB query optimization so that it works as long as there is an index with the appropriate collating sequence and even if the default collating sequence of the column is different. Ticket [4711020446da7d93d99]. (check-in: [9f932655f9] user: drh branch: trunk, size: 171654) | |
12:33 | [3ba8350d5a] part of check-in [613a87d62f] Try to optimize LIKE and GLOB operators when RHS contains no wildcard. Ticket [e090183531fc274747] (check-in: [613a87d62f] user: drh branch: trunk, size: 172092) | |
2010-07-14
| ||
20:23 | [903a7828a0] part of check-in [fd130ae56c] The expression list on the RHS of an IN operator can no longer be empty because an empty expression list is now optimized out by changes in check-in [c288ac644d0bf]. Therefore add ALWAYS() macros around tests for the expression list being non-empty. (check-in: [fd130ae56c] user: drh branch: trunk, size: 172105) | |
2010-07-03
| ||
01:44 | [926c83c639] part of check-in [15bb623306] Fix a buffer overrun in the where.c. Problem detected by valgrind. (check-in: [15bb623306] user: drh branch: mistake, size: 172097) | |
2010-07-02
| ||
17:05 | [9c642e4f74] part of check-in [7083387739] Fix some warnings when compiling under MSVC. (check-in: [7083387739] user: shaneh branch: mistake, size: 172076) | |
2010-06-09
| ||
15:47 | [1c895bef33] part of check-in [6eb058dda8] Fix for ticket [f973c7ac31]. (check-in: [6eb058dda8] user: dan branch: trunk, size: 172071) | |
2010-04-30
| ||
21:03 | [75fee9e255] part of check-in [946e06cd2a] Avoid assertion faults in queries using indices with redundant columns. Ticket [3dbdcdb14e7f41]. (check-in: [946e06cd2a] user: drh branch: trunk, size: 171845) | |
2010-04-15
| ||
12:36 | [faadd9c2bf] part of check-in [33b1f584ef] Fix a problem in the result set size estimation logic of the query planner - a problem introduced by the two previous changes. (check-in: [33b1f584ef] user: drh branch: wal, size: 171708) | |
01:04 | [74ff6f0d96] part of check-in [defaf0d99a] Further refinements to table order selection on join query planning. (check-in: [defaf0d99a] user: drh branch: trunk, size: 170921) | |
2010-04-14
| ||
19:01 | [458b6e0d5e] part of check-in [b87cb0c2bd] The query planner uses non-indexable WHERE clause terms to reduce the estimated number of output rows, then uses the estimated number of output rows as a tie-breaker when choosing table order. (check-in: [b87cb0c2bd] user: drh branch: trunk, size: 169582) | |
2010-04-08
| ||
17:28 | [9472b11332] part of check-in [b04a528249] Fix code coverage problems in where.c. (check-in: [b04a528249] user: drh branch: trunk, size: 168233) | |
15:01 | [93621d17d9] part of check-in [edeab06a50] Fix the computation of the number of rows in a table during automatic index generation. (check-in: [edeab06a50] user: drh branch: trunk, size: 168260) | |
14:38 | [15a4eef6bc] part of check-in [af97b4881a] Fix an integer overflow bug in the automatic index logic. The bug was detected by the testcase() macros added in the previous check-in. Also add some more testcase() macros, since this issue points up their importance. (check-in: [af97b4881a] user: drh branch: trunk, size: 168256) | |
14:15 | [3a4a32910f] part of check-in [7286547847] Add testcase() macros to the automatic index logic to insure that boundary cases are tested. (check-in: [7286547847] user: drh branch: trunk, size: 168127) | |
00:40 | [28c270dc93] part of check-in [d067d9f7a9] When constructing automatic indices do not include the same column more than once. (check-in: [d067d9f7a9] user: drh branch: experimental, size: 167989) | |
2010-04-07
| ||
16:54 | [b3a57071f4] part of check-in [a811a47fbe] Wrap all automatic index changes inside SQLITE_OMIT_AUTOMATIC_INDEX. Add the automatic_index PRAGMA to turn it on and off. (check-in: [a811a47fbe] user: drh branch: experimental, size: 167656) | |
14:59 | [186b72b01f] part of check-in [2364313142] Make sure that all automatic indices are covering indices. Otherwise, the table and index might be used together in a query but the table could get out of sync with the automatic index through out-of-band changes. (check-in: [2364313142] user: drh branch: experimental, size: 167172) | |
2010-04-06
| ||
22:33 | [6831620423] part of check-in [abbf16e5e7] Veryquick.test is now working. The SQLITE_STMTSTATUS_AUTOINDEX counter added. (check-in: [abbf16e5e7] user: drh branch: experimental, size: 165576) | |
18:51 | [7e924eac52] part of check-in [a8224448cc] Runs quicktest without hitting an assert now. Some tests get unexpected results still and there is a memory leak. (check-in: [a8224448cc] user: drh branch: experimental, size: 165378) | |
18:28 | [4112c8011c] part of check-in [ac6d0fba78] Progress toward getting automatic indices to work. Still failing in corner cases. (check-in: [ac6d0fba78] user: drh branch: experimental, size: 165502) | |
15:57 | [31a93f75fe] part of check-in [1b2a04125f] Automatically generate transient indices for tables in joins that would otherwise have to use a full table scan. (check-in: [1b2a04125f] user: drh branch: experimental, size: 164638) | |
2010-03-31
| ||
17:47 | [8bbb34e8a8] part of check-in [06b9ca3225] Clarification of the implementation of SQLITE_STMTSTATUS_FULLSCAN_STEP. No logical code changes - just commenting and layout changes to improve readability. (check-in: [06b9ca3225] user: drh branch: trunk, size: 157427) | |
2010-03-27
| ||
09:44 | [71ef4e8971] part of check-in [9e075e70f0] Increase the estimated cost of using a virtual table as the outer loop of a join when there exists an ORDER BY clause that is not satisfied by the virtual table. Fix for [775b39dd3c]. (check-in: [9e075e70f0] user: dan branch: trunk, size: 157341) | |
2010-02-25
| ||
04:15 | [399ea4c090] part of check-in [f0ae251abb] Make sure the ON clause of a LEFT JOIN does not cause an index to be used to speed access to a table to the left of the join. Ticket [ebdbadade5] (check-in: [f0ae251abb] user: drh branch: trunk, size: 157012) | |
02:32 | [0fab05c992] part of check-in [46f406b202] Merge in all of the logging enhancements. This is a cherrypick merge of the following check-ins: [103321e37a], [a8076aede3], [6d910245ad], [7c4cca6d1a], [edea3bb740], [1a6d4bb130], [a8c984c1d6], [69a493182f], and [1168763d2c]. (check-in: [46f406b202] user: drh branch: branch-3.6.22, size: 156905) | |
2010-02-23
| ||
17:36 | [9269ec75e1] part of check-in [7c4cca6d1a] Remove the obsolete sqlite3SafetyOn() mechanism. Add additional logging output for CORRUPT, and CANTOPEN errors. (check-in: [7c4cca6d1a] user: drh branch: trunk, size: 156908) | |
2010-01-21
| ||
23:11 | [1041ef1174] part of check-in [a82e6b4585] Fix a segfault that can occur when the LHS of a LIKE operator has an undefined collating sequence. Ticket [1258875e07553]. (check-in: [a82e6b4585] user: drh branch: trunk, size: 156983) | |
2009-12-31
| ||
19:06 | [43b11af016] part of check-in [6cf76c2ae2] Changes to remove warnings in MSVC build. (check-in: [6cf76c2ae2] user: shaneh branch: trunk, size: 156980) | |
2009-12-30
| ||
14:12 | [62553021ae] part of check-in [cc6b959bc1] Adjustments to column cache handling in order to restore 100% branch test coverage. (check-in: [cc6b959bc1] user: drh branch: trunk, size: 156951) | |
2009-12-24
| ||
16:00 | [5bf4b84dbd] part of check-in [ea4e57e1c1] Immediately purge entries from the column cache when the associated register undergoes an affinity change. Ticket [eb5548a849]. Enhance the SQLITE_TESTCTRL_OPTIMIZATIONS setting of sqlite3_test_control so that it can disable the column cache for testing purposes, in an effort to prevent future problems of a similar nature to this one. (check-in: [ea4e57e1c1] user: drh branch: trunk, size: 156948) | |
2009-12-16
| ||
23:28 | [f20ee9a15c] part of check-in [867347323b] Fix for the "(x AND y) OR z" bug backported to version 3.6.21. (check-in: [867347323b] user: drh branch: branch-3.6.21, size: 156951) | |
22:10 | [5d057a1054] part of check-in [2c2de25266] Ensure WHERE clause terms involving tables on the right end of a join are not prematurely evaluated when tables on the left end of the join make use of the OR-clause optimization. Fix for ticket [31338dca7e]. (check-in: [2c2de25266] user: drh branch: trunk, size: 157055) | |
2009-11-23
| ||
21:23 | [11b5b00c49] part of check-in [83dc7d38c2] Make sure registers computed for the VFilter opcode are marked invalid after the VFilter opcode finishes. Ticket [16fbf14cb2]. (check-in: [83dc7d38c2] user: drh branch: trunk, size: 154762) | |
2009-11-18
| ||
01:25 | [6dedaffcf8] part of check-in [bf6c0bd1c5] Suppress more instances of unnecessary OP_IsNull and OP_Affinity opcodes. (check-in: [bf6c0bd1c5] user: drh branch: trunk, size: 154692) | |
2009-11-17
| ||
18:31 | [ef0dbd3963] part of check-in [ebb0c8a3e9] Code generator tries to avoid pointless OP_IsNull and OP_Affinity opcodes. (check-in: [ebb0c8a3e9] user: drh branch: trunk, size: 154729) | |
2009-11-16
| ||
22:54 | [5a8ed38834] part of check-in [929b604739] Fix a reference to freed memory that can occur following an OOM error in where.c. (check-in: [929b604739] user: drh branch: trunk, size: 153580) | |
2009-11-12
| ||
19:59 | [d5c9692fc2] part of check-in [b9eab885cd] Enhance the OP_Found and OP_NotFound opcodes so that they can accept an array of registers as an unpacked record in addition to a record built using OP_MakeRecord. Use this to avoid OP_MakeRecord calls during IN expression processing. (check-in: [b9eab885cd] user: drh branch: trunk, size: 153698) | |
04:26 | [c4ef49803c] part of check-in [e8aec08bee] Suppress unnecessary OP_Noop instructions on when the right table of a LEFT JOIN uses the index-only optimization. (check-in: [e8aec08bee] user: drh branch: trunk, size: 153821) | |
2009-11-10
| ||
01:30 | [29d3324010] part of check-in [f6c045f649] Remove the obsolete "$Id:$" RCS identifier strings from the source code. (check-in: [f6c045f649] user: drh branch: trunk, size: 153751) | |
2009-11-01
| ||
19:26 | [fac37876e0] part of check-in [cfa2db0ff7] Fix compiler warnings. Better comments on some variables associated with LIKE/GLOB processing in the query planner. (check-in: [cfa2db0ff7] user: drh branch: trunk, size: 153816) | |
2009-10-22
| ||
20:50 | [3809a594a6] part of check-in [9854ad00ae] Add some sample requirement implementation comments to where.c. (check-in: [9854ad00ae] user: drh branch: trunk, size: 153525) | |
2009-10-19
| ||
22:41 | [937fb6e4d6] part of check-in [3bcd78a1d7] Remove an unreachable condition in the WHERE clause processing of bound parameters and replace it with an assert(), for test coverage. (check-in: [3bcd78a1d7] user: drh branch: trunk, size: 152920) | |
18:11 | [acf24024bc] part of check-in [2c50b3d5aa] Remove the sqlite3_reoptimize() API. The same functionality is now provided automatically to queries prepared using prepare_v2(). (check-in: [2c50b3d5aa] user: dan branch: trunk, size: 152776) | |
15:52 | [9e8bb75c39] part of check-in [6fe6371175] When generating WHERE clause terms internally for NATURAL and USING joins, identify the table by its position in the FROM list, not by its name or alias. Fix for [b73fb0bd64]. (check-in: [6fe6371175] user: dan branch: trunk, size: 152785) | |
2009-10-17
| ||
13:13 | [896ec4cd8c] part of check-in [e74f8dc436] Make sure the target register is allocated before adding the bogus OP_Variable opcode in isLikeOrGlob(). Bugfix for the new sqlite3_reoptimize() logic. (check-in: [e74f8dc436] user: drh branch: trunk, size: 152751) | |
2009-10-15
| ||
18:35 | [10b4796d86] part of check-in [9bd6f3d886] Add the experimental sqlite3_reoptimize() API. (check-in: [9bd6f3d886] user: dan branch: experimental, size: 152650) | |
2009-09-21
| ||
16:34 | [53e2620985] part of check-in [cd850d49a1] Fix compilation with both OMIT_UTF16 and ENABLE_STAT2 defined. Ticket [56928bd084]. (check-in: [cd850d49a1] user: dan branch: trunk, size: 150362) | |
2009-09-09
| ||
16:10 | [68db8ab9b4] part of check-in [f0c72a53c5] Suppress some harmless compiler warnings. (check-in: [f0c72a53c5] user: drh branch: trunk, size: 150320) | |
2009-09-07
| ||
04:38 | [15b38ff11d] part of check-in [26cd015c0e] Warning cleanup from the MSVC compile. (check-in: [26cd015c0e] user: shane branch: trunk, size: 150238) | |
2009-08-25
| ||
16:28 | [a3218dfcf3] part of check-in [58db7e7166] Remove an unreachable branch from where.c in order to restore 100% branch test coverage. Add assert() and testcase() macros to verify that the branch is unreachable. (check-in: [58db7e7166] user: drh branch: trunk, size: 150231) | |
15:56 | [fc8b33fb46] part of check-in [3fb3686a45] Initialize variables differently in the range processing logic of where.c in order to make sure variables are always initialized even following an OOM error. (check-in: [3fb3686a45] user: drh branch: trunk, size: 150176) | |
2009-08-21
| ||
13:22 | [b9ad2d2db4] part of check-in [75f596a04a] Change the expression code generator to account for the fact that the new sqlite3AtoF() never returns NaN. Also, clarification of a comment in where.c. (check-in: [75f596a04a] user: drh branch: trunk, size: 150224) | |
2009-08-20
| ||
20:05 | [ccd88f21b6] part of check-in [bbbee81075] Simplifications to the range-scan logic in support of structural testing. (check-in: [bbbee81075] user: drh branch: trunk, size: 150074) | |
18:14 | [2d258a5698] part of check-in [f0c24b5fb8] Continuing refinements of the range-scan optimizations in where.c. The range scores are changed from an integer 1..9 to 0..100. (check-in: [f0c24b5fb8] user: drh branch: trunk, size: 150066) | |
13:45 | [02f2bb999f] part of check-in [4a5d9550bd] Incremental code and comment cleanup in where.c. There is more to be done. (check-in: [4a5d9550bd] user: drh branch: trunk, size: 149009) | |
02:34 | [e43ddc772b] part of check-in [4ee44322ca] All the sqlite3GetCollSeq() function to specify an arbitrary text encoding. (check-in: [4ee44322ca] user: drh branch: trunk, size: 147129) | |
2009-08-19
| ||
08:18 | [2e61e33f36] part of check-in [362665e89c] Add the SQLITE_ENABLE_STAT2 macro. If this is not defined at build-time, the stat2 table is not created, populated, or used. (check-in: [362665e89c] user: dan branch: trunk, size: 147046) | |
2009-08-18
| ||
16:24 | [9d4c2f178f] part of check-in [ded9dec645] Change the sqlite_stat2 schema to be more flexible. (check-in: [ded9dec645] user: dan branch: trunk, size: 146943) | |
2009-08-17
| ||
17:06 | [33a3aa8bef] part of check-in [dd96bda2a8] First version of sqlite_stat2 (schema forces exactly 10 samples). (check-in: [dd96bda2a8] user: dan branch: trunk, size: 146803) | |
2009-08-13
| ||
19:21 | [7573120c1f] part of check-in [e72186f2d6] If a binary operator in a WHERE clause that should be performed with no affinity conversions applied to its operands (see http://www.sqlite.org/datatype3.html) is optimized by index lookup, do not apply any conversions to the key value before looking it up in the index. Fix for [93fb9f89d6]. (check-in: [e72186f2d6] user: dan branch: trunk, size: 141023) | |
07:09 | [53adef2c7b] part of check-in [19f799b32f] Changes to the query planner that improve the order in which tables/indexes are scanned in join queries. (check-in: [19f799b32f] user: dan branch: trunk, size: 138845) | |
2009-07-31
| ||
06:14 | [7e696d69a6] part of check-in [8161af840e] Fix a bug in where.c that could cause SQLite to write to freed memory while compiling a query with many terms in the WHERE clause. (CVS 6952) (check-in: [8161af840e] user: danielk1977 branch: trunk, size: 137666) | |
2009-07-28
| ||
08:43 | [de6ab601ee] part of check-in [614a8d8315] Fixed reversed labels in WHERETRACE() statement. Debugging code only. (CVS 6948) (check-in: [614a8d8315] user: shane branch: trunk, size: 137630) | |
2009-07-24
| ||
17:58 | [bf56a85ab4] part of check-in [5d9e767a05] Allow virtual tables to be used in shared-cache mode. (CVS 6928) (check-in: [5d9e767a05] user: danielk1977 branch: trunk, size: 137636) | |
2009-06-16
| ||
14:15 | [cf0d091748] part of check-in [793c93be16] Fix a link error and warning that can occur in where.c when compiling under MSVC with SQLITE_OMIT_VIRTUALTABLE defined. Ticket #3914. (CVS 6767) (check-in: [793c93be16] user: shane branch: trunk, size: 137560) | |
2009-06-15
| ||
16:27 | [658d99d9a2] part of check-in [e1e6430752] Fix compiler warnings with MSVC build. (CVS 6761) (check-in: [e1e6430752] user: shane branch: trunk, size: 137477) | |
2009-06-11
| ||
17:04 | [86fb1a3a88] part of check-in [1fdb3e1e9a] Add an ALWAYS() to a conditional in where.c. (CVS 6747) (check-in: [1fdb3e1e9a] user: drh branch: trunk, size: 137460) | |
2009-06-10
| ||
19:33 | [cbf29fc2b8] part of check-in [78a391dca0] Do not let the reverse_unordered_selects pragma force the use of an index that would not otherwise be used. Ticket #3904. Also: remove an test which is always true. (CVS 6745) (check-in: [78a391dca0] user: drh branch: trunk, size: 137453) | |
2009-06-08
| ||
19:44 | [70440f8c14] part of check-in [cc9c12170c] Additional comments to clarify the operation of the LIKE optimizer in where.c. (CVS 6731) (check-in: [cc9c12170c] user: drh branch: trunk, size: 137446) | |
17:11 | [21555aa8b4] part of check-in [6b42dc3d04] Clarification of the operation of the OR-term optimizer in where.c. (CVS 6730) (check-in: [6b42dc3d04] user: drh branch: trunk, size: 137016) | |
2009-06-07
| ||
23:45 | [01b8d4733f] part of check-in [a255c645c4] Disable the LIKE optimization if the affinity of the LHS column is not TEXT. Ticket #3901. (CVS 6727) (check-in: [a255c645c4] user: drh branch: trunk, size: 135140) | |
2009-06-06
| ||
15:17 | [c6dda6e349] part of check-in [127b139819] Make sure the result of sqlite3VdbeGetOp() is not used as an array following an OOM error, since after (6691) it might be a single-entry dummy opcode. (CVS 6724) (check-in: [127b139819] user: drh branch: trunk, size: 135159) | |
2009-06-03
| ||
01:24 | [706e9f2fbb] part of check-in [baea79fd0c] Additional changes to reduce stack usage. The SQLITE_SMALL_STACK compile-time option is now available. (CVS 6708) (check-in: [baea79fd0c] user: drh branch: trunk, size: 135139) | |
2009-05-28
| ||
01:00 | [1a21128db4] part of check-in [4ac2bdfbb4] Additional refinements to Expr handling. Restore compression of trigger expressions. Change Expr.zToken to Expr.u.zToken and added Expr.u.iValue. Remove an unnecessary ExprDup from CHECK constraint processing. And so forth. (CVS 6682) (check-in: [4ac2bdfbb4] user: drh branch: trunk, size: 135032) | |
2009-05-27
| ||
10:31 | [145bb0d059] part of check-in [7cb1c3ba07] Simplifications to the Expr object: Remove Expr.span completely and convert Expr.token into a char* Expr.zToken. Also simplify the Token object by removing the Token.dyn and Token.quoted fields. (CVS 6681) (check-in: [7cb1c3ba07] user: drh branch: trunk, size: 135022) | |
2009-05-22
| ||
15:43 | [d11b8a8c49] part of check-in [fad88e71cf] Do not transform a WHERE clause of the form "a = ? OR a = ?" to "a IN (?, ?)" if "a" is a column of a virtual table. Ticket #3871. (CVS 6671) (check-in: [fad88e71cf] user: danielk1977 branch: trunk, size: 135261) | |
2009-05-06
| ||
19:03 | [c5fa4a7a58] part of check-in [93bdbc5e2f] Fix compiler warning found with gcc -Wextra. (CVS 6614) (check-in: [93bdbc5e2f] user: drh branch: trunk, size: 134730) | |
18:57 | [f8e2e564ea] part of check-in [df599237e1] Changes to silence compiler warnings under MSVC. (CVS 6613) (check-in: [df599237e1] user: shane branch: trunk, size: 134809) | |
18:42 | [31b1c577c2] part of check-in [3742843597] Fix three variable initialization problems found by valgrind. (CVS 6612) (check-in: [3742843597] user: drh branch: trunk, size: 134793) | |
2009-05-05
| ||
15:46 | [6199249ade] part of check-in [300da30178] Make sure the left-shift operator never overflows. (CVS 6605) (check-in: [300da30178] user: drh branch: trunk, size: 134757) | |
2009-05-01
| ||
21:13 | [823891e165] part of check-in [12bcb03d9b] Record within the Token structure itself whether or not the token has been dequoted. This steals one bit from the length of a token and thus limits the size of tokens to 1GiB. (CVS 6589) (check-in: [12bcb03d9b] user: drh branch: trunk, size: 134713) | |
2009-04-29
| ||
11:50 | [de8984ae4c] part of check-in [9664e2b6c6] Fix a case in where.c where a crash can follow a malloc failure. Also modify test code in test8.c to check a return code that was being dropped (causing a test in vtab_err.test to fail). (CVS 6567) (check-in: [9664e2b6c6] user: danielk1977 branch: trunk, size: 134680) | |
2009-04-24
| ||
15:46 | [d20e083e5c] part of check-in [98606bee9e] Get rid of the special RowSet processing in where.c and move that into clients. Added the WHERE_DUPLICATES_OK option to eliminate an unnecessary RowSet during DELETE with a WHERE clause containing ORs. (CVS 6546) (check-in: [98606bee9e] user: drh branch: trunk, size: 134437) | |
14:51 | [5eaf442282] part of check-in [207335fdbf] Make sure that the optimizer realizes that an "x IS NULL" contraint does not necessarily give a single-row result even on a UNIQUE index. Ticket #3824. (CVS 6545) (check-in: [207335fdbf] user: drh branch: trunk, size: 136165) | |
2009-04-23
| ||
13:22 | [6f7199cff0] part of check-in [dd4d67a674] Rework the column-cache mechanism to be more robust (and more correct). The column-alias cache is currently disabled, (CVS 6538) (check-in: [dd4d67a674] user: drh branch: trunk, size: 135832) | |
2009-04-22
| ||
17:15 | [423ed1dab7] part of check-in [ecbef45011] Eliminate the OP_VRowid opcode. The regular OP_Rowid now work for both regular and virtual tables. (CVS 6537) (check-in: [ecbef45011] user: drh branch: trunk, size: 136058) | |
15:32 | [576a21f6e0] part of check-in [1c508a9982] Change the OP_Rowid opcode so that a deferred OP_Seek is pending, it simply pulls the rowid from the deferred seek target and does not actually move the cursor or do a seek. Other where.c cleanups. (CVS 6536) (check-in: [1c508a9982] user: drh branch: trunk, size: 136246) | |
02:15 | [48f711d293] part of check-in [e963bed0fe] Remove the rowhash object from the code. Rowset now fills its role. (CVS 6535) (check-in: [e963bed0fe] user: drh branch: trunk, size: 136411) | |
2009-04-21
| ||
17:23 | [8943630603] part of check-in [08e71b1140] Fix a segfault that followed a malloc failure introduced by (6527). (CVS 6532) (check-in: [08e71b1140] user: danielk1977 branch: trunk, size: 136634) | |
09:02 | [2b580cc5eb] part of check-in [f61e4cd936] Attempt to optimize virtual table queries with 'OR' expressions in the WHERE clause. (CVS 6527) (check-in: [f61e4cd936] user: danielk1977 branch: trunk, size: 136597) | |
2009-04-07
| ||
13:48 | [ddf26069d0] part of check-in [55b9364925] Only enable WHERE-tracing when both TEST and DEBUG are enabled. (CVS 6463) (check-in: [55b9364925] user: drh branch: trunk, size: 131014) | |
00:43 | [70199494db] part of check-in [567cf90b03] Always enable WHERE-tracing on a test build. Oops - accidentally included a debugging change to pragma.c in this check-in. The real fix for the pragma problem is in the following checking. (CVS 6458) (check-in: [567cf90b03] user: drh branch: trunk, size: 130989) | |
2009-04-06
| ||
12:26 | [0eeb451ecb] part of check-in [d8c6b28a73] Make sure the reverse_unordered_selects pragma works even on unindexed tables that are queried without a WHERE clause (CVS 6453) (check-in: [d8c6b28a73] user: drh branch: trunk, size: 130970) | |
2009-03-29
| ||
00:15 | [5a421d7265] part of check-in [b601a57582] Turn off the debugging macros in where.c - left on by mistake in the previous check-in. (CVS 6404) (check-in: [b601a57582] user: drh branch: trunk, size: 130684) | |
00:13 | [72b84f31a0] part of check-in [0c438e813c] Improvements to cost estimation for evaluating the IN operator. Ticket #3757. (CVS 6403) (check-in: [0c438e813c] user: drh branch: trunk, size: 130684) | |
2009-03-25
| ||
16:51 | [d0a78f8765] part of check-in [8589b0fcc5] Remove an unused parameter from sqlite3DequoteExpr. Fix another unrelated and harmless compiler warning. (CVS 6386) (check-in: [8589b0fcc5] user: drh branch: trunk, size: 129733) | |
2009-03-22
| ||
20:36 | [55b13048fd] part of check-in [53149c9f5d] Allow the keyword INDEXED to be used as the name of a table or index or column - for backwards compatibility. (CVS 6370) (check-in: [53149c9f5d] user: drh branch: trunk, size: 129737) | |
2009-03-20
| ||
14:18 | [42d3756dbe] part of check-in [093a0cf4ad] Make sure struct WhereClause is aligned on an 8-byte boundary. Fix for #3613, #3736. (CVS 6364) (check-in: [093a0cf4ad] user: danielk1977 branch: trunk, size: 129747) | |
2009-03-05
| ||
03:48 | [ac555c8f6e] part of check-in [5477833ec7] Removed compiler warnings from MSVC builds. Ticket #3701. (CVS 6335) (check-in: [5477833ec7] user: shane branch: trunk, size: 129385) | |
2009-02-24
| ||
10:14 | [ddc9074b16] part of check-in [0e7c369c23] Reverse commit (6315) for now. (CVS 6317) (check-in: [0e7c369c23] user: danielk1977 branch: trunk, size: 129379) | |
2009-02-23
| ||
17:33 | [591db2b9bc] part of check-in [294ba6f743] Scan an index instead of a table for "SELECT count(*) FROM <tbl>" queries. Because an index is usually smaller than a table on disk, this saves some IO. (CVS 6315) (check-in: [294ba6f743] user: danielk1977 branch: trunk, size: 129888) | |
16:52 | [72980baae1] part of check-in [bc078e0007] Add the reverse_unordered_selects pragma. (CVS 6314) (check-in: [bc078e0007] user: drh branch: trunk, size: 129337) | |
2009-02-20
| ||
10:58 | [de92174234] part of check-in [e43ed64963] Instead of using SetNumColumns, specify the number of columns in a table or index using the P4 argument. (CVS 6310) (check-in: [e43ed64963] user: danielk1977 branch: trunk, size: 128619) | |
2009-02-19
| ||
14:39 | [2284de47b0] part of check-in [d9f6ffbc5e] Changes to reduce the heap space consumed by triggers, views and tables in the in-memory representation of the schema. Also to reduce the space used by prepared statements slightly. (CVS 6305) (check-in: [d9f6ffbc5e] user: danielk1977 branch: trunk, size: 128667) | |
2009-02-04
| ||
03:59 | [63bb752784] part of check-in [5cef400023] Changes to completely remove all floating point ops if SQLITE_OMIT_FLOATING_POINT defined. Note that w/o fp, date/time, round, nan, etc. are all gone or limited in functionality. Updated some of the test scripts to support missing fp and 64-bit functionality. Ticket #3029. (CVS 6250) (check-in: [5cef400023] user: shane branch: trunk, size: 128342) | |
01:49 | [fb89dfb2d9] part of check-in [6301f08a2b] Remove compiler warnings under MSVC. (CVS 6249) (check-in: [6301f08a2b] user: shane branch: trunk, size: 127987) | |
2009-01-30
| ||
05:40 | [ac21a2bcfd] part of check-in [c74c78e4eb] Minor changes to remove a few MSVC compiler warnings at /W3. Ticket #3610. (CVS 6215) (check-in: [c74c78e4eb] user: shane branch: trunk, size: 127987) | |
2009-01-24
| ||
09:56 | [4824976743] part of check-in [f3c09a0cb8] Remove incorrect ALWAYS macro associated with empty IN() sets. Ticket #3602. (CVS 6202) (check-in: [f3c09a0cb8] user: danielk1977 branch: trunk, size: 127989) | |
2009-01-14
| ||
00:55 | [e9a37defa7] part of check-in [d28b58209b] Make sure the OR-clause optimizer takes the cost of sorting into account. Reset the rowid cache on the OP_Rewind and OP_Last opcodes. Bump the version number so that we can do an emergency release. Ticket #3581. (CVS 6173) (check-in: [d28b58209b] user: drh branch: trunk, size: 127989) | |
2009-01-10
| ||
15:34 | [bd4fef1701] part of check-in [3da5578726] Fix a bug caused by overzealous code test coverage simplifications. Bug found by TH3. (CVS 6157) (check-in: [3da5578726] user: drh branch: trunk, size: 127786) | |
2009-01-09
| ||
02:49 | [8259ee360f] part of check-in [6e171c0a64] More coverage improvements. (CVS 6148) (check-in: [6e171c0a64] user: drh branch: trunk, size: 127731) | |
2009-01-08
| ||
21:00 | [86cd4009ae] part of check-in [1e5725c517] Increased test coverage in where.c. (CVS 6146) (check-in: [1e5725c517] user: drh branch: trunk, size: 127731) | |
03:11 | [c67797ea65] part of check-in [4b2c08e898] Increase test coverage of where.c. Make sure OR-optimization works on UPDATE and DELETE in addition to SELECT. (Bug found by coverage tests.) (CVS 6139) (check-in: [4b2c08e898] user: drh branch: trunk, size: 127790) | |
2009-01-07
| ||
20:58 | [92ef9d964b] part of check-in [2e1ab51f05] Add new test cases to increase coverage of where.c. (CVS 6138) (check-in: [2e1ab51f05] user: drh branch: trunk, size: 127648) | |
18:24 | [9852acecfe] part of check-in [fe90e9116b] Fix a bug in the LIKE query optimization. (Found by coverage testing.) (CVS 6137) (check-in: [fe90e9116b] user: drh branch: trunk, size: 127592) | |
2009-01-06
| ||
14:19 | [ad9d49f77b] part of check-in [da770a8dff] Fix compiler warnings. (CVS 6117) (check-in: [da770a8dff] user: drh branch: trunk, size: 127309) | |
00:08 | [0b2eb969d1] part of check-in [a701562561] Fix a problem in the WHERE clause generator when the FROM clause is empty. (CVS 6114) (check-in: [a701562561] user: drh branch: trunk, size: 127424) | |
2008-12-30
| ||
17:55 | [b25a7ecf75] part of check-in [b090d5736d] Fix a bug in the multi-index OR cost estimator. Remove leftover "breakpoint" commands from test scripts. (CVS 6086) (check-in: [b090d5736d] user: drh branch: trunk, size: 127424) | |
16:18 | [bb4f4f607f] part of check-in [4b64602210] Get EXPLAIN QUERY PLAN working with the multi-index OR optimization. Added new test script "where9.test". (CVS 6084) (check-in: [4b64602210] user: drh branch: trunk, size: 127241) | |
15:26 | [44df523c54] part of check-in [ac28aa8b61] Add a few more tests to where8.test. (CVS 6081) (check-in: [ac28aa8b61] user: danielk1977 branch: trunk, size: 127116) | |
12:00 | [924e77c6eb] part of check-in [35c87585b8] Add a couple of extra tests for the "WHERE ... OR" optimization. (CVS 6077) (check-in: [35c87585b8] user: danielk1977 branch: trunk, size: 127141) | |
09:45 | [1e1cadcfda] part of check-in [f8ff021212] Fix a bug in where.c causing a malfunction when an INDEXED BY clause specified an unusable index on other than the leftmost table in the FROM clause. Ticket #3560. (CVS 6076) (check-in: [f8ff021212] user: danielk1977 branch: trunk, size: 127216) | |
2008-12-29
| ||
23:45 | [d0f422dd1a] part of check-in [7d0ae55d6b] Always make sure WhereClause objects are initialized to zero when they are first allocated. (CVS 6073) (check-in: [7d0ae55d6b] user: drh branch: trunk, size: 127105) | |
18:33 | [90b1fa8ad8] part of check-in [bff460ec2c] Add test file where8.test. (CVS 6072) (check-in: [bff460ec2c] user: danielk1977 branch: trunk, size: 127112) | |
14:51 | [a102f06e77] part of check-in [0b972f14f0] Remove an old variable declaration that was commented out using a C++ comment. (CVS 6071) (check-in: [0b972f14f0] user: danielk1977 branch: trunk, size: 127113) | |
2008-12-28
| ||
20:47 | [29c57ed5b0] part of check-in [3464d369d3] Multi-index OR optimizer response to ORDER BY rowid. But fix in sqlite3_stmt_status(): report a full table scan when "ORDER BY rowid" is used without constraints. (CVS 6069) (check-in: [3464d369d3] user: drh branch: trunk, size: 127185) | |
18:35 | [4050b918a3] part of check-in [67cf24b30e] Optimize WHERE clauses that constain AND, BETWEEN, and LIKE terms as operands of an OR. (CVS 6068) (check-in: [67cf24b30e] user: drh branch: trunk, size: 126950) | |
16:55 | [f41330e71f] part of check-in [fa95f843e1] Simplify the VM code that implements WHERE claues. (CVS 6067) (check-in: [fa95f843e1] user: drh branch: trunk, size: 125876) | |
2008-12-24
| ||
11:25 | [b273a232aa] part of check-in [c6fd3b8f29] Fix a virtual table related assert() that can fail following a malloc failure. (CVS 6064) (check-in: [c6fd3b8f29] user: danielk1977 branch: trunk, size: 125456) | |
2008-12-23
| ||
23:56 | [ef69833cdf] part of check-in [55d4f493e7] Continuing improvements to the multi-index OR-clause optimizer. Added a few simple test cases. (CVS 6062) (check-in: [55d4f493e7] user: drh branch: trunk, size: 125338) | |
16:23 | [3f4e8020d6] part of check-in [d2105f617e] Fix an OOM problem in where.c. (CVS 6060) (check-in: [d2105f617e] user: drh branch: trunk, size: 122645) | |
13:35 | [50e47032ad] part of check-in [d77a702358] Multi-index OR-clause optimization now works for simple tests. There are no test scripts for it yet, though. And it is disabled by default, pending further testing and optimization. We need a lot of both. (CVS 6058) (check-in: [d77a702358] user: drh branch: trunk, size: 122598) | |
2008-12-21
| ||
03:51 | [6e5de2421d] part of check-in [778e91ddb8] Continue refactoring where.c in preparation for installing OR-clause optimizations. (CVS 6050) (check-in: [778e91ddb8] user: drh branch: trunk, size: 121117) | |
2008-12-20
| ||
02:06 | [d373103ee8] part of check-in [c3f7aa019c] Enhanced analysis of OR terms in a WHERE clause. Another step toward being able to use indices with OR-connected WHERE clause terms. (CVS 6045) (check-in: [c3f7aa019c] user: drh branch: trunk, size: 118258) | |
2008-12-17
| ||
19:22 | [685a1e8d2b] part of check-in [78401b33fe] Update the WHERE clause processing infrastructure in preparation for adding multi-index OR evaluation. (CVS 6037) (check-in: [78401b33fe] user: drh branch: trunk, size: 112590) | |
2008-12-12
| ||
17:56 | [0ef4494922] part of check-in [e545490a28] Rework the rowid lookup logic in the query optimizer to fix various boundary value problems. Ticket #3536. Renamed the OP_MoveXX opcodes to OP_SeekXX. (CVS 6024) (check-in: [e545490a28] user: drh branch: trunk, size: 109200) | |
2008-12-10
| ||
19:26 | [7c6ab88141] part of check-in [c872d55493] Never use strlen(). Use our own internal sqlite3Strlen30() which is guaranteed to never overflow an integer. Additional explicit casts to avoid nuisance warning messages. (CVS 6007) (check-in: [c872d55493] user: drh branch: trunk, size: 109084) | |
2008-12-09
| ||
01:32 | [c5a21be6d5] part of check-in [680755dbf0] Fix compiler warnings in where.c and in the TCL test harness. (CVS 5994) (check-in: [680755dbf0] user: drh branch: trunk, size: 109066) | |
2008-12-08
| ||
21:37 | [538cbf2190] part of check-in [6ed696e7c0] Some minor name refactoring in where.c. Avoid declaring variables before initializing them in the amalgamation because VC++ doesn't like that. (CVS 5993) (check-in: [6ed696e7c0] user: drh branch: trunk, size: 108965) | |
2008-12-05
| ||
17:17 | [d27611213e] part of check-in [adedd697b4] Fix harmless compiler warnings. Improved comments in the query optimizer. (CVS 5982) (check-in: [adedd697b4] user: drh branch: trunk, size: 108803) | |
15:24 | [78ecad37fd] part of check-in [46f2d08959] Make use of sqlite3DbMallocSize to maximize the size of growable buffers after each reallocation. Added new comments and testcase() macros to where.c. (CVS 5981) (check-in: [46f2d08959] user: drh branch: trunk, size: 108794) | |
02:36 | [ef2a149bff] part of check-in [81bd0b5ce8] Variable name changes in the query optimizer for disambiguation and clarification. Clear space in boolean vectors for new bit values to encode new query plan templates. (CVS 5980) (check-in: [81bd0b5ce8] user: drh branch: trunk, size: 107774) | |
2008-11-17
| ||
19:18 | [96f7c2bd9e] part of check-in [8009220c36] Modifications to avoid unsigned/signed comparisons in various files. (CVS 5914) (check-in: [8009220c36] user: danielk1977 branch: trunk, size: 107275) | |
16:42 | [40a5c31ce7] part of check-in [f35606d1d8] Modifications to avoid unsigned/signed comparisons in where.c. (CVS 5913) (check-in: [f35606d1d8] user: danielk1977 branch: trunk, size: 107387) | |
2008-11-03
| ||
09:06 |
[171c9b2583]
part of check-in [6c918c4eb9]
Fix a bug reported on the mailing list triggered by the pattern "SELECT | |
2008-10-25
| ||
15:03 | [1853c1bfb5] part of check-in [1fa3bbd822] Disable the result-set alias cache when on conditional code branches. Ticket #3461. The column cache and result set alias cache mechanisms are prone to this kind of error and need to be refactored. This check-in should be considered a temporary fix in advance of a more general redesign of the whole mechanism. (CVS 5841) (check-in: [1fa3bbd822] user: drh branch: trunk, size: 106922) | |
2008-10-11
| ||
16:47 | [76bc0a7a5e] part of check-in [d2c252d6bb] Fix a memory leak on ORDER BY of a compound select caused by the resolver on a flattened query. Also fix a OOM segfault in WHERE clause processing. (CVS 5801) (check-in: [d2c252d6bb] user: drh branch: trunk, size: 106823) | |
2008-10-07
| ||
23:46 | [53d495de5f] part of check-in [de473efb35] Add the experimental sqlite3_stmt_status() interface. (CVS 5781) (check-in: [de473efb35] user: drh branch: trunk, size: 106840) | |
2008-10-06
| ||
05:32 | [da2a0e132d] part of check-in [98ca5580f5] Allow INDEXED BY and NOT INDEXED clauses in SELECT statements. (CVS 5766) (check-in: [98ca5580f5] user: danielk1977 branch: trunk, size: 106754) | |
2008-10-01
| ||
08:43 | [75b7f45bc0] part of check-in [59d2e89e21] Fix a bug in where.c where a non-temp register was being incorrectly deallocated. Ticket #3408. (CVS 5758) (check-in: [59d2e89e21] user: danielk1977 branch: trunk, size: 105387) | |
2008-09-06
| ||
14:19 | [a9958b26cc] part of check-in [7c0f638ef3] Deallocate a temp register allocated by codeEqualityTerm() in where.c. If it is not deallocated, its value may be reused by the column-cache mechanism. However, by the time it is used, the value may have been clobbered by a sub-routine that also uses the same temp register. Fix for #3357. (CVS 5679) (check-in: [7c0f638ef3] user: danielk1977 branch: trunk, size: 105387) | |
2008-08-25
| ||
12:08 | [72a4ac6890] part of check-in [635933b1ca] Two if statements should be asserts. GCC was silently ignoring them, hence the problem did not show up in coverage testing. Ticket #3333. (CVS 5607) (check-in: [635933b1ca] user: drh branch: trunk, size: 105338) | |
2008-08-20
| ||
16:35 | [b156f27855] part of check-in [daf730d1de] Refactor the name resolution procedures in the code generator. (CVS 5569) (check-in: [daf730d1de] user: drh branch: trunk, size: 105330) | |
2008-08-01
| ||
17:37 | [a800184a2d] part of check-in [007359b770] Test that virtual table methods xBestIndex, xOpen, xFilter, xNext, xColumn, xRowid, xUpdate, xSync and xBegin can all return error messages using the sqlite3_vtab.zErrMsg variable. (CVS 5519) (check-in: [007359b770] user: danielk1977 branch: trunk, size: 105063) | |
2008-07-28
| ||
19:34 | [ee4878e42a] part of check-in [e48f9697e9] Implement the "lookaside" memory allocation cache. Use of this cache makes the speed1.test script run about 15% faster. Added new interfaces to control the cache. (CVS 5488) (check-in: [e48f9697e9] user: drh branch: trunk, size: 104884) | |
2008-07-12
| ||
14:52 | [e4c40d224c] part of check-in [dcb160249f] Remove leftover debugging commands (breakpoint and btree_breakpoint) from test scripts. (CVS 5400) (check-in: [dcb160249f] user: drh branch: trunk, size: 104685) | |
2008-07-11
| ||
16:15 | [087bfd3758] part of check-in [d7e2f0d2d4] Additional test coverage for the btree module. Remove the failsafe() macro and replace it with ALWAYS() and NEVER(). (CVS 5395) (check-in: [d7e2f0d2d4] user: drh branch: trunk, size: 104672) | |
2008-07-09
| ||
13:28 | [3324f8273a] part of check-in [8aae4fe7e7] Begin adding the failsafe() macro. (CVS 5383) (check-in: [8aae4fe7e7] user: drh branch: trunk, size: 104756) | |
2008-07-08
| ||
22:28 | [e8a241aab7] part of check-in [6cdb6841ff] Added macros to convert between 32-bit ints and 64-bit ptrs to avoid compiler warnings. (CVS 5378) (check-in: [6cdb6841ff] user: shane branch: trunk, size: 104645) | |
19:45 | [013a14f8e6] part of check-in [1ed98f9e61] Fix a bug in where.c introduced by check-in (5373). (CVS 5375) (check-in: [1ed98f9e61] user: drh branch: trunk, size: 104619) | |
18:05 | [1422d95647] part of check-in [fa07c360b7] Improved testing of the min/max optimization. (CVS 5373) (check-in: [fa07c360b7] user: drh branch: trunk, size: 104638) | |
2008-06-26
| ||
18:04 | [6a22ceb86d] part of check-in [d45a97be71] Fix handling of "x IN (...)" and "x NOT IN (...)" expressions when the set contains an SQL NULL value. (CVS 5314) (check-in: [d45a97be71] user: danielk1977 branch: trunk, size: 104582) | |
2008-06-25
| ||
02:47 | [767db25b4b] part of check-in [e53403b6d7] If a unique index covers any prefix of the ORDER BY clause then let it satisfy the ORDER BY clause. (CVS 5301) (check-in: [e53403b6d7] user: drh branch: trunk, size: 104574) | |
2008-06-15
| ||
02:51 | [5c4a999f6a] part of check-in [65fe7b62cf] Continuing work on the new memory allocation subsystem. Added routines for temporary memory allocation. Right the btree balance mechanism to only do one temporary allocation at a time. (CVS 5220) (check-in: [65fe7b62cf] user: drh branch: trunk, size: 104456) | |
2008-06-12
| ||
00:07 | [6af9313bdc] part of check-in [14a9b9453b] Additional refinements to the new sqlite3_initialize() interface design. (CVS 5206) (check-in: [14a9b9453b] user: drh branch: trunk, size: 104457) | |
2008-05-30
| ||
14:58 | [53c6b80146] part of check-in [7cadb223cb] Fix typos in comments in where.c. (CVS 5180) (check-in: [7cadb223cb] user: drh branch: trunk, size: 104456) | |
2008-05-29
| ||
05:23 | [ad88aefac0] part of check-in [5f6eab65db] Fix cosmetic issues spotted while working on ticket #3146 (CVS 5177) (check-in: [5f6eab65db] user: drh branch: trunk, size: 104453) | |
2008-05-28
| ||
18:01 | [d074da73e1] part of check-in [c81efc97bc] Use %llx instead of %x for 64 bit values (this only affects a debugging statement). (CVS 5170) (check-in: [c81efc97bc] user: shane branch: trunk, size: 104379) | |
2008-05-26
| ||
18:33 | [8c8b360d89] part of check-in [3354874436] Fix the LIKE query optimizer so that it works with LIKE patterns ending in '@%' on NOCASE columns. Ticket #3139. (CVS 5158) (check-in: [3354874436] user: drh branch: trunk, size: 104376) | |
2008-05-16
| ||
15:40 | [ef5bd7ad97] part of check-in [ecbc0d5ded] Disable the column cache when coding values that will be passed to the xFilter() method of a virtual table, in case the xFilter() implementation modifies the type or encoding of the value. Ticket #3121. (CVS 5139) (check-in: [ecbc0d5ded] user: danielk1977 branch: trunk, size: 104425) | |
2008-04-19
| ||
14:40 | [85719d58e0] part of check-in [adcef73b39] Comment and variable-name cleanup in where.c. Add testcase() macros to insure adequate test coverage of table-driven logic. (CVS 5032) (check-in: [adcef73b39] user: drh branch: trunk, size: 104351) | |
2008-04-18
| ||
10:25 | [011f866cf0] part of check-in [9a97681924] Combine cases 3 and 4 in where.c, since case 4 is now a special case of case 3. (CVS 5029) (check-in: [9a97681924] user: danielk1977 branch: trunk, size: 102854) | |
09:01 | [e6850aa2fb] part of check-in [c448f15aa5] Allow OP_MoveGt and similar to use an array of registers instead of a serialized record. Modify one type of index range scan to use this. (CVS 5028) (check-in: [c448f15aa5] user: danielk1977 branch: trunk, size: 105469) | |
2008-04-17
| ||
19:14 | [4835f36ba0] part of check-in [0d2e258e1a] Additional work on ticket #3015. The previous fix (check-in (4919)) did not appear to work in all cases and it disabled indexing in some places where it should not have. New test cases added to help insure that the current fix is better. (CVS 5026) (check-in: [0d2e258e1a] user: drh branch: trunk, size: 105658) | |
2008-04-10
| ||
13:33 | [a686f1e04f] part of check-in [fba97f7874] First cut at optimizing single-row updates to use a one-pass algorithm. (CVS 4973) (check-in: [fba97f7874] user: drh branch: trunk, size: 105487) | |
2008-04-01
| ||
05:07 | [86b042dcd5] part of check-in [91cc646e2b] Fix the CSE mechanism so that it takes into account column affinity changes that might be imposed by comparison operators. (CVS 4949) (check-in: [91cc646e2b] user: drh branch: trunk, size: 104895) | |
2008-03-31
| ||
23:48 | [811fd1e5c6] part of check-in [c29ee0fed2] Avoid duplicate OP_Column opcodes by remembering prior results. This is similar to CSE, but only applies to columns. (CVS 4943) (check-in: [c29ee0fed2] user: drh branch: trunk, size: 104907) | |
18:19 | [902ddf1e7a] part of check-in [2126db3985] Factor constant subexpressions out of loops. (CVS 4942) (check-in: [2126db3985] user: drh branch: trunk, size: 104586) | |
2008-03-28
| ||
19:16 | [dc146152cd] part of check-in [39705b617a] Fix a problem with min() and descending indexes. (CVS 4933) (check-in: [39705b617a] user: danielk1977 branch: trunk, size: 104294) | |
18:11 | [aa7ca84521] part of check-in [bce2897535] Fix for #3022. Handle queries like "SELECT min(b) FROM T WHERE a = X AND b > X" when there is an index on (a,b). (CVS 4930) (check-in: [bce2897535] user: danielk1977 branch: trunk, size: 104285) | |
2008-03-26
| ||
14:56 | [7aeeec6731] part of check-in [3fafa56259] Make sure ON clause terms of a LEFT JOIN are not used with an index on the right table of the join. Ticket #3015. (CVS 4919) (check-in: [3fafa56259] user: drh branch: trunk, size: 104269) | |
2008-03-25
| ||
09:47 | [f18bac2f87] part of check-in [0471536481] Use a vdbe memory cell to allocate the space required for vdbe cursors. (CVS 4912) (check-in: [0471536481] user: danielk1977 branch: trunk, size: 103214) | |
2008-03-17
| ||
17:08 | [78d6689d71] part of check-in [9d2afbb543] Abandon the OR optimization following a memory allocation failure, to avoid referencing uninitialized memory. (CVS 4872) (check-in: [9d2afbb543] user: drh branch: trunk, size: 103212) | |
09:36 | [dd72c822a9] part of check-in [ffd4702795] Return an error when an xBestIndex() method indicates that it intends to use the value of an unusable constraint. Related to #2998. (CVS 4867) (check-in: [ffd4702795] user: danielk1977 branch: trunk, size: 103171) | |
2008-03-04
| ||
17:45 | [c5eaca1f2d] part of check-in [9c6694bb61] Various renames & cleanups to limit exported symbols on amalgamation build (CVS 4819) (check-in: [9c6694bb61] user: mlcreech branch: trunk, size: 102923) | |
2008-02-23
| ||
21:55 | [f899a98f98] part of check-in [610574b23b] Fix a bug in the LIKE optimizer that occurs when the last character before the wildcard is an upper-case 'Z'. Ticket #2959. (CVS 4807) (check-in: [610574b23b] user: drh branch: trunk, size: 102926) | |
2008-01-23
| ||
12:52 | [7ff0ca021c] part of check-in [9f95d79dae] Improvements to test coverage in the lemon-generated parser and in the sqlite3_get_table() interface. (CVS 4745) (check-in: [9f95d79dae] user: drh branch: trunk, size: 102342) | |
03:03 | [b6c296c5f4] part of check-in [5375ad6b4b] Make sqlite3SafetyOn() and sqlite3SafetyOff() macros which disappear when compiling without -DSQLITE_DEBUG=1. (CVS 4744) (check-in: [5375ad6b4b] user: drh branch: trunk, size: 102665) | |
2008-01-19
| ||
20:11 | [0c18a6d88d] part of check-in [af129b6d15] Miscellaneous code simplifications and cleanup and test coverage enhancements. (CVS 4730) (check-in: [af129b6d15] user: drh branch: trunk, size: 102702) | |
2008-01-17
| ||
16:22 | [0cc6052f73] part of check-in [706b41b70b] Registerification of the VDBE is complete. The operand stack has been removed from the code. All instructions operate out of registers only. (CVS 4718) (check-in: [706b41b70b] user: drh branch: trunk, size: 102660) | |
02:36 | [75908cb6db] part of check-in [b3a141b2b0] Registerification of the WHERE clause logic. (CVS 4716) (check-in: [b3a141b2b0] user: drh branch: trunk, size: 102708) | |
2008-01-12
| ||
19:03 | [27e40d32b7] part of check-in [426f31ecdd] Continuing work toward converting the VM to a register machine. (CVS 4708) (check-in: [426f31ecdd] user: drh branch: trunk, size: 102164) | |
2008-01-09
| ||
23:04 | [9705df3c2b] part of check-in [e3cf1c1c11] All essential opcodes can now operate out of registers and completely avoid the stack. Many still optionally use the stack to support legacy code generation, but the stack is not required. The next step is to update all code generation to avoid using the stack. (CVS 4700) (check-in: [e3cf1c1c11] user: drh branch: trunk, size: 102208) | |
02:15 | [8c2bedcc61] part of check-in [92deff07bb] Continued work toward converting to a register-based VM. (CVS 4698) (check-in: [92deff07bb] user: drh branch: trunk, size: 102209) | |
2008-01-08
| ||
23:54 | [8f55e7257d] part of check-in [8862ce9cee] Registerify the comparison opcodes. (CVS 4697) (check-in: [8862ce9cee] user: drh branch: trunk, size: 102224) | |
2008-01-07
| ||
19:20 | [306fafa709] part of check-in [aa48867cfa] Registerify the AUTOINCREMENT processing and the OP_IsNull and OP_NotNull operators. (CVS 4692) (check-in: [aa48867cfa] user: drh branch: trunk, size: 102127) | |
2008-01-05
| ||
17:39 | [0d72b6431c] part of check-in [c449e04f18] First pass at optimizing max()/min() as described in #2853. Some refinements to come. (CVS 4687) (check-in: [c449e04f18] user: danielk1977 branch: trunk, size: 102110) | |
05:38 | [941635bb00] part of check-in [32380dcabc] Register-ify the OP_ForceInt opcode. (CVS 4684) (check-in: [32380dcabc] user: drh branch: trunk, size: 100181) | |
04:06 | [af005c6a58] part of check-in [cc149eb9ca] Get rid of OP_Dup, OP_MemStore, OP_MemLoad, and OP_MemMove. Replace with OP_Copy, OP_SCopy, and OP_Move. Add the infrastructure for operation properties in1, in2, in3, out2, and out3 but do not yet use any of these. (CVS 4682) (check-in: [cc149eb9ca] user: drh branch: trunk, size: 100148) | |
2008-01-04
| ||
22:01 | [d015536e27] part of check-in [fe057a88d0] Implement the out2-prerelease opcode design pattern. (CVS 4681) (check-in: [fe057a88d0] user: drh branch: trunk, size: 100180) | |
2008-01-03
| ||
23:44 | [ce1e6c53fa] part of check-in [61bfb77c42] Change the sqlite3ExprCode() function so that callers can request that the result of the expression be left on the stack or in a register. (CVS 4673) (check-in: [61bfb77c42] user: drh branch: trunk, size: 100176) | |
18:39 | [10c0616d30] part of check-in [253ed40aa3] Modify VFilter and VRename to use registers instead of the vdbe stack for inputs. (CVS 4670) (check-in: [253ed40aa3] user: danielk1977 branch: trunk, size: 100166) | |
18:03 | [f02ecb55e5] part of check-in [0b849805c3] Registers (aka memory cells) in the VM are now numbered starting with 1 instead of 0. A register number of 0 means "no such register". (CVS 4669) (check-in: [0b849805c3] user: drh branch: trunk, size: 100012) | |
07:54 | [6b1d4acf10] part of check-in [35da261daf] Change OP_OpenRead and OP_OpenWrite so that the database number is read from the P3 operand, not the stack. (CVS 4663) (check-in: [35da261daf] user: danielk1977 branch: trunk, size: 100062) | |
00:01 | [09edd04e2c] part of check-in [027875e4d4] Refactoring the VM. The P3 parameter is changed to P4. A P5 parameter is added (though not currently used.) Add routines sqlite3VdbeAddOpX() where X is one of 0, 1, 2, 3, or 4. (CVS 4660) (check-in: [027875e4d4] user: drh branch: trunk, size: 100100) | |
2008-01-02
| ||
00:34 | [49901aac9a] part of check-in [051ec01f27] Begin setting a foundation on which to convert the VM from a stack-based to a register-based machine. Everything is still mostly stack based with this check-in. This change merely begins adding infrastructure to support a register-based architecture. (CVS 4652) (check-in: [051ec01f27] user: drh branch: trunk, size: 99985) | |
2007-12-12
| ||
17:42 | [4d71db7ee6] part of check-in [12c3029b1e] Try to find some more stack leaks by adding OP_StackDepth to loops in DML statements. None were found. (CVS 4617) (check-in: [12c3029b1e] user: danielk1977 branch: trunk, size: 100001) | |
2007-11-29
| ||
17:43 | [7ec7c7a5b3] part of check-in [061608c72a] When using an index to scan a database table, read column data from the index in preference to the table. This increases the likelihood that the table will not be required at all. (CVS 4580) (check-in: [061608c72a] user: danielk1977 branch: trunk, size: 99954) | |
17:05 |
[a03cd9da86]
part of check-in [56d0e32677]
Optimisations for expressions of the form "<value> IN (SELECT <column> FROM | |
2007-11-26
| ||
13:36 | [82e2cb76d7] part of check-in [5e02dbabcf] Additional out-of-memory testing. Fix bugs caused by malloc failures in where.c. Tickets #2794, #2795, #2796, and #2797. (CVS 4560) (check-in: [5e02dbabcf] user: drh branch: trunk, size: 99664) | |
2007-11-05
| ||
05:12 | [ddcbc5c419] part of check-in [7027368c15] Handle "IS NULL" constraints on virtual table scans. IS NULL constraints are not passed to the virtual table layer. Ticket #2759. (CVS 4523) (check-in: [7027368c15] user: danielk1977 branch: trunk, size: 99574) | |
2007-09-13
| ||
17:54 | [44042c8b9d] part of check-in [2cfdbfe654] Fix incorrect index cost assumptions that occur after an ANALYZE. Ticket #2643. (CVS 4424) (check-in: [2cfdbfe654] user: drh branch: trunk, size: 99466) | |
2007-09-12
| ||
15:41 | [1b3a67bba1] part of check-in [9c9c2a1da2] In the query optimizer, make sure table dependencies from all terms of a compound SELECT statement are recognized so that subqueries in a WHERE clause are not evaluated too early. Fix for ticket #2640. (CVS 4422) (check-in: [9c9c2a1da2] user: drh branch: trunk, size: 99486) | |
2007-08-29
| ||
14:06 | [4687a2a56b] part of check-in [c790c234c3] Use the DbMalloc() and DbRealloc() functions more consistently. (CVS 4323) (check-in: [c790c234c3] user: danielk1977 branch: trunk, size: 99491) | |
12:31 | [beade77e34] part of check-in [e38ef81b85] Modifications to the malloc failure tests to test transient and persistent failures. (CVS 4321) (check-in: [e38ef81b85] user: danielk1977 branch: trunk, size: 99514) | |
2007-08-16
| ||
11:36 | [2776a0caf8] part of check-in [5e2795d0eb] Fix some more small problems introduced by recent refactoring. (CVS 4235) (check-in: [5e2795d0eb] user: danielk1977 branch: trunk, size: 99502) | |
10:09 | [b5af62312d] part of check-in [77b1671351] More work on refactoring of malloc() interfaces. There are still many errors. (CVS 4233) (check-in: [77b1671351] user: danielk1977 branch: trunk, size: 99499) | |
04:30 | [366bfb2b03] part of check-in [deb7ecd65f] Half-way through a major refactoring of the memory allocation. I have not even attempted to compile so I am certain there are countless errors. (CVS 4231) (check-in: [deb7ecd65f] user: drh branch: trunk, size: 99441) | |
2007-07-30
| ||
14:40 | [c7e13b81ff] part of check-in [7b69968618] Fix a bug with explicit collation sequences attached to a column reference expression that is on the right-hand-side of a binary comparison operator. (CVS 4187) (check-in: [7b69968618] user: danielk1977 branch: trunk, size: 99146) | |
2007-06-11
| ||
12:56 | [1238764165] part of check-in [abf64d1d0a] Fix a bug in the LIKE optimization that was causing the pattern string to be dequoted twice. Ticket #2407. (CVS 4056) (check-in: [abf64d1d0a] user: drh branch: trunk, size: 98440) | |
2007-06-08
| ||
08:39 | [b5e7a9735d] part of check-in [11ee8ea43f] Make sure rowid comparisons against NULL work correctly. Ticket #2404. (CVS 4050) (check-in: [11ee8ea43f] user: drh branch: trunk, size: 98406) | |
00:20 | [6a3c44fed9] part of check-in [46fdd19548] Fix the query optimizer so that it correctly handles constant expressions in the ON clause of a LEFT JOIN. Ticket #2403. (CVS 4049) (check-in: [46fdd19548] user: drh branch: trunk, size: 98400) | |
2007-06-02
| ||
07:54 | [0662fcd879] part of check-in [17152bf1a2] Fix a vdbe stack leak that could occur where one side of a WHERE clause inequality evaluated to SQL null. (CVS 4045) (check-in: [17152bf1a2] user: danielk1977 branch: trunk, size: 98401) | |
2007-05-29
| ||
12:11 | [1c27ddb2f1] part of check-in [f9a95e92df] Consider explicit collate clauses when matching WHERE constraints to indices. Fix for #2391. (CVS 4040) (check-in: [f9a95e92df] user: danielk1977 branch: trunk, size: 98399) | |
2007-05-04
| ||
13:15 | [f3920748cc] part of check-in [ba4845b32b] Eliminate all uses of sprintf() and strcpy(). These were not being misused. But getting rid of them removes a library dependency. And it avoids warnings from the OpenBSD compiler. Ticket #2336. (CVS 3916) (check-in: [ba4845b32b] user: drh branch: trunk, size: 98292) | |
2007-04-20
| ||
12:22 | [0f17b7bed2] part of check-in [9389a15f35] Remove the ARRAYSIZE macro from where.c to avoid a name conflict with microsoft header files. Ticket #2311 (CVS 3863) (check-in: [9389a15f35] user: drh branch: trunk, size: 98277) | |
2007-04-06
| ||
01:04 | [fce0dad6b2] part of check-in [fd4da6b134] Changes to increase test coverage. (CVS 3819) (check-in: [fd4da6b134] user: drh branch: trunk, size: 98380) | |
2007-03-31
| ||
01:34 | [25e0dbb96c] part of check-in [6736f4547c] Fix memory leaks in WHERE clause processing and in TRIGGER parsing. (CVS 3775) (check-in: [6736f4547c] user: drh branch: trunk, size: 98416) | |
2007-03-30
| ||
14:56 | [881cfd88a9] part of check-in [7e0aa96412] Coverage improvements for where.c. (CVS 3764) (check-in: [7e0aa96412] user: danielk1977 branch: trunk, size: 98191) | |
09:13 | [b5f8e2a0b0] part of check-in [ea49ddf64a] Test coverage a few extra lines in where.c. (CVS 3756) (check-in: [ea49ddf64a] user: danielk1977 branch: trunk, size: 97992) | |
2007-03-28
| ||
14:30 | [df68bcbb07] part of check-in [26348556d8] Correctly handle NULLs in IN operators. Ticket #2273. The changes in where.c and in the WhereLevel.aInLoop structure are not strictly necessary to fix this problem - they just make the code easier to read. Only the change in OP_Next/OP_Prev operator of vdbe.c is required. (CVS 3735) (check-in: [26348556d8] user: drh branch: trunk, size: 97595) | |
2007-03-27
| ||
13:36 | [0ef9acc43c] part of check-in [c8a8a189a8] More strict aliasing fixes. The single source file library now runs successfully with -fstrict-alias. (CVS 3725) (check-in: [c8a8a189a8] user: drh branch: trunk, size: 97040) | |
2007-03-26
| ||
22:05 | [0825fabc1a] part of check-in [0b832e218e] Modify sources to that they can be combined into a single sqlite3.c source file. Eliminate all type-pruned pointer warnings. (CVS 3722) (check-in: [0b832e218e] user: drh branch: trunk, size: 97011) | |
2007-03-02
| ||
08:12 | [1242dd545f] part of check-in [52885ed8b7] Handle the case where the estimated cost of a virtual table scan is larger than SQLITE_BIG_DBL. Ticket #2253. (CVS 3670) (check-in: [52885ed8b7] user: danielk1977 branch: trunk, size: 96941) | |
2007-02-23
| ||
23:13 | [d4a10cf428] part of check-in [908daaa9ab] Disable the OR optimization if it would conflict with column affinity coercions. Ticket #2249. Additional cleanup and testing of the OR optimization. (CVS 3658) (check-in: [908daaa9ab] user: drh branch: trunk, size: 96574) | |
2007-02-06
| ||
13:26 | [2a919a3fba] part of check-in [912faf18d8] When optimizing out an ORDER BY clause due to uniqueness constraints, make sure unused terms to the right in the ORDER BY clause to not reference other tables in a join. Ticket #2211. Additional test cases needed before closing this ticket. (CVS 3629) (check-in: [912faf18d8] user: drh branch: trunk, size: 93528) | |
2007-01-25
| ||
16:56 | [23dc1c7535] part of check-in [358dd82d3a] Fix an additional problem with the IS NULL optimization on LEFT JOINs. Ticket #2189. See also ticket #2177. (CVS 3602) (check-in: [358dd82d3a] user: drh branch: trunk, size: 92188) | |
2007-01-19
| ||
01:06 | [46dea18bc3] part of check-in [335863e4d1] Make sure the IS NULL optimization introduced by check-in (3494) correctly handles a LEFT JOIN where the a term from the right table of the join uses an IS NULL constraint. Ticket #2177. This check-in also adds the new test cases that were suppose to have been added with (3494) but which were mistakenly omitted. (CVS 3595) (check-in: [335863e4d1] user: drh branch: trunk, size: 91700) | |
2006-12-20
| ||
03:24 | [f55d4459a1] part of check-in [f245f5c2c2] The query optimizer does a better job of optimizing out ORDER BY clauses that contain the rowid or which use indices that contain the rowid. Ticket #2116. (CVS 3536) (check-in: [f245f5c2c2] user: drh branch: trunk, size: 91215) | |
2006-12-16
| ||
16:25 | [b34cc2c7f7] part of check-in [7393c81b8c] Query optimizer enhancement: In "FROM a,b,c left join d" allow the C table to be reordered with A and B. This used to be the case but the capability was removed by (3203) and (3052) in response to ticket #1652. This change restores the capability. (CVS 3529) (check-in: [7393c81b8c] user: drh branch: trunk, size: 90018) | |
2006-11-06
| ||
15:10 | [6e215af5a7] part of check-in [9bf153b54c] Fix a bug in the optimizer that was causing it to miss an OR optimization opportunity. (CVS 3502) (check-in: [9bf153b54c] user: drh branch: trunk, size: 90098) | |
2006-10-28
| ||
00:28 | [1c33e19680] part of check-in [64762a9d58] Enhance the optimizer so that IS NULL can use an available index. (CVS 3494) (check-in: [64762a9d58] user: drh branch: trunk, size: 90111) | |
2006-10-27
| ||
14:06 | [65a19a70c9] part of check-in [4d336e9ef5] Changes directed toward optimizing IS NULL terms in WHERE clauses. (CVS 3492) (check-in: [4d336e9ef5] user: drh branch: trunk, size: 90368) | |
2006-10-18
| ||
23:26 | [49a0e7cc1c] part of check-in [ee4894b499] Fix a problems that arise if malloc() fails while compiling SELECT statements within a TRIGGER. (CVS 3478) (check-in: [ee4894b499] user: drh branch: trunk, size: 90039) | |
2006-06-27
| ||
13:20 | [75a89957fc] part of check-in [5612b28705] Changes so that it will build with SQLITE_OMIT_VIRTUALTABLE=1. (CVS 3309) (check-in: [5612b28705] user: drh branch: trunk, size: 89946) | |
12:16 | [a5d5cec9b5] part of check-in [cf41f2a33f] Fix bug in transfer of arguments from WHERE clause to virtual table xFilter() methods. (CVS 3305) (check-in: [cf41f2a33f] user: danielk1977 branch: trunk, size: 89862) | |
02:36 | [aab29cf7a5] part of check-in [3e1f5567df] Make sure that MATCH terms that a virtual table says should be omitted really are omitted. (CVS 3302) (check-in: [3e1f5567df] user: drh branch: trunk, size: 89856) | |
02:33 | [f794d15f5f] part of check-in [6609c25fbf] Cleanup and refactor parts of the optimizer. (CVS 3301) (check-in: [6609c25fbf] user: drh branch: trunk, size: 89855) | |
01:54 | [676105f882] part of check-in [28413cf2b3] Cache and reuse virtual table index information in the optimizer. Improved diagnostics for virtual table index selection. (CVS 3300) (check-in: [28413cf2b3] user: drh branch: trunk, size: 89882) | |
2006-06-24
| ||
11:51 | [8ba6fa490b] part of check-in [255aa9121a] A few more test cases to improve coverage of virtual table module related code. (CVS 3292) (check-in: [255aa9121a] user: danielk1977 branch: trunk, size: 88327) | |
2006-06-23
| ||
08:05 | [6175449f1f] part of check-in [5d1d907189] Add tests and fixes for handling malloc() failures related to the virtual table feature. (CVS 3285) (check-in: [5d1d907189] user: danielk1977 branch: trunk, size: 88321) | |
2006-06-20
| ||
13:07 | [0a13357175] part of check-in [3e19a7d8ea] Fix some problems with virtual tables and joins in where.c. (CVS 3277) (check-in: [3e19a7d8ea] user: danielk1977 branch: trunk, size: 88195) | |
2006-06-19
| ||
12:02 | [485d368d1f] part of check-in [4339e1bf66] Avoid returning MISUSE when sqlite is called recursively by an xBestIndex callback. (CVS 3274) (check-in: [4339e1bf66] user: danielk1977 branch: trunk, size: 87863) | |
04:49 | [0f1fcc2c74] part of check-in [3d10e8f361] Fix memory leak in where.c. (CVS 3271) (check-in: [3d10e8f361] user: danielk1977 branch: trunk, size: 87702) | |
2006-06-14
| ||
22:07 | [d7c3cc0118] part of check-in [c996185a9e] Bug fixes in the MATCH and ORDER BY processing of virtual tables. (CVS 3249) (check-in: [c996185a9e] user: drh branch: trunk, size: 87659) | |
19:00 | [393022cb4a] part of check-in [32c97b884b] Added code to INSERT, DELETE and UPDATE virtual tables. The new code is mostly untested. (CVS 3248) (check-in: [32c97b884b] user: drh branch: trunk, size: 87418) | |
2006-06-13
| ||
23:51 | [299c385e32] part of check-in [29199eeea4] The echo module test is now running. Added the tclvar module test but have not yet done anything with it. (CVS 3234) (check-in: [29199eeea4] user: drh branch: trunk, size: 87418) | |
17:39 | [7e614b0278] part of check-in [136bed496b] The optimizer recognizes MATCH operators and allows virtual-tables to make use of them. (CVS 3232) (check-in: [136bed496b] user: drh branch: trunk, size: 87017) | |
15:00 | [0b1fcf5900] part of check-in [7a3e97f76b] Add the tentative sqlite3_allocate_queryplan() API. (CVS 3228) (check-in: [7a3e97f76b] user: danielk1977 branch: trunk, size: 83207) | |
14:16 | [f2e17c6f50] part of check-in [0f4657ea69] Add simple tests for the xFilter and xBestIndex methods. (CVS 3227) (check-in: [0f4657ea69] user: danielk1977 branch: trunk, size: 83007) | |
01:04 | [c0f3cd3831] part of check-in [3532f1340f] Progress toward getting the virtual-table code generator to work. (CVS 3220) (check-in: [3532f1340f] user: drh branch: trunk, size: 82799) | |
2006-06-12
| ||
21:59 | [d312cf79d4] part of check-in [0109654331] Added code to iterate through virtual tables. All regression tests pass but the new code is completely untested. (CVS 3219) (check-in: [0109654331] user: drh branch: trunk, size: 82691) | |
2006-06-11
| ||
23:41 | [3dc5269ba5] part of check-in [898ec36b41] Progress toward CREATE VIRTUAL TABLE. Still not even close to working... (CVS 3211) (check-in: [898ec36b41] user: drh branch: trunk, size: 75818) | |
2006-06-06
| ||
11:45 | [06ec443109] part of check-in [2baa983653] In joins of the form "A left B, C" make sure they are not transformed into "A left C, B". Ticket #1830. See also #1652. (CVS 3203) (check-in: [2baa983653] user: drh branch: trunk, size: 75826) | |
2006-05-11
| ||
13:26 | [a8f0317d6e] part of check-in [b16541ba5e] Correctly handle multi-column indices where multiple columns are constrained by IN operators with subqueries on the right-hand side. Ticket #1807. (CVS 3184) (check-in: [b16541ba5e] user: drh branch: trunk, size: 75711) | |
2006-04-21
| ||
09:38 | [dc626f8c0f] part of check-in [39dd969527] Additional information about index sorting in EXPLAIN QUERY PLAN. (CVS 3176) (check-in: [39dd969527] user: drh branch: trunk, size: 75695) | |
2006-03-28
| ||
23:55 | [1ba8eb02ab] part of check-in [0039888f91] Join optimizer enhancements. (CVS 3156) (check-in: [0039888f91] user: drh branch: trunk, size: 75592) | |
2006-02-24
| ||
02:53 | [39af47e7f4] part of check-in [4b22e4b847] Remove unused parameters on internal APIs. Suppress warnings from CodeWarrior. (CVS 3110) (check-in: [4b22e4b847] user: drh branch: trunk, size: 75030) | |
2006-02-01
| ||
02:45 | [c7d71d5e55] part of check-in [248b9be93d] In joins of the form: "A, B left C" make sure that the reordering optimization does not put table A after table C. Ticket #1652. (CVS 3052) (check-in: [248b9be93d] user: drh branch: trunk, size: 75077) | |
2006-01-24
| ||
12:09 | [8409e00fa2] part of check-in [d86f18a427] Rename some variables to avoid hiding others. Also add "static" to two function signatures that were missing it. (CVS 3024) (check-in: [d86f18a427] user: danielk1977 branch: trunk, size: 74976) | |
2006-01-23
| ||
13:22 | [f79bc17f62] part of check-in [1f42a338e2] Do not name variables "operator" because some compilers do not realize that "operator" is not a reserved word in ANSI-C. Ticket #1625. (CVS 2997) (check-in: [1f42a338e2] user: drh branch: trunk, size: 74968) | |
13:00 | [4c77a9dc13] part of check-in [6385628edd] Fix additional compiler warnings. Tickets #1615, #1616, #1627 (CVS 2994) (check-in: [6385628edd] user: drh branch: trunk, size: 74959) | |
2006-01-20
| ||
18:10 | [7ce7a52fdc] part of check-in [507653a98c] More compiler warnings fixed - or in some cases comments are added to explain that the compiler is wrong. (CVS 2984) (check-in: [507653a98c] user: drh branch: trunk, size: 75274) | |
2006-01-18
| ||
16:51 | [5215507b23] part of check-in [ac090f2ab3] Use a global variable protected by a mutex instead of thread-specific-data to record malloc() failures. (CVS 2972) (check-in: [ac090f2ab3] user: danielk1977 branch: trunk, size: 75282) | |
2006-01-14
| ||
08:02 | [9fd58a8f55] part of check-in [8e79a0c24a] Fixes for OMIT_SUBQUERY builds: Disable where clause OR->IN optimization. Include EXISTS keyword (for new CREATE TABLE syntax). Test file fixes. (CVS 2943) (check-in: [8e79a0c24a] user: danielk1977 branch: trunk, size: 75342) | |
2006-01-13
| ||
15:58 | [6885d655f3] part of check-in [0de729d914] Avoid parsing an entire record header when it is not required. (CVS 2940) (check-in: [0de729d914] user: danielk1977 branch: trunk, size: 75156) | |
13:01 | [1e19c96cf8] part of check-in [caa7da807d] Fix a vdbe stack overflow problem that could occur with a correlated sub-query. (CVS 2938) (check-in: [caa7da807d] user: danielk1977 branch: trunk, size: 74918) | |
06:33 | [a12b4542f6] part of check-in [dd70595542] Minor modification to restoreOrClearCursorPosition() to improve efficiency. Do not allocate the extra 8-bytes if memory-management is not enabled. (CVS 2936) (check-in: [dd70595542] user: danielk1977 branch: trunk, size: 74713) | |
2006-01-11
| ||
21:41 | [a8ba7f4aa2] part of check-in [5d9c6aa964] Automatically deallocate thread-specific data when it is no longer being used. Ticket #1601. Also implemented the suggestion of ticket #1603. Memory management is now off by default at compile-time. The sqlite3_enable_memory_management() API has been removed. (CVS 2919) (check-in: [5d9c6aa964] user: drh branch: trunk, size: 74706) | |
2006-01-10
| ||
17:58 | [4fecfccf8f] part of check-in [0f0213be4d] Store collation sequence names instead of pointers in sharable schema data structures. (CVS 2904) (check-in: [0f0213be4d] user: danielk1977 branch: trunk, size: 74690) | |
2006-01-09
| ||
06:29 | [18a7a16a5b] part of check-in [82b81f69c7] Rename DbSchema to "Schema" and SqliteTsd to "ThreadData". (CVS 2893) (check-in: [82b81f69c7] user: danielk1977 branch: trunk, size: 74634) | |
2006-01-07
| ||
13:21 | [de22a3a84c] part of check-in [23b587b05b] In shared-cache mode, lock all required tables before beginning to execute the body of the statement program. (CVS 2881) (check-in: [23b587b05b] user: danielk1977 branch: trunk, size: 74613) | |
2006-01-05
| ||
11:34 | [3ec45076e7] part of check-in [deeda0dc06] Add the shared schema/pager modifications. Very few tests so far. (CVS 2859) (check-in: [deeda0dc06] user: danielk1977 branch: trunk, size: 74529) | |
2005-12-21
| ||
18:36 | [0296a20c2e] part of check-in [5638a11ed5] Bug fixes and additional testing of descending indices. (CVS 2841) (check-in: [5638a11ed5] user: drh branch: trunk, size: 74285) | |
03:16 | [4db62a60cd] part of check-in [112a34b8dc] Progress toward decending indices. (CVS 2839) (check-in: [112a34b8dc] user: drh branch: trunk, size: 74180) | |
2005-12-07
| ||
06:27 | [269569f380] part of check-in [78f10ca0a6] Add some tests for malloc() failure within the column_name() and column_decl() APIs. (CVS 2805) (check-in: [78f10ca0a6] user: danielk1977 branch: trunk, size: 73156) | |
2005-12-06
| ||
12:52 | [c0882f2d42] part of check-in [e1606658f1] Some elements of the new malloc() failure handling. Not all cases work properly yet. Also, library is not threadsafe if malloc() fails right now. (CVS 2800) (check-in: [e1606658f1] user: danielk1977 branch: trunk, size: 73148) | |
2005-11-26
| ||
14:24 | [a9fed5a5b5] part of check-in [7e7cfce0f8] Disable the OR-clause optimization if it does not result in an index being used that would not have been used otherwise. In other words, do not convert OR clauses into an IN statement if it does not help the optimizer. (CVS 2789) (check-in: [7e7cfce0f8] user: drh branch: trunk, size: 73125) | |
14:08 | [1d14427988] part of check-in [cbbeb9de00] Make sure left joins still work even when the OR clause optimization fires. Ticket #1537. (CVS 2788) (check-in: [cbbeb9de00] user: drh branch: trunk, size: 73022) | |
2005-11-21
| ||
12:48 | [9c260db859] part of check-in [5045f09933] Less verbose output when EXPLAIN QUERY PLAN identifies use of the primary key. (CVS 2772) (check-in: [5045f09933] user: drh branch: trunk, size: 72669) | |
12:46 | [312ca128cb] part of check-in [80721e2c90] The EXPLAIN QUERY PLAN now identifies when tables use the integer primary key. (CVS 2771) (check-in: [80721e2c90] user: drh branch: trunk, size: 72677) | |
2005-11-14
| ||
22:29 | [5b1bc977f3] part of check-in [ce06c123d0] Create separate affinities for INTEGER and REAL. (CVS 2766) (check-in: [ce06c123d0] user: drh branch: trunk, size: 72538) | |
2005-10-13
| ||
02:09 | [5252bf2025] part of check-in [a0bdb58468] Attempt to fix the SQLite core so that no floating point operations are used anywhere if SQLITE_OMIT_FLOATING_POINT is defined at compile-time. This is useful to people who use SQLite on embedded processors that lack floating point support. (CVS 2749) (check-in: [a0bdb58468] user: drh branch: trunk, size: 72523) | |
2005-09-20
| ||
17:42 | [3ed72ca029] part of check-in [2471957fee] Code cleanup and simplification. Three new Mem opcodes added. The sqlite3VdbeJumpHere function added. (CVS 2730) (check-in: [2471957fee] user: drh branch: trunk, size: 72178) | |
08:47 | [363b4fb0ae] part of check-in [bb84d27eda] Update comments in where.c. No code changes. (CVS 2727) (check-in: [bb84d27eda] user: drh branch: trunk, size: 72305) | |
2005-09-19
| ||
21:05 | [2b7b4dd112] part of check-in [ea10f9785e] ON-clause terms in a LEFT JOIN that restrict only the left table, should not really restrict the left table but instead rows that fail to meet the condition to be joined with NULL rows from the right table. (CVS 2725) (check-in: [ea10f9785e] user: drh branch: trunk, size: 72179) | |
13:15 | [728051085e] part of check-in [41e226d2ff] The sqlite3_query_plan debugging variable now only appears with SQLITE_TEST=1. (CVS 2721) (check-in: [41e226d2ff] user: drh branch: trunk, size: 72137) | |
12:37 | [2e17f49ad0] part of check-in [86eb7d8363] Change some debugging #defines in order to get SSE working again after recent upgrades. (CVS 2719) (check-in: [86eb7d8363] user: drh branch: trunk, size: 72162) | |
2005-09-17
| ||
13:29 | [1cc55c9aa1] part of check-in [553b7ba8f8] Bug fix in the ORDER BY optimizer. Ticket #1435. (CVS 2707) (check-in: [553b7ba8f8] user: drh branch: trunk, size: 72131) | |
13:07 | [a595744df3] part of check-in [21740794ab] Make sure dependencies on the right-hand side of IN operators are checked correctly. Ticket #1433. (CVS 2706) (check-in: [21740794ab] user: drh branch: trunk, size: 72131) | |
2005-09-16
| ||
02:38 | [53a54c1434] part of check-in [4686d64975] Fix a whole host of newly discovered memory leaks the occur after a failure of realloc(). (CVS 2696) (check-in: [4686d64975] user: drh branch: trunk, size: 71496) | |
2005-09-10
| ||
16:46 | [715e317eb3] part of check-in [986efb7b12] Add the experimental EXPLAIN QUERY PLAN diagnostic capability. (CVS 2685) (check-in: [986efb7b12] user: drh branch: trunk, size: 71409) | |
15:28 | [d032cca1b9] part of check-in [415b8b2462] Use of the CROSS keyword in a join prevents table reordering. Ticket #1414. (CVS 2683) (check-in: [415b8b2462] user: drh branch: trunk, size: 70889) | |
2005-09-08
| ||
14:17 | [d69b304e50] part of check-in [cdfe372a95] Remove a few unused variables detected by Borland C. Ticket #1412. (CVS 2675) (check-in: [cdfe372a95] user: drh branch: trunk, size: 70688) | |
2005-09-01
| ||
17:47 | [92ab208abe] part of check-in [efbb4bc83c] Fix over-aggressive optimization of ORDER BY as reported on the mailing list. (CVS 2655) (check-in: [efbb4bc83c] user: drh branch: trunk, size: 70721) | |
2005-08-29
| ||
16:40 | [bbb973cbbd] part of check-in [9b914901a1] Initialize a local variable to avoid a nuisance compiler warning. Ticket #1394. (CVS 2638) (check-in: [9b914901a1] user: drh branch: trunk, size: 70689) | |
2005-08-28
| ||
17:00 | [14a2f906f5] part of check-in [ef84ff795c] The LIKE optimization does the right thing when collating sequences are present. LIKE expressions where the left-hand side has COLLATE NOCASE are optimized in the default case. (CVS 2637) (check-in: [ef84ff795c] user: drh branch: trunk, size: 70677) | |
2005-08-24
| ||
03:52 | [485041aa51] part of check-in [9f9a257123] After calling realloc() on an array to resize it, be sure not to use pointers into the old array. Ticket #1376. (CVS 2617) (check-in: [9f9a257123] user: drh branch: trunk, size: 70437) | |
2005-08-19
| ||
19:14 | [8392d521f9] part of check-in [b550d04d43] Increase test coverage of alter.c to 100%. Fix bugs found in the process. (CVS 2603) (check-in: [b550d04d43] user: drh branch: trunk, size: 70197) | |
00:14 | [a8401eb8eb] part of check-in [2fe0ac4fa4] Bring testing coverage of the analyze.c file up to 100%. Bugs found and fixed in the process. (CVS 2599) (check-in: [2fe0ac4fa4] user: drh branch: trunk, size: 70098) | |
2005-08-14
| ||
01:20 | [de4b36842d] part of check-in [72ee21c05e] The case_sensitive_like pragma added. Test cases added for the LIKE optimization. (CVS 2592) (check-in: [72ee21c05e] user: drh branch: trunk, size: 70084) | |
2005-08-13
| ||
16:13 | [27d6432ea5] part of check-in [4f07661279] Disable an overzealous optimization the omitted sorting on a join if the first table gave a unique result. The sort can only be omitted if all tables in the join are unique. Ticket #1358. (CVS 2589) (check-in: [4f07661279] user: drh branch: trunk, size: 70348) | |
2005-08-12
| ||
22:56 | [ac754c021f] part of check-in [3edbe8d621] Optimize LIKE and GLOB operators in the WHERE clause. Code passes all regression tests but still needs additional tests. (CVS 2581) (check-in: [3edbe8d621] user: drh branch: trunk, size: 70660) | |
2005-08-02
| ||
17:48 | [72f68f996a] part of check-in [868322f7b7] Minor refactoring of the new optimizer code. (CVS 2576) (check-in: [868322f7b7] user: drh branch: trunk, size: 67630) | |
2005-07-29
| ||
19:43 | [7f59d0ed3b] part of check-in [1a4e526d46] Fix problems caused by over-agressive optimization of ORDER BY in joins. Lots more testing needed. (CVS 2571) (check-in: [1a4e526d46] user: drh branch: trunk, size: 67663) | |
15:10 | [c65782be9f] part of check-in [d23c8bf81e] Optimizer now converts OR-connected WHERE-clause terms into an IN operator so that they can be used with indices. There are known problems with the ORDER BY optimization in this and in several prior check-ins. This check-in is not recommended for production use. (CVS 2569) (check-in: [d23c8bf81e] user: drh branch: trunk, size: 67359) | |
2005-07-28
| ||
23:12 | [c37799a796] part of check-in [cdf8c9584b] The BETWEEN operator in a WHERE clause is now able to use indices. (CVS 2568) (check-in: [cdf8c9584b] user: drh branch: trunk, size: 64797) | |
20:51 | [6c3de6ee25] part of check-in [4b02703dec] Test cases and tuning of the new optimizer code. (CVS 2567) (check-in: [4b02703dec] user: drh branch: trunk, size: 63851) | |
16:51 | [efed9d4567] part of check-in [a212128433] The new optimizer now passes all regression tests. (CVS 2566) (check-in: [a212128433] user: drh branch: trunk, size: 64419) | |
2005-07-27
| ||
20:41 | [7757b1731d] part of check-in [ee3a08e353] More work on the new optimizer. Fewer tests fail now. (CVS 2565) (check-in: [ee3a08e353] user: drh branch: trunk, size: 64397) | |
2005-07-23
| ||
22:59 | [3e9f8336ba] part of check-in [86ce56ccea] A new optimizer that breaks a lot of tests. But none of them critically, I think. Nevertheless, there is a lot of work ahead to stabilize the code. (CVS 2564) (check-in: [86ce56ccea] user: drh branch: trunk, size: 62946) | |
2005-07-22
| ||
00:31 | [70b2195b47] part of check-in [103f8ccb90] Begin adding code to support multiple IN constraints on the same index. (CVS 2557) (check-in: [103f8ccb90] user: drh branch: trunk, size: 58113) | |
2005-07-21
| ||
18:23 | [65d9b27eda] part of check-in [e2f822ac82] Split the OP_Integer opcode into OP_Integer and OP_Int64. This allows comments to be added to OP_Integer. Cleanup in the optimizer. Allow terms of the FROM clause to be reordered automatically. (CVS 2556) (check-in: [e2f822ac82] user: drh branch: trunk, size: 56067) | |
03:48 | [9e5bd5f1ab] part of check-in [ef3a157f46] Add comments to test cases. Improvements to the query plan test variable. (CVS 2555) (check-in: [ef3a157f46] user: drh branch: trunk, size: 56772) | |
03:15 | [bc0473f786] part of check-in [c30cbba9ea] In where.c, split out the code that selects an index into a separate subroutine. (CVS 2554) (check-in: [c30cbba9ea] user: drh branch: trunk, size: 55214) | |
2005-07-19
| ||
22:22 | [5a84161299] part of check-in [a35bd50af8] More refactoring in where.c. (CVS 2552) (check-in: [a35bd50af8] user: drh branch: trunk, size: 56019) | |
17:38 | [1da2268f5e] part of check-in [57c6bd3760] Refactoring of the query optimizer in advance of adding better optimization. (CVS 2551) (check-in: [57c6bd3760] user: drh branch: trunk, size: 56275) | |
2005-07-16
| ||
13:33 | [9b02e75ef8] part of check-in [ca69f36832] Allow an unlimited number of terms in the WHERE clause. The old limit was 100. (CVS 2550) (check-in: [ca69f36832] user: drh branch: trunk, size: 56552) | |
2005-07-15
| ||
23:24 | [e6b7be981e] part of check-in [578490c913] Fix bugs in the new query plan instrumention logic. (CVS 2549) (check-in: [578490c913] user: drh branch: trunk, size: 55084) | |
13:05 | [878bf7f2e1] part of check-in [dfd5fd77b0] Add test instrumentation that will be needed during the development of forthcoming optimizer enhancements. (CVS 2548) (check-in: [dfd5fd77b0] user: drh branch: trunk, size: 54984) | |
2005-07-08
| ||
17:13 | [6326f64353] part of check-in [3bb9ce5f20] Change the name of the OpenTemp opcode to OpenVirtual which is more descriptive of what it does. (CVS 2541) (check-in: [3bb9ce5f20] user: drh branch: trunk, size: 53395) | |
14:14 | [e9c0c19052] part of check-in [f4a66ed04d] Add the EP_OptOnly flag on expressions for WHERE clause terms that are added by the optimizer but should not be coded. (CVS 2540) (check-in: [f4a66ed04d] user: drh branch: trunk, size: 53365) | |
2005-07-01
| ||
11:38 | [97f3563170] part of check-in [d3b03495a4] Fix typos in comments. No changes to code. (CVS 2535) (check-in: [d3b03495a4] user: drh branch: trunk, size: 53268) | |
2005-06-12
| ||
21:35 | [3a9a2258ab] part of check-in [36f2da1f8d] Update older opcode names to be more meaningful in light of the latest code design. (CVS 2506) (check-in: [36f2da1f8d] user: drh branch: trunk, size: 53270) | |
2005-05-19
| ||
01:26 | [f02baff03e] part of check-in [bcf87e4d16] Fix an array index that is out of bounds. Ticket #1251. (CVS 2462) (check-in: [bcf87e4d16] user: drh branch: trunk, size: 53397) | |
2005-04-22
| ||
02:38 | [836906aeb1] part of check-in [88b39436f0] Remove some vestigal code. Add the experimental sqlite3_transfer_bindings() API. (CVS 2446) (check-in: [88b39436f0] user: drh branch: trunk, size: 53380) | |
2005-03-16
| ||
12:15 | [c4b227458e] part of check-in [9a358fc33d] Fix some memory leaks that can occur if a memory allocation fails. (CVS 2388) (check-in: [9a358fc33d] user: danielk1977 branch: trunk, size: 53463) | |
2005-02-22
| ||
09:47 | [80a2a9d24f] part of check-in [b323f0f283] Fix bug reported on the mailing list for WHERE clauses like (rowid<'2'). (CVS 2357) (check-in: [b323f0f283] user: danielk1977 branch: trunk, size: 53457) | |
2005-02-02
| ||
01:10 | [c4b6a799ed] part of check-in [506088796c] Handle "rowid<=X ORDER BY rowid DESC" where X is an integer. Fix for ticket #1092. (CVS 2307) (check-in: [506088796c] user: danielk1977 branch: trunk, size: 53432) | |
2005-01-30
| ||
09:17 | [94d847e07b] part of check-in [356d31e03f] Have the optimization introduced in (2170) deal with OP_NullRow as well as OP_Column and OP_Recno. Fix for #1086. (CVS 2290) (check-in: [356d31e03f] user: danielk1977 branch: trunk, size: 53432) | |
2005-01-29
| ||
08:32 | [b733d3a2e8] part of check-in [b1b50f3158] Modify sub-query handling. Tickets #1083 and #1084. (CVS 2286) (check-in: [b1b50f3158] user: danielk1977 branch: trunk, size: 53354) | |
2005-01-20
| ||
22:48 | [f4127cc263] part of check-in [38401dfbd5] Bug fixes and enhancements entered while on jury recess. (CVS 2246) (check-in: [38401dfbd5] user: drh branch: trunk, size: 52721) | |
2005-01-19
| ||
23:24 | [06aa612bd0] part of check-in [d8b2a7e091] Continued refactoring of the name resolution logic and query optimizer. (CVS 2236) (check-in: [d8b2a7e091] user: drh branch: trunk, size: 52747) | |
2005-01-17
| ||
22:08 | [09defb7d1e] part of check-in [4a7534396a] Infrastructure changes to handle name resolution differently. This is needed to fix various long-standing problems with column names in joins. It will also make the implementation of correlated subqueries easier. (CVS 2228) (check-in: [4a7534396a] user: drh branch: trunk, size: 52997) | |
2005-01-11
| ||
18:13 | [3a0d08505e] part of check-in [1bee1bb91d] Fix for ticket #1062: Correctly handle redundant terms in a WHERE clause. (CVS 2198) (check-in: [1bee1bb91d] user: drh branch: trunk, size: 52993) | |
2005-01-03
| ||
18:13 | [2fc4efc737] part of check-in [707690c5f2] add comment that table is accessed by primary key (CVS 2177) (check-in: [707690c5f2] user: tpoindex branch: trunk, size: 52949) | |
01:28 | [4eb44da11a] part of check-in [9fb1402f08] Fix a typo in a comment. No code changes. Ticket #1052. (CVS 2174) (check-in: [9fb1402f08] user: drh branch: trunk, size: 52882) | |
01:27 | [204553d66f] part of check-in [4165217e51] Fix comment typos. no code changes. (CVS 2173) (check-in: [4165217e51] user: drh branch: trunk, size: 52880) | |
2004-12-25
| ||
01:03 | [5307677f77] part of check-in [5fd1f47118] Fix ticket #1046 by removing code and simplifying the query optimizer. Remarkably, this simplification also makes the optimizer do a better job. Ticket #1051 was fixed as a side-effect. (CVS 2172) (check-in: [5fd1f47118] user: drh branch: trunk, size: 52781) | |
2004-12-19
| ||
00:11 | [e4a34a8fd1] part of check-in [e5aa489453] The optimizer now uses only the index and ignores the table if it can get away with doing so, thus saving a single BTree search per row of result. This could potentially double the speed of certain queries. The code passes all regression tests but new tests to exercise the new functionality are yet to be added. (CVS 2170) (check-in: [e5aa489453] user: drh branch: trunk, size: 53764) | |
2004-12-18
| ||
18:40 | [94b784521e] part of check-in [9b86993ff7] Improvements to the query optimizer. This is a work in progress. (CVS 2169) (check-in: [9b86993ff7] user: drh branch: trunk, size: 54761) | |
2004-12-14
| ||
03:34 | [35ea898e64] part of check-in [d012628a78] Minor code and comment cleanup. (CVS 2165) (check-in: [d012628a78] user: drh branch: trunk, size: 46628) | |
2004-11-23
| ||
01:47 | [f9d3b6f224] part of check-in [8b61d1ae1c] More work on the implementation of cursors, but they are still not functioning. (CVS 2142) (check-in: [8b61d1ae1c] user: drh branch: trunk, size: 46635) | |
2004-11-22
| ||
19:12 | [be486196af] part of check-in [fc8c1393c8] Add initial infrastructure for cursors. In where.c, optimize out clauses of the form "ORDER BY rowid" if a table scan is being performed. Do a reverse table scan if "ORDER BY rowid DESC" is present. (CVS 2141) (check-in: [fc8c1393c8] user: drh branch: trunk, size: 46706) | |
10:02 | [f8a9e0bca6] part of check-in [91acd87e52] Back out changes allowing writes to tables that have open cursors. (CVS 2133) (check-in: [91acd87e52] user: danielk1977 branch: trunk, size: 44333) | |
2004-11-16
| ||
15:50 | [4d28167e45] part of check-in [a2e1c35b32] Perform deletes in a single pass. (CVS 2104) (check-in: [a2e1c35b32] user: danielk1977 branch: trunk, size: 44428) | |
2004-10-04
| ||
13:38 | [6e637a6b3e] part of check-in [e8e972ba65] More changes to take advantage of the TK_ and OP_ alignments to avoid unnecessary translations. (CVS 1999) (check-in: [e8e972ba65] user: drh branch: trunk, size: 44163) | |
2004-09-25
| ||
13:12 | [04d3ee039d] part of check-in [cb631a135d] Code simplifications and size reductions. (CVS 1983) (check-in: [cb631a135d] user: drh branch: trunk, size: 44182) | |
2004-09-19
| ||
02:15 | [5d573333c0] part of check-in [4871c77f8f] Add comments to unused P3 fields of selected instructions when NDEBUG is not defined. This makes VDBE program dumps more readable during debugging. (CVS 1973) (check-in: [4871c77f8f] user: drh branch: trunk, size: 44705) | |
2004-09-06
| ||
17:24 | [12e214870c] part of check-in [3ddf5a9d1c] Fix a naming conflict between sqlite versions 2 and 3. An open sqlite3 connection now *must* be called "sqlite3". You cannot call it "sqlite". This might break existing code. (CVS 1941) (check-in: [3ddf5a9d1c] user: drh branch: trunk, size: 44736) | |
2004-08-21
| ||
17:54 | [a84eee276c] part of check-in [bd6649c5aa] Optimizations to the code generator. (CVS 1899) (check-in: [bd6649c5aa] user: drh branch: trunk, size: 44735) | |
2004-07-20
| ||
18:23 | [cf8a54641e] part of check-in [ec8bfa3891] Simplify the where.c logic by flipping expression over so that the controlling variable is always on the left. (CVS 1838) (check-in: [ec8bfa3891] user: drh branch: trunk, size: 45010) | |
2004-07-19
| ||
19:30 | [ce4968e373] part of check-in [0cc612f8aa] Fix for ticket #813. (CVS 1820) (check-in: [0cc612f8aa] user: drh branch: version_2, size: 44700) | |
19:14 | [9009033f31] part of check-in [88e4bfa154] Fix for ticket #813. (CVS 1818) (check-in: [88e4bfa154] user: drh branch: trunk, size: 46627) | |
17:25 | [504e1df3d7] part of check-in [c6c13dc460] Store schema cookies on the TEMP database. Ticket #807. (CVS 1817) (check-in: [c6c13dc460] user: drh branch: trunk, size: 45208) | |
02:24 | [3a85d88ec1] part of check-in [5ba0acd6c7] Correctly handle joins of move than 32 tables. Ticket #806. (CVS 1813) (check-in: [5ba0acd6c7] user: drh branch: version_2, size: 43281) | |
02:12 | [2d346d4aae] part of check-in [8806440970] Correctly handle joins of more than 32 tables. Ticket #806. (CVS 1812) (check-in: [8806440970] user: drh branch: trunk, size: 45209) | |
2004-06-17
| ||
07:53 | [6507074d8c] part of check-in [a71a9ff114] Remove redundant opcodes OP_MakeKey and OP_MakeIdxKey. (CVS 1612) (check-in: [a71a9ff114] user: danielk1977 branch: trunk, size: 45171) | |
2004-06-16
| ||
12:02 | [4955f34f7b] part of check-in [b3d5ad6f78] Trivial modifications to prevent compiler warnings. (CVS 1608) (check-in: [b3d5ad6f78] user: danielk1977 branch: trunk, size: 45162) | |
2004-06-14
| ||
08:26 | [7fee7aeb92] part of check-in [80c299f883] Check the value of the schema cookie before reading the sqlite_master table. (CVS 1585) (check-in: [80c299f883] user: danielk1977 branch: trunk, size: 45158) | |
2004-06-10
| ||
10:51 | [dda77afaa5] part of check-in [518d82d3b1] Add the sqlite3_collation_needed() API and fix some error handling cases involving unknown collation sequences. (CVS 1563) (check-in: [518d82d3b1] user: danielk1977 branch: trunk, size: 45190) | |
2004-06-09
| ||
09:55 | [32578882a2] part of check-in [c634e71f19] Some progress on user-defined collation sequences. (CVS 1544) (check-in: [c634e71f19] user: danielk1977 branch: trunk, size: 45132) | |
00:48 | [ded00b92dc] part of check-in [1086196460] Start all transactions and verify all schema cookies near the beginning of of each vdbe program. (CVS 1543) (check-in: [1086196460] user: drh branch: trunk, size: 44203) | |
2004-05-29
| ||
11:24 | [444a7c3a8b] part of check-in [3225de8902] Transform OP_HexBlob and OP_String8 to OP_Blob and OP_String the first time they are executed. (CVS 1492) (check-in: [3225de8902] user: danielk1977 branch: trunk, size: 44101) | |
2004-05-20
| ||
22:16 | [efe5d25fe1] part of check-in [a6cb09d7af] Add internal support for collating sequences. This breaks 244 tests. (CVS 1420) (check-in: [a6cb09d7af] user: drh branch: trunk, size: 44092) | |
2004-05-19
| ||
20:41 | [626b2cbc42] part of check-in [34f03ba6a9] Correctly handle 64-bit integers in SQL statements. (CVS 1408) (check-in: [34f03ba6a9] user: drh branch: trunk, size: 44173) | |
14:56 | [e7a7eeb46a] part of check-in [8f249c45cb] Change opcode names and comments to better describe the operation of the incrKey flag. OP_MoveTo becomes OP_MoveGe. (CVS 1407) (check-in: [8f249c45cb] user: drh branch: trunk, size: 44321) | |
13:13 | [67bbdef0ce] part of check-in [7c31e257e2] Bug fixes in where.c. The where.test test works again. (CVS 1406) (check-in: [7c31e257e2] user: drh branch: trunk, size: 44711) | |
2004-05-18
| ||
01:23 | [5f480219a9] part of check-in [202a470f2c] Omit the '\0' at the end of UTF-8 strings on disk (it is implied). Also don't store the number of rows at the beginning of each table record. (CVS 1390) (check-in: [202a470f2c] user: danielk1977 branch: trunk, size: 43589) | |
2004-05-17
| ||
10:48 | [76a820b814] part of check-in [0f6c9b05e6] More changes to support the new types model. Compound SELECTs are currently broken. (CVS 1389) (check-in: [0f6c9b05e6] user: danielk1977 branch: trunk, size: 43510) | |
2004-05-16
| ||
11:15 | [610fadd08c] part of check-in [a4af838f8d] More changes to support the manifest type model. A few things are currently broken. (CVS 1385) (check-in: [a4af838f8d] user: danielk1977 branch: trunk, size: 43496) | |
2004-05-14
| ||
11:16 | [6957bbd333] part of check-in [f24aedc2b0] Delete some code no longer in use (CVS 1376) (check-in: [f24aedc2b0] user: danielk1977 branch: trunk, size: 43487) | |
11:00 | [292f3d3d05] part of check-in [dbfe6e9316] Implement type affinity for table and index records (CVS 1375) (check-in: [dbfe6e9316] user: danielk1977 branch: trunk, size: 43870) | |
2004-05-10
| ||
10:37 | [487e55b1f6] part of check-in [19b100ec0d] Change the names of external symbols from sqlite_XXX to sqlite3_XXX. (CVS 1339) (check-in: [19b100ec0d] user: danielk1977 branch: trunk, size: 43380) | |
2004-05-08
| ||
08:23 | [6db0291280] part of check-in [8af6474c49] Change lots of internal symbols from sqliteXXX to sqlite3XXX so that the library links again. It doesn't work yet, due to changes in the btree layer calling convention. (CVS 1324) (check-in: [8af6474c49] user: danielk1977 branch: trunk, size: 43379) | |
2004-02-22
| ||
20:05 | [b58764861a] part of check-in [51f1e8f753] Use sqliteVdbeOp3 instead of sqliteVdbeChangeP3 where applicable. (CVS 1266) (check-in: [51f1e8f753] user: drh branch: trunk, size: 43231) | |
18:40 | [6ac293e94a] part of check-in [69aac043af] Use sqliteErrorMsg instead of sqliteSetString whereever practical. (CVS 1264) (check-in: [69aac043af] user: drh branch: trunk, size: 43327) | |
2004-01-14
| ||
21:59 | [1302d728bd] part of check-in [c9ac3db8e0] Fix comparisons of ROWID against floating point numbers so that they work correctly. Ticket #377 and #567. (CVS 1178) (check-in: [c9ac3db8e0] user: drh branch: trunk, size: 43420) | |
2004-01-07
| ||
20:37 | [5b149c9851] part of check-in [5fd581787e] Rework the fix to ticket #461 so that we do not have to do redundant tests of WHERE clause terms looking for NULLs. See also check-in (1103). (CVS 1167) (check-in: [5fd581787e] user: drh branch: trunk, size: 43485) | |
2003-12-10
| ||
01:31 | [724c7b8293] part of check-in [230a4ff2c8] Fix the code generator to a void a VDBE stack overflow on 3-way joins. Ticket #519. (CVS 1129) (check-in: [230a4ff2c8] user: drh branch: trunk, size: 42991) | |
2003-12-06
| ||
21:43 | [d01a3506f3] part of check-in [656c90387a] Always use "(char*)0" to terminate the argument list of sqliteSetString(). This is needed for 64-bit systems that use a 32-bit integer by default. (CVS 1126) (check-in: [656c90387a] user: drh branch: trunk, size: 42991) | |
2003-09-27
| ||
13:39 | [6bd1d2a9c7] part of check-in [824430b3ce] Remove support for the Oracle8 outer join syntax. (CVS 1106) (check-in: [824430b3ce] user: drh branch: trunk, size: 42984) | |
00:41 | [1e8d20d399] part of check-in [5aea81488b] Do all WHERE clauses tests, even if an index is used for lookup so that we know the test cannot be FALSE. The test might end up being NULL in which case it would need to be treated as false. Ticket #461. (CVS 1103) (check-in: [5aea81488b] user: drh branch: trunk, size: 43140) | |
2003-07-16
| ||
00:54 | [83b2a2d26d] part of check-in [96e3c53958] Initialize a variable to prevent an MSVC compiler warning. Ticket #394. (CVS 1051) (check-in: [96e3c53958] user: drh branch: trunk, size: 42915) | |
2003-07-06
| ||
17:22 | [6834140938] part of check-in [982aa3356b] Correctly handle comparing an INTEGER PRIMARY KEY against a floating point number. Ticket #377. (CVS 1045) (check-in: [982aa3356b] user: drh branch: trunk, size: 42915) | |
2003-05-17
| ||
17:35 | [1e645d430c] part of check-in [01398fb78b] Fix problems with TEMP indices that lead to corrupt databases. These problems were discovered while working on ticket #317. No sure yet if that ticket is fixed. (CVS 981) (check-in: [01398fb78b] user: drh branch: trunk, size: 42909) | |
2003-05-02
| ||
14:32 | [ef11773a07] part of check-in [be7aed2011] VDBE cursors numbers for tables in a join do not have to be consecutive. This is one step on the road to fixing ticket #272. (CVS 947) (check-in: [be7aed2011] user: drh branch: trunk, size: 43002) | |
2003-04-24
| ||
01:45 | [f632cd30f0] part of check-in [206b17397b] Fix some issues with INSTEAD OF triggers. (CVS 930) (check-in: [206b17397b] user: drh branch: trunk, size: 41802) | |
2003-04-20
| ||
17:29 | [c0709e5cf4] part of check-in [fb89adf4d1] Added tests for the in-memory database backend. Also updated some comments in other modules. (CVS 924) (check-in: [fb89adf4d1] user: drh branch: trunk, size: 41738) | |
2003-04-19
| ||
16:34 | [89eca00334] part of check-in [9b619c98b5] Bug in WHERE clause processing fixed. Ticket #298. (CVS 919) (check-in: [9b619c98b5] user: drh branch: trunk, size: 41821) | |
2003-03-27
| ||
12:51 | [e5733f7d5e] part of check-in [d2fb2bb50c] Changes to the "sqlite" structure that allow simultaneous operations on multiple database files. Many regession tests pass - but not all of them. Do not use this version except for debugging SQLite itself. (CVS 883) (check-in: [d2fb2bb50c] user: drh branch: trunk, size: 41798) | |
2003-03-19
| ||
03:14 | [3111c1c209] part of check-in [875da9eed9] Modifications to the VDBE to support more than one database file. (CVS 878) (check-in: [875da9eed9] user: drh branch: trunk, size: 41791) | |
2003-01-31
| ||
17:21 | [ba96cab1fb] part of check-in [d93c1aeb54] The sqlite_exec() function now returns SQLITE_AUTH when authorization fails. Ticket #231. (CVS 857) (check-in: [d93c1aeb54] user: drh branch: trunk, size: 41786) | |
2003-01-11
| ||
15:02 | [5bf7f1e1d7] part of check-in [b2c1edb47f] Remove the aOrder() array from where.c. (CVS 824) (check-in: [b2c1edb47f] user: drh branch: trunk, size: 41786) | |
14:25 | [8cbdba90cd] part of check-in [4c22da76ca] Fix two compiler warnings from OS-X. (CVS 823) (check-in: [4c22da76ca] user: drh branch: trunk, size: 42506) | |
2002-12-04
| ||
21:50 | [af235636b7] part of check-in [bfb9a2aa93] Fixes to the logic that decides if the ORDER BY can be ignored due to the use of an index. Tests updated. (CVS 796) (check-in: [bfb9a2aa93] user: drh branch: trunk, size: 42501) | |
20:01 | [d48077fb86] part of check-in [c7a3487981] Scan the table backwards if there is an ORDER BY ... DESC clause that can be satisfied by an index. (CVS 795) (check-in: [c7a3487981] user: drh branch: trunk, size: 41664) | |
2002-12-03
| ||
02:22 | [1de1a32623] part of check-in [dbf7893234] Honor ORDER BY clauses in VIEWs. Ticket #193. (CVS 792) (check-in: [dbf7893234] user: drh branch: trunk, size: 39739) | |
2002-10-27
| ||
19:35 | [615a0f0bed] part of check-in [31df3690d0] Minimal support for oracle8 outer join syntax. (CVS 771) (check-in: [31df3690d0] user: drh branch: trunk, size: 39678) | |
2002-09-30
| ||
12:36 | [8ff2acfcb9] part of check-in [6c0f44bd63] Fix a bug in the left outer join logic. (CVS 758) (check-in: [6c0f44bd63] user: drh branch: trunk, size: 39490) | |
2002-08-28
| ||
03:00 | [53959c9d94] part of check-in [723362e74f] Slightly faster INSERTs from a SELECT by avoiding an intermediate table. But it didn't make nearly as much difference as I had hoped. (CVS 732) (check-in: [723362e74f] user: drh branch: trunk, size: 39503) | |
2002-08-15
| ||
13:50 | [ce42cce65d] part of check-in [8cf17f2a24] Fix for ticket #135: Remove unused variables from three files. (CVS 719) (check-in: [8cf17f2a24] user: drh branch: trunk, size: 39462) | |
2002-08-14
| ||
03:03 | [68ac5d2066] part of check-in [2438da791a] Disable sorting by indices if there is a COLLATE subclause in the ORDER BY clause. (CVS 713) (check-in: [2438da791a] user: drh branch: trunk, size: 39532) | |
2002-08-13
| ||
23:02 | [9a6d2783ca] part of check-in [310ac4fbaf] Make the distinction between text and numeric data. (CVS 710) (check-in: [310ac4fbaf] user: drh branch: trunk, size: 39374) | |
13:15 | [c250b91886] part of check-in [957d908e6b] Bug fix to the left outer join logic. (CVS 1726) (check-in: [957d908e6b] user: drh branch: trunk, size: 39262) | |
2002-07-31
| ||
19:50 | [0fde349514] part of check-in [fe329e078f] Fix for ticket #124: Fix a stack VDBE overflow problem on joins on an INTEGER PRIMARY KEY. (CVS 700) (check-in: [fe329e078f] user: drh branch: trunk, size: 39107) | |
2002-06-28
| ||
12:18 | [6a43aa6c80] part of check-in [96515b813e] Additional test cases added. The following bug fixed: A segfault was occurring if a VIEW consisted of a join with a USING clause. (CVS 651) (check-in: [96515b813e] user: drh branch: trunk, size: 39107) | |
01:02 | [e692b238fa] part of check-in [c07e493b62] Fix for ticket #84: If the WHERE clause is too complex, issue an error message and refuse to do the SELECT. The cutoff is a WHERE clause with 100 terms. (CVS 650) (check-in: [c07e493b62] user: drh branch: trunk, size: 38890) | |
2002-06-25
| ||
01:09 | [913fa33977] part of check-in [9c1432bf74] Added support for the "sqlite_temp_master" table. Increased the version number to 2.5.2. (CVS 640) (check-in: [9c1432bf74] user: drh branch: trunk, size: 38768) | |
2002-06-24
| ||
22:01 | [259d7fb771] part of check-in [8b6574cfa8] Partial fix for a problem with LEFT OUTER JOIN. It used to be that the test for the right-hand table not matching the left table occurred after all ON, USING, WHERE clause processing. The test should occur after ON and USING clauses are checked but before the WHERE clause is check. This fix works as long as the total number of "AND" separated terms in the ON, USING, and WHERE clause does not exceed 32. To do: make this work for any number of terms and add test cases. that (CVS 639) (check-in: [8b6574cfa8] user: drh branch: trunk, size: 38837) | |
12:20 | [5ff862869a] part of check-in [d861489e1f] Fix a VDBE stack leak in LEFT OUTER JOIN. Fix a bug in the code generator for JOIN ... USING(...). (CVS 638) (check-in: [d861489e1f] user: drh branch: trunk, size: 38426) | |
2002-06-19
| ||
14:27 | [1fdb7aca26] part of check-in [f09e19b43e] The query optimizer now attempts to satisfy an ORDER BY clause using an index. Sorting is still used if there are no suitable indices. (CVS 628) (check-in: [f09e19b43e] user: drh branch: trunk, size: 38426) | |
2002-06-14
| ||
22:38 | [aa5d9d83ab] part of check-in [699cf36208] Make the LIMIT clause work even if the destination of the SELECT is something other than a callback. (Ticket #66) (CVS 619) (check-in: [699cf36208] user: drh branch: trunk, size: 34056) | |
20:58 | [bd25559800] part of check-in [7e10e60bb7] Improvements to comments. No code changes. (CVS 618) (check-in: [7e10e60bb7] user: drh branch: trunk, size: 34040) | |
2002-06-09
| ||
01:55 | [b7c653054d] part of check-in [2a710e1817] Added tests for the new IN operator optimizer and fixed a bug that the new tests found. This completes the implementation of enhancement #63. (CVS 612) (check-in: [2a710e1817] user: drh branch: trunk, size: 31108) | |
2002-06-08
| ||
23:25 | [d5308069f8] part of check-in [8481e841eb] Add optimizations for the IN operator in WHERE clauses. This is a partial implementation of enhancement #63. Still need to add test cases. (CVS 610) (check-in: [8481e841eb] user: drh branch: trunk, size: 30903) | |
2002-05-26
| ||
20:54 | [b054f2f231] part of check-in [9051173742] NULL values are distinct. A comparison involving a NULL is always false. Operations on a NULL value yield a NULL result. This change makes SQLite operate more like the SQL spec, but it may break existing applications that assumed the old behavior. All the old tests pass but we still need to add new tests to better verify the new behavior. Fix for ticket #44. (CVS 589) (check-in: [9051173742] user: drh branch: trunk, size: 29939) | |
2002-05-24
| ||
20:31 | [9030d18813] part of check-in [99bd1f5b9a] Initial implementation of LEFT OUTER JOIN including the expanded SQL92 join syntax. The basic functionality is there but there is still a lot of testing to do. (CVS 587) (check-in: [99bd1f5b9a] user: drh branch: trunk, size: 29933) | |
02:04 | [1516eb1c06] part of check-in [a167b71d8c] Split the IdList structure into IdList and SrcList. SrcList is used to represent a FROM clause and IdList is used for everything else. This change allows SrcList to grow to support outer joins without burdening the other uses of IdList. (CVS 584) (check-in: [a167b71d8c] user: drh branch: trunk, size: 28882) | |
2002-05-21
| ||
13:18 | [293985b6cf] part of check-in [3399b01219] Clean up some compiler warnings. (CVS 575) (check-in: [3399b01219] user: drh branch: trunk, size: 28855) | |
2002-05-19
| ||
23:43 | [7e482af684] part of check-in [8a4195c746] Style fixes to triggers code in various *.c files (partial fix to ticket #39) (CVS 571) (check-in: [8a4195c746] user: danielk1977 branch: trunk, size: 29041) | |
2002-05-15
| ||
11:44 | [d1c05aca90] part of check-in [690f9a1631] Remove all tabs from the beginning of source code lines. Replace tabs with the appropriate number of spaces. (CVS 565) (check-in: [690f9a1631] user: drh branch: trunk, size: 29033) | |
08:30 | [3138c1b441] part of check-in [794bf67b6b] Added FOR EACH ROW triggers functionality (CVS 562) (check-in: [794bf67b6b] user: danielk1977 branch: trunk, size: 28957) | |
2002-04-30
| ||
19:20 | [5e3e97adfa] part of check-in [24e4cf73d2] Fix for ticket #31: Do not attempt the flattening optimization if the subselect does not contain a FROM clause. Handle the special case where a WHERE clause is constant. (CVS 548) (check-in: [24e4cf73d2] user: drh branch: trunk, size: 28253) | |
2002-04-02
| ||
13:26 | [9d36f6c9fe] part of check-in [abb12259a0] Fix for bug #8: Correctly handle terms of a WHERE clause in a join where the term does not use a comparison operator. (CVS 515) (check-in: [abb12259a0] user: drh branch: trunk, size: 28007) | |
01:58 | [e6292ab9d4] part of check-in [bdd8ce584e] Fix for bug #6: Correctly handle functions in the WHERE clause of a join. (CVS 513) (check-in: [bdd8ce584e] user: drh branch: trunk, size: 27957) | |
2002-03-02
| ||
17:04 | [34d91fd5d8] part of check-in [d5d3e79cc5] Subquery flattening is implemented and passes all regression tests. We still need to add addition tests to the suite to further exercise the flattener, however. (CVS 408) (check-in: [d5d3e79cc5] user: drh branch: trunk, size: 27822) | |
2002-02-23
| ||
02:32 | [664be01b0c] part of check-in [39fed2df11] Code to implement CREATE VIEW is in place. A quick smoke test shows that it works, but there are probably still many bugs. (CVS 387) (check-in: [39fed2df11] user: drh branch: trunk, size: 27847) | |
2002-02-18
| ||
22:49 | [f79bc31793] part of check-in [553579f936] Bug fix: CREATE TABLE, followed by DROP TABLE within the same transaction is working now. (CVS 378) (check-in: [553579f936] user: drh branch: trunk, size: 27830) | |
01:17 | [f4bc12e172] part of check-in [89ffa9ff13] Add support for subqueries in the FROM clause of a SELECT. Still need to add tests for this feature. (CVS 372) (check-in: [89ffa9ff13] user: drh branch: trunk, size: 27671) | |
2002-02-13
| ||
23:22 | [fd4d817ded] part of check-in [df6bf627a5] Bug fix: if PRAGMA full_column_names=ON is set and you do a query like this: "SELECT rowid,* FROM ...", then an assertion failed. Bummer. (CVS 368) (check-in: [df6bf627a5] user: drh branch: trunk, size: 27508) | |
2002-01-28
| ||
15:53 | [2dda39367f] part of check-in [dbcfe198fb] Bug fix: The IN operator was not working if either side derived from an INTEGER PRIMARY KEY. (CVS 354) (check-in: [dbcfe198fb] user: drh branch: trunk, size: 27356) | |
2002-01-09
| ||
03:19 | [a9b286ac73] part of check-in [b3656a5cfe] Working on a bug: Dropping and recreating a table within a transaction causes an assertion failure. (CVS 342) (check-in: [b3656a5cfe] user: drh branch: trunk, size: 26934) | |
2002-01-06
| ||
17:07 | [ed7343344a] part of check-in [9b0be4fcc1] Comment updates most. Also some small changes to the VDBE. (CVS 339) (check-in: [9b0be4fcc1] user: drh branch: trunk, size: 26865) | |
2002-01-04
| ||
03:09 | [d673265cad] part of check-in [011be9a9d2] An attempt to delete a single row using a WHERE clause that specifies the rowid would result in an error if the rowid did not exist. This problem has been resolved. (CVS 338) (check-in: [011be9a9d2] user: drh branch: trunk, size: 26866) | |
2001-12-22
| ||
14:49 | [178a908a40] part of check-in [29cab124b4] Bug fixing in the new integer primary key code. (CVS 334) (check-in: [29cab124b4] user: drh branch: trunk, size: 26810) | |
2001-11-12
| ||
13:51 | [05d27a01e5] part of check-in [6b3ccb37bf] Update change log prior to release of 2.1.0. (CVS 311) (check-in: [6b3ccb37bf] user: drh branch: trunk, size: 24054) | |
2001-11-09
| ||
13:41 | [d51e6380dc] part of check-in [84997fda33] Bug fixes. (CVS 306) (check-in: [84997fda33] user: drh branch: trunk, size: 24021) | |
2001-11-08
| ||
00:45 | [13a112b720] part of check-in [262bcd17df] The new code for taking advantage of inequalities in WHERE clauses is in place. It appears to work. (CVS 305) (check-in: [262bcd17df] user: drh branch: trunk, size: 24039) | |
2001-11-07
| ||
16:48 | [a6cac72314] part of check-in [decbeb9151] New Next opcode and indexing style implemented. (CVS 304) (check-in: [decbeb9151] user: drh branch: trunk, size: 15842) | |
2001-11-04
| ||
18:32 | [601f096f2a] part of check-in [7dd58fad39] Increase maximum row size to 1MB. (CVS 300) (check-in: [7dd58fad39] user: drh branch: trunk, size: 15024) | |
2001-10-13
| ||
01:06 | [22fe910c7c] part of check-in [288ef1247b] Remove the P3 and label arguments from the internal sqliteVdbeAddOp() function. This makes the code easier to read and perhaps smaller as well. (CVS 286) (check-in: [288ef1247b] user: drh branch: trunk, size: 15024) | |
2001-10-08
| ||
13:22 | [b676765ad0] part of check-in [9368c62e40] Support for temporary tables added. Still need more testing. (CVS 279) (check-in: [9368c62e40] user: drh branch: trunk, size: 14904) | |
2001-09-18
| ||
02:02 | [cce952b6a2] part of check-in [8f28a83aba] Bug fixes. Trying to make it go faster. (CVS 254) (check-in: [8f28a83aba] user: drh branch: trunk, size: 14829) | |
2001-09-16
| ||
00:13 | [db42a5abde] part of check-in [4e926efe2b] Disclaimed copyright. Preparing for release 2.0. (CVS 250) (check-in: [4e926efe2b] user: drh branch: trunk, size: 14825) | |
2001-09-15
| ||
00:57 | [b831b506e1] part of check-in [14474fa144] Everything is working on Linux. This is release 2.0-Alpha-1. (CVS 246) (check-in: [14474fa144] user: drh branch: trunk, size: 15380) | |
2001-09-13
| ||
16:18 | [fef978a9a2] part of check-in [9ac8399c99] It runs. Simple tables can be created. INSERT and SELECT work. Much more testing is needed, however. (CVS 241) (check-in: [9ac8399c99] user: drh branch: trunk, size: 15165) | |
14:46 | [b9f6d2c029] part of check-in [a0a1e701ab] The BTree changes are now integrated and the whole thing compiles and links. I have not yet tried to run it, though. (CVS 239) (check-in: [a0a1e701ab] user: drh branch: trunk, size: 15109) | |
13:46 | [ddf119d879] part of check-in [6ecc8b20d4] The code is in place to replace GDBM with BTree. But I have not yet attempted to compile it. I am sure the code contains bugs. (CVS 238) (check-in: [6ecc8b20d4] user: drh branch: trunk, size: 15103) | |
2001-08-19
| ||
18:19 | [a49083e593] part of check-in [c15f6ffc4d] Add index access methods to the DBBE in preparation for adding a new DBBE for the btree.c module. (CVS 236) (check-in: [c15f6ffc4d] user: drh branch: trunk, size: 15054) | |
2001-04-11
| ||
14:28 | [0c542fc44b] part of check-in [86b30cd097] better handling of out-of-memory errors (CVS 207) (check-in: [86b30cd097] user: drh branch: trunk, size: 15051) | |
2001-04-04
| ||
11:48 | [459bf37ac7] part of check-in [35a8feed0d] Added transaction support (CVS 196) (check-in: [35a8feed0d] user: drh branch: trunk, size: 15016) | |
2001-02-19
| ||
23:23 | [478fde7c93] part of check-in [4fb52b4824] Repairs to the previous fix (CVS 186) (check-in: [4fb52b4824] user: drh branch: trunk, size: 13074) | |
18:24 | [e0865f5239] part of check-in [99aae9aaa9] fix the UPDATE bug (CVS 185) (check-in: [99aae9aaa9] user: drh branch: trunk, size: 13196) | |
2001-01-15
| ||
22:51 | [fcc2c2c84f] part of check-in [c6ffb7ec6a] continued progress toward version 2.0 (CVS 177) (check-in: [c6ffb7ec6a] user: drh branch: trunk, size: 13074) | |
2000-08-22
| ||
18:29 | [3dfad2ffd0] part of check-in [f255ea6d4b] bug fix (CVS 142) (check-in: [f255ea6d4b] user: drh branch: trunk, size: 13068) | |
2000-06-21
| ||
13:59 | [420f666a38] part of check-in [e1bf96a467] :-) (CVS 104) (check-in: [e1bf96a467] user: drh branch: trunk, size: 13063) | |
2000-06-06
| ||
13:54 | [c9b90e7672] part of check-in [54d198189b] added IN and BETWEEN operators (CVS 57) (check-in: [54d198189b] user: drh branch: trunk, size: 13030) | |
2000-06-05
| ||
18:54 | [6b840a726b] part of check-in [c02268bdf4] :-) (CVS 52) (check-in: [c02268bdf4] user: drh branch: trunk, size: 13027) | |
2000-05-31
| ||
15:34 | [bed9a8360c] part of check-in [dee7a8be88] added aggregate functions like count(*) (CVS 21) (check-in: [dee7a8be88] user: drh branch: trunk, size: 12110) | |
02:27 | [fd9faea693] part of check-in [01d85b35e9] :-) (CVS 20) (check-in: [01d85b35e9] user: drh branch: trunk, size: 19004) | |
2000-05-30
| ||
20:17 | [2c8de69c4c] part of check-in [03725ce5ae] :-) (CVS 19) (check-in: [03725ce5ae] user: drh branch: trunk, size: 18275) | |
03:28 | [be3973952e] part of check-in [191a7f484e] :-) (CVS 13) (check-in: [191a7f484e] user: drh branch: trunk, size: 18250) | |
2000-05-29
| ||
14:26 | Added: [67ffea5792] part of check-in [6f3655f79f] initial check-in of the new version (CVS 1) (check-in: [6f3655f79f] user: drh branch: trunk, size: 18250) | |