Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
History for src/whereexpr.c
2025-06-17
| ||
19:32 | [1c60db88b6] part of check-in [c232fa2bfc] Avoid writing frames with no checksums into the wal file if a savepoint is rolled back after dirty pages have already been spilled into the wal file. Also fix a corner case in the previous check-in on this branch. (check-in: [c232fa2bfc] user: drh branch: branch-3.50, size: 72179) | |
18:57 | [566ca4382e] part of check-in [336a59eb3a] Fix a corner-case for [9441fff52cc4e19c]. (check-in: [336a59eb3a] user: drh branch: trunk, size: 72232) | |
2025-06-16
| ||
18:04 | [fa9bfb18c8] part of check-in [6c5f4c8af9] Fix an issue going back to version 3.39.0 with transitive IS constraints in queries that make use of RIGHT JOIN. (check-in: [6c5f4c8af9] user: drh branch: branch-3.50, size: 72136) | |
17:36 | [cf86bb36c5] part of check-in [9441fff52c] Fix an issue going back to version 3.39.0 with transitive IS constraints in queries that make use of RIGHT JOIN. Problem reported by forum post 68f29a2005. (check-in: [9441fff52c] user: drh branch: trunk, size: 72189) | |
16:07 | [e853a9e533] part of check-in [94b53c20e9] Improved debugging output for the transitive constraint optimization. (check-in: [94b53c20e9] user: drh branch: trunk, size: 71667) | |
2025-02-01
| ||
23:28 | [2415c8eee5] part of check-in [d08a7aa898] Remove an ALWAYS() added by [2567298f4b0fdfeb] because dbsqlfuzz found a way to reach it. The test case was added to TH3. (check-in: [d08a7aa898] user: drh branch: trunk, size: 71614) | |
2025-01-31
| ||
20:18 | [d304e3fec8] part of check-in [2567298f4b] Tweaks to [4b4f33d791fe4318] to make it easier to test. (check-in: [2567298f4b] user: drh branch: trunk, size: 71622) | |
14:52 | [fd80811331] part of check-in [4b4f33d791] Fix a problem with LIKE and GLOB processing in utf-16be databases in cases where the utf-8 encoding of a character ends with the byte 0xBF. Forum post d7b90d92ffbfc61f (check-in: [4b4f33d791] user: dan branch: trunk, size: 71615) | |
2024-10-09
| ||
11:52 | [0f93a29cab] part of check-in [9d0eb39804] Improved handling of unicode characters in the LIKE optimization. Follow-up to [bce52ce2a6e7f3d3]. (check-in: [9d0eb39804] user: drh branch: trunk, size: 71327) | |
2024-10-07
| ||
12:24 | [29307f9f52] part of check-in [242cb4bbee] Fix handling of U+fffd in the LIKE optimization. (check-in: [242cb4bbee] user: drh branch: branch-3.46, size: 70844) | |
12:15 | [562ce89d7f] part of check-in [13addee687] Check-in to the wrong branch. (check-in: [13addee687] user: drh branch: mistake, size: 71313) | |
2024-08-20
| ||
23:11 | [44f41ae554] part of check-in [484bcd75bc] Refactor the SrcItem object to move fields associated with subqueries out into a separate object named Subquery. This reduces the size of the SrcItem object by about 1/3rd and provides improved performance. (check-in: [484bcd75bc] user: drh branch: trunk, size: 71150) | |
14:16 | [1d350f8ddb] part of check-in [db917d50fd] When the database encoding is UTF-16LE and the GLOB optimization is used, it is ok to use the range search over an index, but it is not ok to disable the actual GLOB function call. (check-in: [db917d50fd] user: drh branch: branch-3.46, size: 70681) | |
14:12 | [26a5a798b3] part of check-in [3399698376] When the database encoding is UTF-16LE and the GLOB optimization is used, it is ok to use the range search over an index, but it is not ok to disable the actual GLOB function call. (check-in: [3399698376] user: drh branch: trunk, size: 71085) | |
12:15 | [c9a7a316b9] part of check-in [5815f13263] The LIKE/GLOB optimization restricts its attention to the pattern prefix that is all ASCII. (check-in: [5815f13263] user: drh branch: branch-3.46, size: 70654) | |
12:09 | [f8a4fa8846] part of check-in [a5797ebdea] Fix for the UTF-16LE problem reporte by forum post dc7e1b7527e84343. Because of the unexpected ordering of characters using the default collation (memcmp() order) in UTF-16LE, the LIKE/GLOB optimization restricts its attention to the pattern prefix that is all ASCII, which is the common case. (check-in: [a5797ebdea] user: drh branch: trunk, size: 71058) | |
2024-08-19
| ||
22:48 | [6a72cf6075] 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: 70726) | |
2024-08-17
| ||
23:23 | [784f641ba3] 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: 70667) | |
2024-06-06
| ||
16:06 | [cb357cf1ef] 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: 60667) | |
15:03 | [7d0d34b42b] 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: 70661) | |
01:21 | [66179e4711] part of check-in [34f05c3d89] Adjust the parser so that the value of TK_ISNOT is similar to the value of TK_IS. This helps the compiler generate faster switch() statements on the Expr.op fields when there are cases for TK_ISNOT and other common operators. (check-in: [34f05c3d89] user: drh branch: trunk, size: 70653) | |
01:00 | [52a59e9252] part of check-in [9d69fc1c87] Small performance optimization in the operatorMask routine of the WHERE clause analysis logic. (check-in: [9d69fc1c87] user: drh branch: trunk, size: 70388) | |
00:49 | [6410cd2cd4] part of check-in [4ba8be5447] Small performance optimization in the allowedOp() routine of the WHERE clause analysis code. (check-in: [4ba8be5447] user: drh branch: trunk, size: 70363) | |
2024-04-26
| ||
18:13 | [67d15caf88] part of check-in [90e5c8226a] Allow virtual table implementations to handle OFFSET but not LIMIT, but not LIMIT but not OFFSET. (check-in: [90e5c8226a] user: dan branch: vtab-limit-fix, size: 70257) | |
14:32 | [e8e26dbdef] part of check-in [72c8ed9698] Fix a problem allowing a LIMIT constraint to be passed to a virtual table in cases where there exist WHERE terms that cannot also be passed. (check-in: [72c8ed9698] user: dan branch: vtab-limit-fix, size: 70257) | |
13:38 | [f6c25f7c8c] part of check-in [40421c1c4e] Fix handling of LIMIT and OFFSET in virtual tables that are part of a compound SELECT. (check-in: [40421c1c4e] user: drh branch: vtab-limit-fix, size: 70211) | |
2024-04-02
| ||
18:31 | [9813b81c1b] part of check-in [1f97086d62] Fix table-valued functions so that they will work as the right table in a LEFT JOIN. Ticket [2ae0c599b735d59e] (check-in: [1f97086d62] user: drh branch: branch-3.28, size: 60666) | |
2024-03-16
| ||
13:18 | [7b64295f1d] 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: 70107) | |
2024-03-07
| ||
12:34 | [6ebd90b553] part of check-in [720ce06d93] Do not allow the query planner to be tricked into thinking that an index on a constant expression might be useful for something. Problem reported on forum post ecdfc02339. This is a follow-up to the fixes at [44200596aa943963] and [2d2b91cc0f6fed8c]. (check-in: [720ce06d93] user: drh branch: trunk, size: 70105) | |
2023-06-16
| ||
14:39 | [dc5096eca5] part of check-in [365caf2f97] Address various harmless compiler warnings from forum post d526da8ee4. (check-in: [365caf2f97] user: drh branch: trunk, size: 70076) | |
2023-06-07
| ||
08:40 | [f0a29594a2] 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: 70075) | |
2023-05-04
| ||
11:29 | [22cf19b0ec] part of check-in [d3370d59cf] Fix a bug in cursor hints that can cause references to tables that have not been opened. Cursor hints are intended for use by COMDB2 only and should not appear in production builds, so this should not be a factor for the vast majority of users. (check-in: [d3370d59cf] user: drh branch: trunk, size: 70106) | |
2023-02-27
| ||
14:48 | [1dfda1695e] part of check-in [18ee689de3] Further to [46639f682975dac6], the parameters of a table valued function that is on the left side of a RIGHT JOIN do not need to be in the ON clause. Add new test cases and tags to associated test cases with the code. (check-in: [18ee689de3] user: drh branch: trunk, size: 70080) | |
2023-02-26
| ||
20:57 | [16d1eefd95] part of check-in [46639f6829] When a table-valued function appears as the right table of a RIGHT JOIN, the argument constraints on the table-valued function should be considered part of the ON clause of the RIGHT JOIN. Fix for the problem reported by forum post 422e635f3beafbf6. Test cases in TH3. Possibly related to the enhancement at [501609eddf2a46d5]. (check-in: [46639f6829] user: drh branch: trunk, size: 69870) | |
2023-02-13
| ||
18:42 | [a60a1f8865] part of check-in [2d2b91cc0f] Do not allow WHERE clause terms to match constant string index terms, which can happen if DQS_DDL is enabled. Follow-up to [44200596aa943963]. dbsqlfuzz 54c9db85ed4af7055f5fd0d50877875c82b11d46. (check-in: [2d2b91cc0f] user: drh branch: trunk, size: 69861) | |
16:10 | [60dbc85ef8] part of check-in [1815b15ddb] Allow vector-IN expressions like "(a, b) IN ( (?,?), (?,?) )" to use an index. (check-in: [1815b15ddb] user: dan branch: vector-in-fix, size: 69818) | |
12:46 | [bbf7259c6c] part of check-in [d35de3ad3f] In the LIKE optimization, do not analyze the new virtual WHERE clause terms until both have been added, since they are expected to be consecutive and the analysis might add complementary terms. This fixes a problem caused by [44200596aa943963] and discovered by dbsqlfuzz and recorded as case 7e3b5983727d843b910b2d9ab556e4afcd777cfb. (check-in: [d35de3ad3f] user: drh branch: trunk, size: 69772) | |
2023-02-10
| ||
21:53 | [aa94672720] part of check-in [44200596aa] Do a better job of detecting when a WHERE clause term might be useful to an expression index. Fix for performance regression reported by forum thread e65800d8cb. (check-in: [44200596aa] user: drh branch: trunk, size: 69772) | |
2023-01-04
| ||
17:46 | [7c5671a04b] part of check-in [f38caab23b] Ensure that LIMIT clauses may be passed through to virtual table implementations even if the WHERE clause uses operators that may only be optimized by virtual, not built-in, tables (!=, functions, MATCH etc.). (check-in: [f38caab23b] user: dan branch: trunk, size: 69840) | |
2022-10-22
| ||
23:09 | [05295b44b5] part of check-in [f6d09c5a0d] More frequently send the complete SELECT statement into sqlite3WhereBegin() so that it can more accurately determine index coverage. (check-in: [f6d09c5a0d] user: drh branch: covering-index-enh, size: 69522) | |
14:16 | [a98e498cb7] 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: 69564) | |
2022-10-21
| ||
20:12 | [793ed33373] 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: 69550) | |
2022-10-20
| ||
13:36 | [a1bd9d8fad] 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: 69551) | |
2022-10-19
| ||
11:22 | [ca55a11c24] 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: 60571) | |
2022-10-13
| ||
21:08 | [bf8c155212] 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: 69628) | |
2022-06-22
| ||
15:55 | [55a39f42aa] part of check-in [5c9133ef43] More comment fixes. No changes to code. (check-in: [5c9133ef43] user: drh branch: trunk, size: 69596) | |
2022-06-20
| ||
19:12 | [4dae5e39a8] part of check-in [364645d8fe] Add an ALWAYS() macro to an always-true branch. (check-in: [364645d8fe] user: drh branch: trunk, size: 69596) | |
17:04 | [3b5f9f6f9f] part of check-in [e615dbe02c] Do not allow an ON clause to references tables to its right if there is a RIGHT or FULL join anywhere in the query. Other RDBMSes prohibit this always, but SQLite must allow ON clauses to reference tables to their right for legacy compatibility, unless there is a RIGHT or FULL join someplace in the query, in which case there is no legacy to support. (check-in: [e615dbe02c] user: drh branch: trunk, size: 69588) | |
2022-06-02
| ||
02:45 | [20255cf03e] part of check-in [8eb9a7dd07] Avoid a direct use of abort() in debug builds to prevent a compilation issue for Windows CE. (check-in: [8eb9a7dd07] user: mistachkin branch: trunk, size: 69255) | |
2022-06-01
| ||
13:32 | [416d6a847b] part of check-in [fdd782a7bb] Candidate fix for the problem with row-value WHERE clause constraints on a RIGHT JOIN. (check-in: [fdd782a7bb] user: drh branch: row-value-right-join, size: 69251) | |
2022-05-24
| ||
16:05 | [7c5ee52e1d] part of check-in [2b6ebba26d] When an ON clause on an INNER JOIN references a table to the right of of the join, just convert the ON clause to an ordinary WHERE clause term, in order to be compatible with older versions of SQLite. See forum thread 687b0bf563a1d4f1 for details. (check-in: [2b6ebba26d] user: drh branch: trunk, size: 69235) | |
2022-05-13
| ||
16:38 | [efed370c68] part of check-in [6f741d6cfb] Redefine the acccess rules for the Expr.w union so that the Expr.w.iJoin member is accessible on either EP_OuterON or EP_InnerON. (check-in: [6f741d6cfb] user: drh branch: trunk, size: 68803) | |
14:52 | [98e4e3fb3d] 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: 68741) | |
2022-05-02
| ||
20:49 | [e036477ac8] 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: 68751) | |
2022-04-11
| ||
12:38 | [174d4ad5be] 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: 68748) | |
11:48 | [d79dd55b6a] 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: 68650) | |
11:25 | [346ca19fa8] 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: 68639) | |
2022-04-09
| ||
03:12 | [ac8985bbd9] 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: 68700) | |
03:06 | [2ce4ff64b8] 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: 68689) | |
2022-04-08
| ||
19:20 | [a4542ee72e] 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: 68862) | |
2022-04-07
| ||
01:11 | [612f58f5f6] part of check-in [158156a3e3] Improved technique for parsing the ON and USING clauses of a join is faster and uses less memory. (check-in: [158156a3e3] user: drh branch: trunk, size: 68851) | |
2022-02-07
| ||
01:09 | [2a71f54917] part of check-in [9a206e37fb] When create table/view fails due to name taken, say which took it. (check-in: [9a206e37fb] user: larrybr branch: trunk, size: 68796) | |
2022-02-06
| ||
22:13 | [40ce462631] 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: 68789) | |
2022-02-05
| ||
21:49 | [ee4b962c8f] 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: 68778) | |
2022-02-04
| ||
13:05 | [2da56404a0] part of check-in [9f67ad00cd] For the MULTI-INDEX-OR optimization, when pushing down WHERE clause terms from the main query into the various OR-term subqueries, do not push down slices of a vector comparison, since the right-hand operand of the comparison might have only been initialized in a different OR branch that was not taken. dbsqlfuzz 80a9fade844b4fb43564efc972bcb2c68270f5d1. (check-in: [9f67ad00cd] user: drh branch: trunk, size: 68768) | |
2022-02-02
| ||
11:37 | [fa8017f9fe] part of check-in [41d8d26e48] Fix a harmless code indentation issue. (check-in: [41d8d26e48] user: drh branch: trunk, size: 68757) | |
2022-01-30
| ||
11:42 | [ddb6ab49f7] part of check-in [d4e402458d] Remove a faulty NEVER(). Fix for dbsqlfuzz 4678cf825d27f87c9b8343720121e12cf944b71a (check-in: [d4e402458d] user: drh branch: trunk, size: 68758) | |
2022-01-28
| ||
23:19 | [becee225f1] part of check-in [388926254b] Add a NEVER() on an unreachable branch. (check-in: [388926254b] user: drh branch: vtab-limit-offset, size: 68765) | |
19:53 | [4219584944] part of check-in [8f8cab0d0e] Include hidden columns of table valued functions that are constrained by the function arguments in the colUsed bitmask. (check-in: [8f8cab0d0e] user: drh branch: vtab-limit-offset, size: 68739) | |
13:18 | [869596d69a] part of check-in [140480b3ec] Enable SQLITE_INDEX_CONSTRAINT_LIMIT/OFFSET even if there are vector comparison operators in the WHERE clause. Also: Do not enable sqlite3_vtab_rhs_value() for LIMIT/OFFSET if the value is negative, as this violates an invariant on Expr.u.iValue. (check-in: [140480b3ec] user: drh branch: vtab-limit-offset, size: 68688) | |
2022-01-27
| ||
21:18 | [391d04108e] 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: 68335) | |
18:45 | [455b5eeef4] part of check-in [b2d37c086c] Make LIMIT and OFFSET values available to sqlite3_vtab_rhs_value(). (check-in: [b2d37c086c] user: drh branch: vtab-limit-offset, size: 68279) | |
16:14 | [50b09b3583] 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: 67295) | |
2021-12-15
| ||
20:48 | [9f64c39e53] 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: 64520) | |
2021-12-08
| ||
16:07 | [791544603b] 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: 64532) | |
2021-12-03
| ||
15:48 | [19394cb463] part of check-in [8029e6bab5] Fix exprAnalyze() after recent performance enhancements so that it is able to handle IF_NULL_ROW opcode correctly, again. (check-in: [8029e6bab5] user: drh branch: trunk, size: 64216) | |
14:57 | [779b3230a7] part of check-in [f3d6853ee8] Fix unreachable branches resulting from prior optimizations. (check-in: [f3d6853ee8] user: drh branch: trunk, size: 64181) | |
2021-12-02
| ||
18:15 | [ac082ec617] part of check-in [1f2252e65d] Optimizations to exprAnalyze() and sqlite3WhereExprUsage() save about 1.5 million CPU cycles for speedtest1, and result in a smaller binary. (check-in: [1f2252e65d] user: drh branch: trunk, size: 64174) | |
13:45 | [da93d2227c] part of check-in [3312be1db3] Remove an unnecessary branch from exprAnalyze(), resulting in a small performance gain. (check-in: [3312be1db3] user: drh branch: trunk, size: 62511) | |
12:55 | [5780201555] part of check-in [080b35e62e] Small performance optimization in sqlite3WhereClauseClear(). (check-in: [080b35e62e] user: drh branch: trunk, size: 62474) | |
2021-10-15
| ||
17:06 | [17bdbf4f5b] 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: 62235) | |
2021-10-07
| ||
20:46 | [4514a162d8] part of check-in [87e2f5eb43] Protect access to the Expr.y union using nearby assert()s and branches. (check-in: [87e2f5eb43] user: drh branch: trunk, size: 61924) | |
17:43 | [01d87dc0d5] 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: 61554) | |
13:40 | [108a89887e] part of check-in [9af863f065] Protect all accesses to the FuncDef.u and Expr.u unions using nearby assert()s or branches. (check-in: [9af863f065] user: drh branch: trunk, size: 61343) | |
2021-09-07
| ||
15:41 | [e5fdac355d] part of check-in [b9417d400f] Fix a potential NULL pointer deference in the LIKE optimization. The problem was introduced by the addition of generated columns in check-in [b855acf1831943b3] (SQLite version 3.31.0, 2020-01-22). Reported by Wang Ke in [forum/forumpost/699b44b3ee|forum post 699b44b3ee]. (check-in: [b9417d400f] user: drh branch: trunk, size: 60865) | |
2021-07-22
| ||
16:07 | [3a9144a9d5] part of check-in [1f67960440] One of the optimizations of check-in [de9c86c9e4cdb34f] does not work for terms originating in the ON/USING clause, as demonstrated by forum post 6cf3bb457c3f4685. This check-in disables that optimization for ON/USING terms. Also improve the TreeView display for the resulting "true"/"false" nodes to show that they originate from the ON/USING clause. Add a testcase() to the other optimization to show that it can still be used for ON/USING terms. (check-in: [1f67960440] user: drh branch: trunk, size: 60852) | |
2021-07-05
| ||
01:11 | [2bfb1cd24b] part of check-in [026f08d4cf] Ensure that TK_SELECT_COLUMN Expr nodes always have their iTable field set to to the number of columns in the vector. This is not strictly necessary. It just simplifies the state description and make the code easier to reason about. (check-in: [026f08d4cf] user: drh branch: trunk, size: 60794) | |
2021-05-14
| ||
15:37 | [5a9c9f5d2d] part of check-in [cf63abbe55] Avoid adding superfluous virtual WHERE clause terms that might arise due to the constant propagation optimization. (check-in: [cf63abbe55] user: drh branch: trunk, size: 60780) | |
13:32 | [f53c2676cb] part of check-in [af5eb902e7] Fix an over-length source code comment in whereexpr.c. No logic changes. (check-in: [af5eb902e7] user: drh branch: trunk, size: 60733) | |
2021-05-04
| ||
12:07 | [811f339ca8] part of check-in [16252d73fa] Back out the EXISTS-to-IN optimization. It slows things down rather than speeds them up depending on the query. And (see forum post 8692d94725) it sometimes results in an incorrect answer. We may come back and revisit this optimization later, but for now it seems best just to disable it. (check-in: [16252d73fa] user: drh branch: trunk, size: 60737) | |
2021-04-10
| ||
14:49 | [d8cafcf678] part of check-in [40852ca8e2] Fix a problem with handling expressions like "(col IS NULL AND <expr1>) OR col == NULL" in WHERE clauses. Reported at https://sqlite.org/forum/forumpost/1c4f2fdcc4. (check-in: [40852ca8e2] user: dan branch: trunk, size: 69882) | |
2021-03-29
| ||
20:28 | [4ba94b8ebb] part of check-in [d07e246f9b] Do not do the EXISTS-to-IN transformation if the sub-select has LIMIT clause. (check-in: [d07e246f9b] user: dan branch: trunk, size: 69821) | |
2021-03-01
| ||
21:43 | [53452fe2fb] part of check-in [9400bdc602] Add #ifndef macros so that the build works again with -DSQLITE_OMIT_AUTHORIZATION and -DSQLITE_OMIT_WINDOWFUNC. (check-in: [9400bdc602] user: drh branch: trunk, size: 69792) | |
2021-02-26
| ||
21:39 | [dbae38ffb5] part of check-in [e4d1970ef1] Fix a segfault that could occur when optimizing a NOT NULL constraint against an IPK column of a sub-query. (check-in: [e4d1970ef1] user: dan branch: trunk, size: 69743) | |
20:14 | [5bbce43bc1] part of check-in [5ecd842555] Attempt to optimize "x IS NULL" and "x IS NOT NULL" expressions when x is a column with a NOT NULL constraint. (check-in: [5ecd842555] user: dan branch: ifnull-opt, size: 69710) | |
2021-02-21
| ||
21:04 | [2dc51263e1] 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: 69515) | |
2021-02-07
| ||
12:59 | [f7b5469e83] part of check-in [5f8bf99579] Fix harmless compiler warnings. (check-in: [5f8bf99579] user: drh branch: trunk, size: 69515) | |
2021-01-21
| ||
20:42 | [a182038cf7] part of check-in [6d60cf540b] Performance optimizations in exprAnalyze() (check-in: [6d60cf540b] user: drh branch: isnotnull-opt, size: 69447) | |
17:54 | [1f11bdd204] part of check-in [fc98218cf6] Always enable the IS NOT NULL optimization, even if STAT4 is not enabled. (check-in: [fc98218cf6] user: drh branch: isnotnull-opt, size: 69399) | |
2021-01-18
| ||
00:11 | [a022b4f447] part of check-in [92cc29099f] More comments on the EXISTS-to-IN optimization logic. (check-in: [92cc29099f] user: drh branch: exists-to-in, size: 69508) | |
2021-01-17
| ||
00:13 | [9886a16b52] part of check-in [cac90a9f4a] Minor simplification of the EXISTS-to-IN logic. (check-in: [cac90a9f4a] user: drh branch: exists-to-in, size: 68683) | |
2021-01-16
| ||
20:22 | [9fdbed1903] part of check-in [ef49ee4a37] Improved handling of vector equalities in the EXISTS-to-IN translator. (check-in: [ef49ee4a37] user: drh branch: exists-to-in, size: 68709) | |
18:55 | [0a3fd3667c] part of check-in [87e78a19bb] Give the EXISTS-to-IN optimization the ability to handle some cases that involve vector comparisons, instead of throwing a mysterious error in those cases. (check-in: [87e78a19bb] user: drh branch: exists-to-in, size: 68750) | |
18:22 | [10ed78eb09] part of check-in [0dad5ce34a] Add debugging output about the EXISTS-to-IN optimization when the ".wheretrace" flag has the 0x20 bit set. (check-in: [0dad5ce34a] user: drh branch: exists-to-in, size: 68575) | |
2021-01-15
| ||
16:37 | [0462a66cca] part of check-in [950030d679] Update header comments for routines added by this branch. (check-in: [950030d679] user: dan branch: exists-to-in, size: 68329) | |
15:32 | [d63dcb4425] part of check-in [a373baae12] Ensure the EXISTS->IN transformation preserves the collation sequence of the comparison operation. (check-in: [a373baae12] user: dan branch: exists-to-in, size: 66634) | |
15:21 | [8ea4f6cd13] part of check-in [8ce3cb9096] Fix a potential NULL pointer dereference following OOM. (check-in: [8ce3cb9096] user: drh branch: exists-to-in, size: 66468) | |
15:17 | [2d42217961] part of check-in [a80c9a076d] Add a new optimizer disabling bit to close off the exists-to-in optimization, for testing purposes. (check-in: [a80c9a076d] user: drh branch: exists-to-in, size: 66421) | |
14:25 | [0ba5c743ee] part of check-in [dcb7772d76] Small performance improvement in the EXISTS-to-IN translator for the common case where the EXISTS operator is not found in the WHERE clause. (check-in: [dcb7772d76] user: drh branch: exists-to-in, size: 66366) | |
11:39 | [1f4fac8ea8] part of check-in [897f3f4026] Add simple tests (and a fix) for the change on this branch. (check-in: [897f3f4026] user: dan branch: exists-to-in, size: 66280) | |
2021-01-14
| ||
20:50 | [e48e3edea4] part of check-in [9f90a88221] Allow the planner to convert an EXISTS(SELECT...) expression in a WHERE clause to the equivalent IN(...) expression in situations where this is possible and advantageous. (check-in: [9f90a88221] user: dan branch: exists-to-in, size: 66377) | |
2020-11-08
| ||
20:44 | [3a463e156e] 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: 60508) | |
2020-09-28
| ||
15:49 | [2a05552e80] 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: 60476) | |
2020-07-29
| ||
16:18 | [58a396e622] 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: 60439) | |
2020-02-17
| ||
19:25 | [264d58971e] part of check-in [abc473fb8f] A better (smaller and faster) solution to ticket [4374860b29383380]. (check-in: [abc473fb8f] user: drh branch: trunk, size: 60438) | |
00:12 | [512b6d4b0c] part of check-in [9d0d4ab95d] Take care when checking the table of a TK_COLUMN expression node to see if the table is a virtual table to first ensure that the Expr.y.pTab pointer is not null due to generated column optimizations. Ticket [4374860b29383380]. (check-in: [9d0d4ab95d] user: drh branch: trunk, size: 60238) | |
2019-12-23
| ||
14:20 | [4b34be1434] part of check-in [0b1dbd60f5] For expressions like (x, y) IN (SELECT ...) where the SELECT uses window-functions, require that all columns on the LHS be indexed before an index can be used. Fix for [d9ed4ebe]. (check-in: [0b1dbd60f5] user: dan branch: trunk, size: 60321) | |
2019-12-22
| ||
20:03 | [3d0ff09815] part of check-in [ef604882a2] When constructing the virtual MATCH term of the WHERE clause for a virtual table that is in a LEFT JOIN, be sure to set the correct Expr.iRightJoinTable value. This value does not appear to ever be used, except inside of a single assert(). But it is good to set it correctly, nevertheless. This fixes ticket [7929c1efb2d67e98], which as far as I can tell is completely harmless. (check-in: [ef604882a2] user: drh branch: trunk, size: 60209) | |
2019-12-20
| ||
15:35 | [989235ee5f] part of check-in [3cc2b5709e] When computing dependencies on WHERE-clause terms, be sure to take into account the FILTER clause of aggregate functions. Problem reported by Manuel Rigger. (check-in: [3cc2b5709e] user: drh branch: trunk, size: 60147) | |
2019-11-15
| ||
00:52 | [39b6a53880] part of check-in [2c35d3f67b] Fix table-valued functions so that they will work as the right table in a LEFT JOIN. Ticket [2ae0c599b735d59e] (check-in: [2c35d3f67b] user: drh branch: trunk, size: 60054) | |
2019-10-22
| ||
11:29 | [0705f608f6] part of check-in [c7da1c01f1] Previous check-in to fix [b47e3627ecaadbde] was incomplete. This check-in completes the fix and adds a test cases. (check-in: [c7da1c01f1] user: drh branch: trunk, size: 59959) | |
00:03 | [ab3c687a33] 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: 59888) | |
2019-09-16
| ||
18:19 | [05c283d26a] part of check-in [6fe0367f9a] Do not attempt the LIKE optimization for non-text columns and a pattern prefix of "-". Ticket [0f0428096f17252a] (check-in: [6fe0367f9a] user: drh branch: trunk, size: 61254) | |
2019-09-03
| ||
14:27 | [b3bbae199e] 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: 61077) | |
2019-08-22
| ||
16:38 | [2757afbd5c] 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: 60699) | |
2019-08-08
| ||
16:23 | [5cce1fd118] part of check-in [845d2f17de] More legacy STAT3 code removed. (check-in: [845d2f17de] user: drh branch: omit-stat3, size: 60681) | |
15:24 | [029222a0e2] 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: 60682) | |
2019-06-14
| ||
12:28 | [5e559bdd24] part of check-in [b4a9e09e60] Refactor the LIKE optimization decision logic so that it uses sqlite3AtoF() on both boundary keys to determine if the optimization can be used when the LHS is something that might not have TEXT affinity. Ticket [ce8717f0885af975]. See also [c94369cae9b561b1], [b043a54c3de54b28], [fd76310a5e843e07], and [158290c0abafde67]. (check-in: [b4a9e09e60] user: drh branch: trunk, size: 60700) | |
2019-06-10
| ||
13:46 | [d0683adb12] part of check-in [94b58ab059] Do not attempt the LIKE optimization on a column with numeric affinity if the rhs of the operator begins with whitespace. Fix for ticket [fd76310a5e]. (check-in: [94b58ab059] user: dan branch: trunk, size: 60627) | |
2019-05-08
| ||
23:53 | [4219bdd5d3] part of check-in [51d32173ff] This is part of the previous check-in that didn't get committed for some reason - probably because I failed to press the "Save" button on the text editor. (check-in: [51d32173ff] user: drh branch: trunk, size: 60579) | |
19:55 | [3a8abba627] part of check-in [740201107a] Fix another pattern for which the LIKE optimization does not work for a non-TEXT affinity. Case found by Manuel Rigger. (check-in: [740201107a] user: drh branch: trunk, size: 60565) | |
2019-05-02
| ||
01:41 | [7fedf99099] part of check-in [b043a54c3d] The "LIKE Optimization" (which converts a LIKE into a BETWEEN operator that is able to use an index) does not work and cannot be used if the collating sequence of the column is not TEXT and if the pattern starts with a "+" sign. This is another case of ticket [c94369cae9b561b1f996d005]. The new test case was discovered by Manuel Rigger. (check-in: [b043a54c3d] user: drh branch: trunk, size: 60562) | |
2019-03-12
| ||
09:49 | [9085965292] part of check-in [0524aaaf45] Fix a crash that could occur if the RHS of an IN expression is a correlated sub-query that refers to the outer query from within a window frame definition only. (check-in: [0524aaaf45] user: dan branch: trunk, size: 60539) | |
2018-12-14
| ||
18:11 | [36b47f7261] part of check-in [27221c6990] Fix harmless compiler warnings. (check-in: [27221c6990] user: drh branch: trunk, size: 60314) | |
08:40 | [b87a823bfd] part of check-in [89a25abfcd] Possible fix for [d96eba87]. (check-in: [89a25abfcd] user: dan branch: tkt-d96eba87, size: 60314) | |
2018-11-19
| ||
20:41 | [833b58f9d3] part of check-in [84be9220db] Fix a problem with virtual tables in shared schemas. (check-in: [84be9220db] user: dan branch: reuse-schema1, size: 60146) | |
2018-11-05
| ||
13:48 | [0f496c579f] part of check-in [8d09ce5d73] Disable the IS NOT NULL optimization when the IS NOT NULL operator is part of the ON clause of a LEFT JOIN. Fix for ticket [65eb38f6e46de8c75e188a17ec]. (check-in: [8d09ce5d73] user: drh branch: branch-3.25, size: 60076) | |
07:53 | [491f0894ad] part of check-in [af39661e60] Disable the IS NOT NULL optimization when the IS NOT NULL operator is part of the ON clause of a LEFT JOIN. Fix for ticket [65eb38f6e46de8c75e188a17ec]. (check-in: [af39661e60] user: drh branch: trunk, size: 60142) | |
2018-10-26
| ||
15:36 | [7660a58451] part of check-in [4d46685f28] Prevent an == constraint specified using the table-valued-function argument syntax from being used to optimize any scan not related to the virtual table for which it was specified as an argument. (check-in: [4d46685f28] user: dan branch: trunk, size: 60099) | |
2018-09-20
| ||
19:02 | [1b5a5a7876] part of check-in [ad130bb86e] Combine the Expr.pTab and Expr.pWin fields into a union named "y". Add a new EP_WinFunc property that is only true if Expr.y.pWin is a valid pointer. This reduces the size of the Expr object by 8 bytes, reduces the overall amount of code, and shaves over 1 million cycles off of the speed test. (check-in: [ad130bb86e] user: drh branch: trunk, size: 60047) | |
2018-09-19
| ||
20:14 | [c88f2047c4] part of check-in [24b0f66ac6] Reduce the size of Expr to 64-bytes. This works somewhat, but there are test failures. More importantly, the size reduction from 80- to 64-bytes has not lowered the schema memory usage, but it has made the code a little bigger and a little slower. So the initial evidence is that this Expr refactoring experiment is not working... (check-in: [24b0f66ac6] user: drh branch: expr-simplify, size: 60824) | |
14:54 | [ba56a07764] 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: 60639) | |
2018-09-18
| ||
21:35 | [c08b5afce2] 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: 60181) | |
2018-09-10
| ||
12:40 | [eb462ebe08] part of check-in [f191431d63] Fix the LIKE optimization so that it is disabled when the LHS of the expression does not have TEXT affinity and the RHS is the pattern '/%' or the RHS begins with the escape character. Fix for ticket [c94369cae9b561b1f996d0054b]. (check-in: [f191431d63] user: drh branch: trunk, size: 60033) | |
2018-08-27
| ||
17:13 | [d87df2c00e] part of check-in [666133e32c] Add support for the Geopoly extension to the R-Tree extension. This also involves adding the SQLITE_INDEX_CONSTRAINT_FUNCTION capability to the xFindFunction method of the sqlite3_module object, and to the sqlite3_index_info.aConstraint.op field in the xBestIndex implementation of virtual tables. (check-in: [666133e32c] user: drh branch: trunk, size: 59570) | |
2018-08-23
| ||
14:54 | [fc338d5b42] part of check-in [c446c88411] Merge enhancements from trunk. (check-in: [c446c88411] user: drh branch: rtree-geopoly, size: 59519) | |
2018-08-21
| ||
12:16 | [94f181d1bc] part of check-in [a04a0ea9e3] Fix various harmless warnings generated by static analysis tools. (check-in: [a04a0ea9e3] user: drh branch: trunk, size: 58100) | |
2018-08-09
| ||
21:45 | [5a57a974ae] part of check-in [4195a3f8b5] Fix the isLikeOrGlob() routine in the WHERE clause processing logic so that it avoids signed/unsigned character comparisons, as that can lead to an incorrect answer if the ESCAPE clause is an invalid UTF8 string. Problem found by OSSFuzz. (check-in: [4195a3f8b5] user: drh branch: trunk, size: 58049) | |
2018-07-27
| ||
17:51 | [dc34f0df69] 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: 58040) | |
16:57 | [7d30c744f3] part of check-in [82c67efb72] Constant propagation is now restricted to just the WHERE clause. The mechanism is changed to take affinity and collation into account. This seems to give correct answers. But the search for constant propagation costs 4 million cycles in the speed test. (check-in: [82c67efb72] user: drh branch: propagate-const-opt, size: 58032) | |
2018-07-02
| ||
15:03 | [571618c67a] part of check-in [bb9bfc3a12] Fix a crash caused by a LIKE pattern that consists of a single escape character. Problem found by OSSFuzz. (check-in: [bb9bfc3a12] user: dan branch: trunk, size: 58027) | |
2018-06-11
| ||
01:30 | [19cf35cdd9] part of check-in [9faf41713e] Always initialize the WhereClause.hasOr field that was added by check-in [292724ffc4]. Error detected by OSSFuzz. (check-in: [9faf41713e] user: drh branch: trunk, size: 57790) | |
2018-06-09
| ||
02:49 | [6f022d6cc9] part of check-in [fd09341390] Performance improvement to sqlite3WhereExprUsage(). (check-in: [fd09341390] user: drh branch: trunk, size: 57772) | |
00:09 | [d979cd594c] 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: 57607) | |
2018-05-26
| ||
18:03 | [a6994e3a61] part of check-in [a353b1d7ee] Experimental change that allows overloaded functions to be analyzed by the xBestIndex method and used by the xFilter method of a virtual table. (check-in: [a353b1d7ee] user: drh branch: vtab-func-constraint, size: 59012) | |
2018-04-24
| ||
16:41 | [e90b2e76dc] part of check-in [e252c6540d] All the OR optimization to proceed even if the OR is also converted into an IN operator. (check-in: [e252c6540d] user: drh branch: trunk, size: 57542) | |
2018-02-18
| ||
17:50 | [53532be687] part of check-in [2df6bbf1b8] Fix a memory leak in the processing of nested row values. This problem has existed every since row values support was added (version 3.15.0, 2016-10-14) but was only just now detected by OSSFuzz. (check-in: [2df6bbf1b8] user: drh branch: trunk, size: 57604) | |
2018-01-26
| ||
22:41 | [22dbfd3bf5] part of check-in [7daa687340] Fix the query planner so that it takes into account dependencies in the arguments to table-valued functions in subexpressions in the WHERE clause. Fix for ticket [80177f0c226ff54f6dd]. (check-in: [7daa687340] user: drh branch: trunk, size: 57603) | |
2017-11-03
| ||
06:45 | [427ea8e96e] part of check-in [d088c5a3f1] Fix harmless compiler warnings. (check-in: [d088c5a3f1] user: mistachkin branch: trunk, size: 57475) | |
2017-09-28
| ||
01:58 | [afcac9cccf] 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: 57467) | |
2017-09-11
| ||
19:47 | [4953ca4e76] 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: 57651) | |
2017-09-09
| ||
19:41 | [ffc3c90f68] 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: 56680) | |
2017-08-11
| ||
03:47 | [fe1fe600d7] part of check-in [9466d952e1] Simplification to the like optimization logic. Remove unnecessary branches. (check-in: [9466d952e1] user: drh branch: trunk, size: 55246) | |
2017-08-08
| ||
21:30 | [1e55d79174] part of check-in [f4a4b14973] Fix a faulty signed/unsigned character comparison in the LIKE optimization logic. (check-in: [f4a4b14973] user: drh branch: trunk, size: 55315) | |
2017-07-27
| ||
20:24 | [35d8b33afe] part of check-in [f5d330f495] Enhance the like optimization so that it works with an ESCAPE clause. (check-in: [f5d330f495] user: drh branch: trunk, size: 55313) | |
2017-07-10
| ||
15:26 | [bf983d2d33] part of check-in [38edc6770e] Small performance optimization in sqlite3WhereExprUsage(). (check-in: [38edc6770e] user: drh branch: defer-where-subqueries, size: 54287) | |
15:17 | [16bb63556d] part of check-in [a4fc98113a] Fix another problem on this branch. (check-in: [a4fc98113a] user: dan branch: defer-where-subqueries, size: 54247) | |
2017-06-28
| ||
18:07 | [fa51927cc6] part of check-in [8f63c58632] Merge the in the latest enhancements from trunk. (check-in: [8f63c58632] user: drh branch: partial-index-variables, size: 54087) | |
2017-06-27
| ||
23:36 | [61035ab300] part of check-in [b82efd2a24] Add SQLITE_DBCONFIG_ENABLE_QPSG that forces the query planner stability guarantee. This is the fix for ticket [b9f010107724c] (check-in: [b82efd2a24] user: drh branch: trunk, size: 54084) | |
16:39 | [837c4a74cd] part of check-in [87b3816633] Fix a virtual table problem that can occur when the vtab is on the RHS of a LEFT JOIN and there is a MATCH constraint in the ON clause, or when the vtab is in a sub-query that is the RHS of a LEFT JOIN and there is a MATCH constraint in the WHERE clause of the sub-query. (check-in: [87b3816633] user: dan branch: trunk, size: 54046) | |
2017-06-26
| ||
14:46 | [1aac918f82] part of check-in [ebcfa73e1c] Make sure sqlite3VdbeSetVarmask() is never invoked when QPSG is enabled. (check-in: [ebcfa73e1c] user: drh branch: enable-QPSG, size: 53967) | |
2017-06-24
| ||
18:10 | [5567f180ad] 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: 53932) | |
2017-05-25
| ||
00:08 | [a2fe3811d4] part of check-in [77fc23013c] The TK_IF_NULL_ROW expression node must be treated as a variable that references the table Expr.iTable. Proposed fix for ticket [7fde638e94287d2c]. (check-in: [77fc23013c] user: drh branch: trunk, size: 53929) | |
2017-04-11
| ||
18:06 | [e913aaa7b7] part of check-in [76cd611d41] Smaller and faster implementation of exprMightBeIndexed(). (check-in: [76cd611d41] user: drh branch: trunk, size: 53864) | |
2017-02-11
| ||
14:59 | [130cdd1a43] 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: 53524) | |
2017-02-10
| ||
21:37 | [980109826b] part of check-in [158290c0ab] Enhance the LIKE optimization so that it works for arbitrary expressions on the LHS as long as the pattern on the RHS does not begin with a digit or a minus sign. (check-in: [158290c0ab] user: drh branch: trunk, size: 53520) | |
2017-01-10
| ||
17:33 | [35ad025389] part of check-in [c92ecff2ec] Throw an error if the ON clause of a LEFT JOIN references tables to the right of the ON clause. Fix for ticket [25e335f802dd]. (check-in: [c92ecff2ec] user: drh branch: trunk, size: 53184) | |
15:08 | [24e452bcc3] part of check-in [71c03b59b6] Fix a potential assertion fault discovered by OSS-Fuzz. (check-in: [71c03b59b6] user: drh branch: trunk, size: 53060) | |
2016-12-06
| ||
22:47 | [87ecdf24be] part of check-in [2a81763e68] Performance improvement and size reduction in the Expr node allocator function sqlite3PExpr(). (check-in: [2a81763e68] user: drh branch: trunk, size: 53029) | |
2016-11-20
| ||
12:00 | [c19a84ac53] part of check-in [0a98c8d76a] Prevent a possible use-after-free bug in the query optimizer. (check-in: [0a98c8d76a] user: drh branch: trunk, size: 53053) | |
2016-10-27
| ||
01:02 | [a83d70154f] part of check-in [619f5cc717] Make sure left-join markings are transferred to the virtual scalar subexpressions when decomposing a vector comparison in the ON clause of a LEFT JOIN. Fix for ticket [fef4bb4bd9185ec8f]. (check-in: [619f5cc717] user: drh branch: trunk, size: 52986) | |
2016-10-03
| ||
14:44 | [379d0017fb] part of check-in [5bb7cde073] Avoid unnecessary memset() calls in the query optimizer. (check-in: [5bb7cde073] user: drh branch: trunk, size: 52945) | |
2016-09-23
| ||
20:59 | [3d8813ef32] part of check-in [afac0709ce] Use sqlite3ExprAlloc() instead of sqlite3PExpr() for leaf nodes in the expression tree, where appropriate. This is both smaller and faster. (check-in: [afac0709ce] user: drh branch: trunk, size: 52932) | |
2016-09-06
| ||
18:51 | [e3db778ed2] part of check-in [8329ac6f8d] Fix corer cases of vector IN operators where the RHS is a compound SELECT that includes an ORDER BY clause. (check-in: [8329ac6f8d] user: drh branch: rowvalue, size: 52930) | |
2016-09-05
| ||
12:02 | [c5ec87e234] part of check-in [56562a0346] Catch vector size mismatch problems during name resolution to avoid later problems. (check-in: [56562a0346] user: drh branch: early-vector-size-check, size: 52823) | |
09:44 | [571597ac8d] part of check-in [42670935ab] Fix a crash that could occur under certain circumstances if the vectors on either side of a comparison operator were of a different size. (check-in: [42670935ab] user: dan branch: rowvalue, size: 52973) | |
2016-08-26
| ||
03:42 | [7f9ada866d] part of check-in [397617009e] Comment improvements. Put ALWAYS and NEVER macros on three unreachable branches. (check-in: [397617009e] user: drh branch: rowvalue, size: 52881) | |
2016-08-20
| ||
12:00 | [aa54bf11ad] part of check-in [a3ffd283bc] Improvements to the vector comparison splitter in exprAnalyze(). (check-in: [a3ffd283bc] user: drh branch: rowvalue, size: 52791) | |
00:51 | [706b539d9f] part of check-in [f320d47d6b] Add support for vector assignments in the SET clause of an UPDATE statement. (check-in: [f320d47d6b] user: drh branch: rowvalue, size: 52696) | |
00:07 | [021469f119] part of check-in [d8feea7dcd] Change the way TK_SELECT_COLUMN is handled so that the subquery is only generated once even if part of the vector comparison is used for indexing and the other part is now. This change also is a pathway to vector assignment in UPDATE statements. (check-in: [d8feea7dcd] user: drh branch: rowvalue, size: 52702) | |
2016-08-19
| ||
19:58 | [bb22074cc2] part of check-in [d4a5af69cc] Replace the magic number (-2) with its symbol XN_EXPR in the exprMightBeIndexed() routine. No logic changes. (check-in: [d4a5af69cc] user: drh branch: rowvalue, size: 53485) | |
2016-08-11
| ||
12:31 | [8d9903d16a] part of check-in [959677b97b] Merge recent changes from trunk. (check-in: [959677b97b] user: drh branch: rowvalue, size: 53464) | |
2016-08-10
| ||
20:02 | [98ce9f3b8d] part of check-in [95493058fc] Optimization to sqlite3WhereExprUsage(). (check-in: [95493058fc] user: drh branch: trunk, size: 50116) | |
19:43 | [600e6c619d] part of check-in [7319d676aa] List of MATCH operator names in isMatchOfColumn() should be constant. (check-in: [7319d676aa] user: drh branch: trunk, size: 50057) | |
2016-08-02
| ||
16:18 | [4a8cefc7c1] part of check-in [6937677cc2] Add missing comments and make some code on this branch clearer. (check-in: [6937677cc2] user: dan branch: rowvalue, size: 53392) | |
2016-08-01
| ||
16:37 | [3f5d76b585] part of check-in [1f4dba87da] Fix a problem with IN(...) constraints where the LHS is a sub-select that is an aggregate query. (check-in: [1f4dba87da] user: dan branch: rowvalue, size: 52728) | |
2016-07-30
| ||
16:39 | [82196ee82c] part of check-in [e9d9c6d46b] Remove the EP_Vector expression flag. (check-in: [e9d9c6d46b] user: dan branch: rowvalue, size: 52148) | |
2016-07-29
| ||
20:58 | [c63e0e48fe] part of check-in [42607366bf] Fix some issues with vector range constraints and the column cache. Also vector range constraints and rowid columns. (check-in: [42607366bf] user: dan branch: rowvalue, size: 52186) | |
18:12 | [a58e878dad] part of check-in [4dfebff292] Change the way "(a, b) = (SELECT *)" expressions are handled in where.c if there is an index on one of the columns only. (check-in: [4dfebff292] user: dan branch: rowvalue, size: 52050) | |
2016-07-28
| ||
19:47 | [bc85d04c67] part of check-in [cc3f6542be] Fix further issues with multi-column IN(...) operators. Also some error handling cases surrounding row values. (check-in: [cc3f6542be] user: dan branch: rowvalue, size: 52002) | |
2016-07-26
| ||
18:06 | [b896f8ff6a] 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: 51950) | |
2016-07-09
| ||
20:23 | [d88ee6ce35] 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: 51431) | |
2016-06-28
| ||
22:27 | [d7dcbf14ce] part of check-in [a33d235609] Proposed fix for a problem in the query planner. (check-in: [a33d235609] user: drh branch: planner-fix, size: 50044) | |
2016-05-28
| ||
18:53 | [c32d47085d] part of check-in [242507b4ff] Experimental change to allow virtual tables to take advantage of LIKE, REGEXP and GLOB terms that are part of OR expressions within WHERE clauses. (check-in: [242507b4ff] user: dan branch: vtab-experimental, size: 50176) | |
2016-04-12
| ||
00:00 | [eacc0e60d0] part of check-in [fdf752394b] Performance improvements in sqlite3WhereExprUsage(). (check-in: [fdf752394b] user: drh branch: trunk, size: 50097) | |
2016-04-08
| ||
21:35 | [2a0b17d835] part of check-in [00ac73a01c] Attempt to treat the arguments to a table-valued function as if they occur in the ON clause of a LEFT JOIN rather than in the WHERE clause. But this causes undesirable behavior with generate_series, as demonstrated by test cases. This is an incremental check-in pending further work. (check-in: [00ac73a01c] user: drh branch: tabfunc-in-left-join, size: 50169) | |
2016-02-19
| ||
14:10 | [fb87944b12] part of check-in [1620530217] Make sure WhereClause objects are fully initialized before use when planning OR queries. (check-in: [1620530217] user: drh branch: trunk, size: 50065) | |
2016-02-05
| ||
13:38 | [de117970b2] 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: 49951) | |
01:55 | [85ee2de9ff] part of check-in [c3ef03478a] Improvements to the way that OOM errors are processed. (check-in: [c3ef03478a] user: drh branch: oom-handling, size: 49947) | |
2016-01-19
| ||
17:54 | [197a448b52] part of check-in [86944f193f] Fix two harmless compiler warnings about comparisons of dangling pointers. (check-in: [86944f193f] user: drh branch: trunk, size: 49985) | |
2015-11-24
| ||
18:16 | [eebba8340c] part of check-in [069e51b19c] Fix a problem in whereexpr.c causing a crash while processing a user-function taht accepts zero arguments. (check-in: [069e51b19c] user: dan branch: vtab-like-operator, size: 49917) | |
17:39 | [17d62d8bb7] part of check-in [c5e9fd0dc9] Add further tests and related fixes for GLOB/REGEXP/LIKE support in virtual tables. (check-in: [c5e9fd0dc9] user: dan branch: vtab-like-operator, size: 49905) | |
2015-11-23
| ||
21:09 | [12c6fa7576] 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: 49706) | |
2015-11-21
| ||
17:27 | [bd4877cd4d] part of check-in [198d191b2f] Fix over-length source code lines. No logic changes. (check-in: [198d191b2f] user: drh branch: trunk, size: 49145) | |
13:24 | [fa36d793a9] part of check-in [ff5716b89f] Do not allow table-valued function syntax on ordinary tables and views as those objects are not table-valued functions. Fix for ticket [73eba7ba5c7c0fc]. Problem found by libFuzzer. (check-in: [ff5716b89f] user: drh branch: trunk, size: 49144) | |
2015-10-08
| ||
02:44 | [e63244ca06] part of check-in [77b707b774] Remove two unused lines of code - discovered by scan-build. (check-in: [77b707b774] user: drh branch: trunk, size: 49141) | |
2015-08-31
| ||
15:58 | [2473e4350e] 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: 49192) | |
2015-08-27
| ||
18:24 | [990ed42b59] 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: 47602) | |
2015-08-21
| ||
17:14 | [1a308d1ee5] part of check-in [552bc9cb88] Fix a corner-case bug in table-valued functions. Update the generate_series() virtual table to increase the performance estimate penalty for being underspecified. (check-in: [552bc9cb88] user: drh branch: trunk, size: 47356) | |
2015-08-20
| ||
23:21 | [f9dbd15912] part of check-in [774e6a14b1] Fix corner-case memory management issues in table-valued functions. Change virtual table handling so that if xDestroy is missing the table is eponymous only even if xCreate is present. (check-in: [774e6a14b1] user: drh branch: trunk, size: 47330) | |
2015-08-19
| ||
17:11 | [6332ade8f7] 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: 47328) | |
2015-06-08
| ||
14:23 | Added: [9ce1c9cfed] 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: 46061) | |