SQLite

All files named ”src/expr.c”
Login

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

History for src/expr.c

2025-06-30
12:14
[d726acf675] part of check-in [d86eb16283] For all binary operators, try to avoid computing subquery operands if the other operand is NULL. (check-in: [d86eb16283] user: drh branch: optimize-null-values, size: 262213)
11:04
[bfcf223fec] part of check-in [f6e6fd02f4] Slightly smaller and faster version of the previous check-in. (check-in: [f6e6fd02f4] user: drh branch: optimize-null-values, size: 259913)
10:30
[f007ab177a] part of check-in [3c6c71bcea] Factor out the code that tries to avoid evaluating subquery operands if the other operand is NULL into a subroutine, so that it can be more easily reused by other parts of the code generator. (check-in: [3c6c71bcea] user: drh branch: optimize-null-values, size: 259860)
2025-06-28
17:59
[b46621069e] part of check-in [f147bc0477] Improve the bytecode generated for comparisons so that if one operand is a subquery and the other operand evaluates to NULL, the subquery operand is not even computed. This fixes 5 of the 11 slow queries described in forum post 52651713ac. (check-in: [f147bc0477] user: drh branch: optimize-null-values, size: 259055)
2025-06-27
19:56
[41f193b96b] part of check-in [4ae45291e6] Raise an error right away if the number of aggregate terms in a query exceeds the maximum number of columns. (check-in: [4ae45291e6] user: drh branch: branch-3.50, size: 257107)
19:02
[dbb55f616d] part of check-in [5508b56fd2] Raise an error right away if the number of aggregate terms in a query exceeds the maximum number of columns. (check-in: [5508b56fd2] user: drh branch: trunk, size: 257319)
2025-06-18
19:04
[5f7fe80f33] part of check-in [b734c74e55] Extend the pedantic enforcement of type in STRICT tables to cover VIRTUAL columns. (check-in: [b734c74e55] user: drh branch: trunk, size: 256778)
2025-06-09
16:32
[083f478563] part of check-in [e93048425b] Initial implementation of sqlite3BtreeEstimatedPosition() with the est_rank() SQL function used for testing. (check-in: [e93048425b] user: drh branch: flex-search, size: 257208)
2025-06-02
18:34
[f16fa5cbd8] part of check-in [f184d1d236] Improve the accuracy of affinity and collating sequence analysis for NATURAL JOINs to the left of RIGHT JOINs where source tables are views or subqueries. Initial problem report in forum post 829306db47. (check-in: [f184d1d236] user: drh branch: trunk, size: 256566)
2025-05-06
18:04
[3fc2f37dbc] part of check-in [9d1f01aac9] Fix a bug in the NOT NULL/IS NULL optimization that can cause invalid data to be used for a column if that column has a CHECK constraint that includes the NOT NULL or IS NULL operator. (check-in: [9d1f01aac9] user: drh branch: branch-3.49, size: 256589)
17:53
[6f184da1f3] part of check-in [2adaee9aa9] Fix a bug in the NOT NULL/IS NULL optimization of check-in [cb94350185f555c3] that can cause invalid data to be used for a column if that column has a CHECK constraint that includes the NOT NULL or IS NULL operator. Problem discovered by the Chromium fuzzer. Never seen in the wild, as far as anybody knows. (check-in: [2adaee9aa9] user: drh branch: trunk, size: 256438)
2025-04-30
12:48
[565d2b6403] part of check-in [cdef486e21] Fix an issue in Bloom filters on RHS subsqueries to IN operators. See forum post 792a09cb3d for a description of the problem. Also improve comments related to [baa83b460c677c21] which was origin of the problem. (check-in: [cdef486e21] user: drh branch: trunk, size: 256380)
2025-03-14
18:10
[61c3baab38] 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: 256210)
2025-02-27
21:17
[f27e2692e6] part of check-in [f50c21484d] Approximately 100 typo corrections spanning the whole tree, submitted via forum post 0db9827f0464bc33 and individually audited and verified. Affects only code comments, innocuous test strings, error message text in tool (not library) code, and configure-level help text. (check-in: [f50c21484d] user: stephan branch: trunk, size: 256389)
2025-02-21
17:03
[6769d3f0ca] part of check-in [d7729dbbf2] Detect when a UNIQUE or PRIMARY KEY on a WITHOUT ROWID table would need to use more than SQLITE_LIMIT_COLUMN columns and raise an error. Also include some unrelated compiler warning fixes. (check-in: [d7729dbbf2] user: drh branch: trunk, size: 256388)
2025-02-17
17:33
[6e0635f3e3] part of check-in [215650a5a1] Code changes that make it easier to prove that no 32-bit integer overflows happen during memory allocation. No problems fixed; this change is just to make future maintenance easier. (check-in: [215650a5a1] user: drh branch: trunk, size: 256383)
2025-02-16
10:50
[78b8d7cec1] part of check-in [9349398e15] Cleanup of the changes for this branch. (check-in: [9349398e15] user: drh branch: default-in-values-2, size: 256693)
2025-02-15
21:53
[7a78794a64] part of check-in [fd1b868372] Fix the error message text for misuse of the DEFAULT keyword. (check-in: [fd1b868372] user: drh branch: default-in-values-2, size: 256550)
20:31
[22cb9d1d3f] part of check-in [a3d831378d] An alternative implementation of the default-in-values feature that is cleaner (it avoids dodgy poking about in the parser LALR stack looking for errors) and has less performance impact in the common case where DEFAULT is not used. (check-in: [a3d831378d] user: drh branch: default-in-values-2, size: 256496)
2025-02-13
11:10
[d5d8752815] part of check-in [2b73eb3fa7] This version still does not work. This is an incremental check-in to save my place so that I can work on other things. (check-in: [2b73eb3fa7] user: drh branch: default-in-values, size: 256477)
2025-02-12
20:54
[c1af6df70e] 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: 256494)
2025-02-10
19:48
[ca94327039] part of check-in [57b2b812c8] Remove a pointless line of code. (check-in: [57b2b812c8] user: drh branch: trunk, size: 256378)
2025-02-08
14:15
[15fabfb672] part of check-in [351dbbc2bf] Use the sqlite3ColumnIndex() routine to look up a column in a table, rather than using a custom loop. Performance improvement, size reduction, and complexity decrease. (check-in: [351dbbc2bf] user: drh branch: trunk, size: 256402)
2025-01-30
21:16
[e06331a671] part of check-in [a8714e8c44] The reuse-subroutine optimization might have generated byte-code that loops forever. This check-in fixes the problem. (check-in: [a8714e8c44] user: drh branch: branch-3.48, size: 256616)
21:12
[8705be31ee] part of check-in [0cc4ed8c6e] The reuse-subroutine optimization [c9a3498113074bbc] might have generated byte-code that loops forever. This check-in fixes the problem. (check-in: [0cc4ed8c6e] user: drh branch: trunk, size: 256531)
2025-01-28
12:50
[ce83e73614] part of check-in [a4625bb995] Simplify the IdList object to remove unnecessary fields. Performance increases by about 0.8%. (check-in: [a4625bb995] user: drh branch: trunk, size: 256392)
2025-01-11
14:43
[30a407765d] part of check-in [c847973947] Better job at suppressing harmless scan-build warnings. This time testing and working. (check-in: [c847973947] user: drh branch: trunk, size: 256477)
13:59
[bc60081368] part of check-in [b93af6feb7] Fix harmless scan-build warnings. Actually, this fixed nothing. The scan-build warnings persist. I should have tested before I checked in. Look for a follow-up shortly. (check-in: [b93af6feb7] user: drh branch: trunk, size: 256466)
2024-12-12
20:39
[f126029aed] part of check-in [3c25c69c93] Increase the maximum number of arguments on an SQL function to 1000 with the capability to increase it further up to 32767 using a compile-time option. (check-in: [3c25c69c93] user: drh branch: cf8f1552-commit-instr, size: 252424)
15:11
[3329173aac] part of check-in [e8d7d68ba0] Increase the maximum number of arguments on an SQL function to 1000 with the capability to increase it further up to 32767 using a compile-time option. (check-in: [e8d7d68ba0] user: drh branch: trunk, size: 256435)
2024-12-02
16:24
[ae41eb87e7] part of check-in [346a845bf1] Fix a comment typo on the sqlite3ExprIsSingleTableConstraint() routine. (check-in: [346a845bf1] user: drh branch: trunk, size: 256434)
2024-11-30
12:00
[cd85c48b40] part of check-in [2220ccf4d6] A NEVER() that was added by [eb5ac9e5b9a4f9c8] is violated by the ifnull() in-line function. This check-in fixes that problem. (check-in: [2220ccf4d6] user: drh branch: trunk, size: 256438)
2024-11-29
11:49
[954fe794e3] part of check-in [3ec2df5a6c] Fix a NEVER() in the iif() logic that can be true if compiled with SQLITE_ENABLE_UNKNOWN_SQL_FUNCTIONS. Problem introduced by [eb5ac9e5b9a4f9c8]. (check-in: [3ec2df5a6c] user: drh branch: trunk, size: 256445)
2024-11-28
02:09
[b838969c58] part of check-in [f79cb748c9] Simplification to the fix in the prior check-in. (check-in: [f79cb748c9] user: drh branch: expr-implies-expr, size: 256362)
01:47
[4c63e54936] part of check-in [df95d5209a] The sqlite3ExprCompare() routine should always compare the same variables as equal to one another, regardless of whether or not QPSG is set. (check-in: [df95d5209a] user: drh branch: expr-implies-expr, size: 256499)
00:58
[9084ade243] part of check-in [4f358ad20d] Add two NEVER() conditions. (check-in: [4f358ad20d] user: drh branch: expr-implies-expr, size: 256279)
00:34
[bc1e0266df] 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: 256265)
2024-10-08
00:15
[a9d9f5fdfb] part of check-in [f150c3c5b8] Add an ALWAYS() on a branch in the new indexed-subtype logic. (check-in: [f150c3c5b8] user: drh branch: indexed-subtype-expr, size: 254632)
2024-10-07
21:04
[6800ecb6c4] part of check-in [50be8f5091] Add a NEVER() to an unreachable branch in the new indexed-subtype logic. Mark the pi() function as deterministic. (check-in: [50be8f5091] user: drh branch: indexed-subtype-expr, size: 254624)
2024-10-05
18:10
[0aafe1b0d3] part of check-in [aa440e78e9] Allow expressions with subtypes to be read from indexes unless they are being used as direct or indirect parameters to SQLITE_SUBTYPE functions. (check-in: [aa440e78e9] user: dan branch: indexed-subtype-expr, size: 254617)
17:37
[9441dc9f9f] 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: 254764)
2024-08-19
22:48
[6d5f2c38fe] 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: 252423)
2024-08-17
23:23
[835b637da8] 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: 252110)
19:46
[737704d4ce] part of check-in [a4c59ac3c6] Reduce the size of the SrcItem object by combining fields into a union. (check-in: [a4c59ac3c6] user: drh branch: srcitem-opt, size: 252082)
2024-08-09
02:10
[4af62b98b5] 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: 252294)
01:38
[79ac19d455] 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: 252247)
2024-07-29
17:59
[b6cdef9cad] part of check-in [d029e94399] The idea here was to simply an expression like "(a=5) IS TRUE" into "(a=5)=TRUE". But that does not work, since the original form is FALSE if y is NULL whereas the second form is NULL. Patch save for historical reference only. (check-in: [d029e94399] user: drh branch: broken-istrue-opt, size: 252721)
2024-07-20
16:11
[fe958028b3] part of check-in [d7be326a80] Fix an oversized allocation in sqlite3ExprCodeIN(). (check-in: [d7be326a80] user: dan branch: trunk, size: 252013)
2024-07-08
17:39
[1119a2cbb1] part of check-in [4fabfacfcf] Fix a use-after-free that could occur following an OOM introduced by [d8cedbe0]. (check-in: [4fabfacfcf] user: dan branch: trunk, size: 252044)
2024-07-05
13:55
[e8e5c5b2e2] part of check-in [d8cedbe055] Use a mini Bloom filter to help reduce the number of pointless searches for prior SubrtnSig objects when generating code for IN operators with subqueries as their right operand. (check-in: [d8cedbe055] user: drh branch: trunk, size: 252044)
10:08
[2b075932ea] part of check-in [2a07caad4a] Improved reuse of subqueries associated with IN operators, especially when the IN operator is duplicated due to predicate push-down. (check-in: [2a07caad4a] user: drh branch: bedrock-3.46, size: 250940)
10:03
[229c40aa24] part of check-in [557a14a24a] When constructing an ephermeral table to use as the right-hand side of an IN operator, also construct a Bloom filter to speed membership testing. (check-in: [557a14a24a] user: drh branch: bedrock-3.46, size: 248614)
01:05
[4d76a31f37] part of check-in [99fd34b58a] Small performance optimizations. (check-in: [99fd34b58a] user: drh branch: reuse-subqueries, size: 251997)
2024-07-04
18:26
[dd797fc96a] part of check-in [a81299be2c] Disable the reuse of IN-clause subqueries if the subquery is an explicit "SELECT ALL". The ALL keyword is almost never used in actual practice (most developers don't even know it can be used) so this should not interfere with the optimization, but it does give us a convenient way to turn it off for testing purposes. (check-in: [a81299be2c] user: drh branch: reuse-subqueries, size: 251932)
16:57
[06c1d1a0f8] part of check-in [2accf32b6e] Be more aggressive about reusing subqueries that appear on the RHS of IN operators that have been replicated due to the predicate push-down optimization. (check-in: [2accf32b6e] user: drh branch: reuse-subqueries, size: 251801)
2024-07-03
20:30
[ca38420de1] part of check-in [0bb306eb70] When constructing an ephermeral table to use as the right-hand side of an IN operator, also construct a Bloom filter to speed membership testing. (check-in: [0bb306eb70] user: dan branch: bedrock-3.45-in-bloom, size: 245010)
17:51
[d6f614d0c9] part of check-in [1933496539] Use a Bloom filter to improve performance of IN operators when the RHS of the IN operator is a subquery. (check-in: [1933496539] user: drh branch: in-bloom, size: 249671)
2024-06-29
12:22
[2b72d352a2] part of check-in [da0b794852] Add a NEVER() around a branch in sqlite3ExprAffinity() that is designed to prevent an infinite loop, but which can now never be reached due to recent changes. (check-in: [da0b794852] user: drh branch: trunk, size: 248683)
2024-06-28
18:07
[02652ae4e3] part of check-in [1c42d7176b] Additional steps to make sure calls to sqlite3ExprToRegister() are sane. (check-in: [1c42d7176b] user: drh branch: trunk, size: 248654)
2024-06-06
16:06
[4bbaf2ca6d] 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: 195554)
15:03
[af9c9242be] 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: 248574)
2024-05-24
18:31
[585109ab97] part of check-in [4555d66547] Ensure that queries like "SELECT indeterministic(a) FROM tbl GROUP BY 1" invoke the indeterministic function only once for each row of tbl. (check-in: [4555d66547] user: dan branch: group-by-consistency, size: 247653)
2024-05-17
14:26
[50e71ed518] part of check-in [6dc6472175] Merge branches "fix-onerow-opt", "faster-openread", "fts5-delay-tokenizer" and "enhanced-raise", each containing minor enhancements prepared for 3.46, into this branch. (check-in: [6dc6472175] user: dan branch: pending-3.46, size: 247639)
2024-05-10
18:10
[f7bad20d2f] part of check-in [c623d9a51e] The sqlite3FaultSim(300) error from [1e8863909ac369e5] must be treated as an OOM, since it simulates an OOM. Also fix deferred deletion of Expr objects from [a53bdd311c4154fd] so that it does not corrupt the AST if an OOM occurs. (check-in: [c623d9a51e] user: drh branch: cleanup-testing, size: 247626)
2024-05-08
17:42
[dff4775b9a] part of check-in [003e1c8c27] Allow arbitrary expressions as the second argument to RAISE(). (check-in: [003e1c8c27] user: drh branch: enhanced-raise, size: 247650)
2024-05-06
19:04
[3428b046cb] part of check-in [70abc144ca] Avoid unnecessary recursion in sqlite3ExprDeleteNN(). This complicates the code, but it is needed to prevent nuisance "stack overflow" reports from OSSFuzz while it is running the latest ASAN. (check-in: [70abc144ca] user: drh branch: trunk, size: 247637)
2024-04-24
11:40
[005bf7a088] part of check-in [1c0b034545] Avoid slowdown when exprNodeIsConstant() is called on deeply nested SQL functions. (check-in: [1c0b034545] user: dan branch: trunk, size: 247314)
2024-04-07
10:27
[98a1cabc44] part of check-in [3d5fb1ec7a] Add comments to note the name abiguity between the MySQL push-down optimization and the WHERE-clause push-down optimization. (check-in: [3d5fb1ec7a] user: drh branch: trunk, size: 246142)
2024-04-06
23:09
[36071487e3] part of check-in [681dfe2dd6] Add comments to note the name abiguity between the MySQL push-down optimization and the WHERE-clause push-down optimization. (check-in: [681dfe2dd6] user: drh branch: wrong-branch, size: 247317)
18:30
[a475049e45] 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: 247293)
12:19
[f2f4768a25] part of check-in [87c45fb0d5] Generalize pushdown to allow any uncorrelated subquery to be pushed down. (check-in: [87c45fb0d5] user: drh branch: pushdown-subquery, size: 246869)
11:59
[099b6d3621] part of check-in [4120bc740a] Generalize the pushdown of IN right-hand sides to cover more SELECTs. (check-in: [4120bc740a] user: drh branch: pushdown-IN-table, size: 247746)
2024-04-05
20:01
[48e6732170] part of check-in [2cbd7838fd] Experimental enhancement in which expressions of the form "expr IN table" can be pushed down into subexpressions. (check-in: [2cbd7838fd] user: drh branch: pushdown-IN-table, size: 247658)
2024-03-25
20:35
[cd46ce2ebe] part of check-in [6a06dc7384] The RAISE() operator is not a constant expression and cannot participate in the VALUE-as-coroutine optimization. dbsqlfuzz 74cf7c9904360322a6c917e4934b127543d1cd51 (check-in: [6a06dc7384] user: drh branch: trunk, size: 246118)
2024-03-24
19:08
[1fece60622] part of check-in [7a3d0027f8] Fix the SQLITE_ALLOW_ROWID_IN_VIEW bug-compatibility option so that it works again. Add the SQLITE_CONFIG_ROWID_IN_VIEW sqlite3_config() value to optionally disable the bug-compatibility mode at start-time. Enable testing of SQLITE_ALLOW_ROWID_IN_VIEW. (check-in: [7a3d0027f8] user: drh branch: branch-3.45, size: 244126)
16:42
[832f32dd73] part of check-in [b5d2dce18f] Do not automatically assume that ROWID is NOT NULL when compiled with SQLITE_ALLOW_ROWID_IN_VIEW. dbsqlfuzz 31b38eeb63a4e1562de665078f52b7b47a7543cf (check-in: [b5d2dce18f] user: drh branch: branch-3.44, size: 243762)
16:33
[ff1bb1bdbc] part of check-in [80c4223098] Do not automatically assume that ROWID is NOT NULL when compiled with SQLITE_ALLOW_ROWID_IN_VIEW. dbsqlfuzz 31b38eeb63a4e1562de665078f52b7b47a7543cf (check-in: [80c4223098] user: drh branch: trunk, size: 246060)
2024-03-21
22:12
[2b8496acec] part of check-in [90537ce044] Fix a assert() that is incorrect, though harmless. Also add a test case. (check-in: [90537ce044] user: drh branch: branch-3.45, size: 244035)
22:08
[b5f1e44be4] part of check-in [57b0c98460] Fix a assert() that is incorrect, though harmless. Also add a test case. (check-in: [57b0c98460] user: drh branch: branch-3.44, size: 243671)
2024-03-20
11:30
[84acf0baad] part of check-in [dd58d1178f] Ignore COLLATE operators when determining whether the result of a subexpression should be shallow-copied or deep-copied. (check-in: [dd58d1178f] user: drh branch: branch-3.44, size: 243658)
2024-03-19
19:42
[94f48513fb] part of check-in [262f8f9d80] Make sure the new u1.nRow value is copied when making a copy of a SrcItem object. This fixes a problem in [ac6f095e13e43d66] from yesterady. (check-in: [262f8f9d80] user: drh branch: trunk, size: 245969)
2024-03-18
13:10
[d7cfe9b9fe] part of check-in [260bd764c3] Fix the patch at [10ee6fcba08ab128] so that it works on reduced-size Expr nodes. (check-in: [260bd764c3] user: drh branch: exp-values-clause2, size: 245913)
10:54
[27fdcdc65b] part of check-in [10ee6fcba0] Fix a problem caused by a non-aggregate function with an OVER clause in a multi-row VALUES clause. (check-in: [10ee6fcba0] user: dan branch: exp-values-clause2, size: 245892)
2024-03-16
21:04
[eef4b58b1c] part of check-in [9ba3cff9d4] Fix a assert() that is incorrect, though harmless. (check-in: [9ba3cff9d4] user: drh branch: enhanced-expr-is-const, size: 245872)
20:15
[8968e7bef8] part of check-in [d7eadcf7dd] Further expand the scope of usage for the enhacement to expr-is-constant. (check-in: [d7eadcf7dd] user: drh branch: enhanced-expr-is-const, size: 245859)
19:48
[a6cc77ccca] part of check-in [f71b28f671] Assert that the eCode is always non-zero upon entry into exprNodeIsConstant(). (check-in: [f71b28f671] user: drh branch: enhanced-expr-is-const, size: 245899)
14:27
[b3914ec5ac] part of check-in [d85dd4de2d] Fix exprNodeIsConstantFunction() so that it returns WRC_Continue, not WRC_Abort, if the function really is constant. (check-in: [d85dd4de2d] user: dan branch: enhanced-expr-is-const, size: 245913)
13:18
[023e842020] 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: 245888)
2024-03-11
17:27
[7d0280860f] 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: 243801)
2024-03-05
17:48
[05516e8b7d] part of check-in [4784a92e56] Fix a problem with large values clauses and named variables. (check-in: [4784a92e56] user: dan branch: exp-values-clause, size: 243754)
2024-02-28
01:12
[2803f5e7e3] part of check-in [2dfc427f67] Always convert 32-bit integer literals into EP_IntValue notation, even if they contain "_" separators. (check-in: [2dfc427f67] user: drh branch: trunk, size: 244088)
2023-12-24
12:02
[3381ee4c9a] part of check-in [b9daf37e57] Remove an ALWAYS() added in [c50e6c2ace49d092] because it is sometimes false. dbsqlfuzz c393a4f783d42efd9552772110aff7e5d937f15e. (check-in: [b9daf37e57] user: drh branch: trunk, size: 244022)
2023-12-19
15:51
[125e696629] part of check-in [257f96a2d2] Remove redundant conditional from sqlite3ExprCanBeNull(). (check-in: [257f96a2d2] user: drh branch: trunk, size: 244030)
14:53
[49e629c339] part of check-in [c50e6c2ace] Add ALWAYS() and NEVER() on branches made unreachable by recent changes. (check-in: [c50e6c2ace] user: drh branch: trunk, size: 244069)
13:45
[74c96889f7] part of check-in [34ae36a45e] Ignore COLLATE operators when determining whether the result of a subexpression should be shallow-copied or deep-copied. (check-in: [34ae36a45e] user: drh branch: trunk, size: 244060)
11:57
[c21c6d1ba6] part of check-in [be19b84c9f] Extra ALWAYS() macros to verify state in the sqlite3ExprCanBeNull() routine. (check-in: [be19b84c9f] user: drh branch: trunk, size: 243987)
2023-12-14
13:58
[8f8ed8a597] part of check-in [3536f4030e] Pass subtype information through the aggregate ORDER BY sorter for aggregate functions that use subtype information. (check-in: [3536f4030e] user: drh branch: agg-orderby-subtype, size: 243896)
2023-12-07
13:14
[05278def9c] part of check-in [451cef8609] Add ALWAYS() on branches added in [ec0ae4030968c782] that are always true. (check-in: [451cef8609] user: drh branch: trunk, size: 243794)
2023-12-06
18:25
[f4dbcca060] part of check-in [ec0ae40309] Work around LLVM's newfound hatred of function pointer casts. Forum post 1a7d257346636292. (check-in: [ec0ae40309] user: drh branch: trunk, size: 243778)
2023-11-29
16:26
[314b08e650] part of check-in [f10d4fc4a8] Fix a duplicate assert() caused by the second cherrypick in the previous check-in. (check-in: [f10d4fc4a8] user: drh branch: branch-3.28, size: 194621)
16:07
[a6f321ad50] part of check-in [f9c6e6a710] Remove Window objects from the corresponding Select.pWin list when they are deleted, as they are, for example, when the ORDER BY clause is optimized out. (check-in: [f9c6e6a710] user: drh branch: branch-3.28, size: 194652)
2023-11-20
15:58
[cacf230b12] part of check-in [89658abbcd] Back out an incorrect change to the sqlite3ExprCompareSkip() function from long ago. (check-in: [89658abbcd] user: drh branch: branch-3.44, size: 243585)
15:54
[e9a491c7f1] part of check-in [f5b3eb0fc8] Back out an incorrect change to the sqlite3ExprCompareSkip() function that was added way back on 2019-08-22 for [44578865fa7baf97|check-in 44578865fa7ba] and which was only today discovered to be incorrect by forum post 45ec3d9788. (check-in: [f5b3eb0fc8] user: drh branch: trunk, size: 243621)
2023-11-14
16:53
[88629faed0] part of check-in [26dcaa34e3] Add NEVER() to a branch made unreachable by [6f9eed826f5b3d1c]. (check-in: [26dcaa34e3] user: drh branch: trunk, size: 243639)
14:50
[f8bbcfb988] part of check-in [6f9eed826f] Fix another obscure problem with nested aggregates. dbsqlfuzz 04408efc51. This might be a better fix than the one at [4a587c3492faa994]. (check-in: [6f9eed826f] user: dan branch: trunk, size: 243632)
2023-10-31
17:40
[433f12e123] part of check-in [d1895dd8f5] Fix harmless compiler warnings in test code. (check-in: [d1895dd8f5] user: drh branch: trunk, size: 243603)
2023-10-25
14:54
[2ad50ae13c] part of check-in [d2dbbdf719] When doing a DISTINCT aggregate that contains an ORDER BY, only the arguments to the aggregate need to be distinct, not the ORDER BY terms. (check-in: [d2dbbdf719] user: drh branch: trunk, size: 243547)
2023-10-23
12:16
[072dc4029c] part of check-in [143f95efc7] Fix sqlite3ExprDup() alignment assertions so that they work on 32-bit platforms. (check-in: [143f95efc7] user: drh branch: trunk, size: 243500)
2023-10-22
23:44
[0a499c92be] part of check-in [678a9728dc] Fix [f5c01676fd281e93] so that it always preserves 8-byte alignment for Expr objects. Add new assert() statement to verify this. (check-in: [678a9728dc] user: drh branch: trunk, size: 243492)
2023-10-20
18:09
[ddb8e31056] part of check-in [b7a84eff5d] Omit some redundant calls to strlen() used to find the size of Expr.u.zToken in sqliteExprDup(). This inefficiency was seen while working on the previous check-in, and I thought it best to fix it while it was fresh in mind. (check-in: [b7a84eff5d] user: drh branch: trunk, size: 243376)
17:15
[2cf43de9cb] part of check-in [f5c01676fd] Improvements to the sqlite3ExprDup() logic for faster performance and better run-time error detection. This check-in fixes the 5x oversize memory allocation bug from [f371e4c0f8ea73ae] as well as all other known issues that result from handing the ORDER BY clause of an aggregate function off of the pLeft pointer of the Expr object. (check-in: [f5c01676fd] user: drh branch: trunk, size: 243035)
15:47
[1755a8386b] part of check-in [56142a7816] Simplifications and optimizations to the Expr object duplication logic. The 5x multiplier crutch from [f371e4c0f8ea73ae] is still present. More fixes are still needed. (check-in: [56142a7816] user: drh branch: trunk, size: 242168)
10:18
[eb0d4b2078] part of check-in [d083e42086] Use sqlite3ParserAddCleanup() instead of calling sqlite3ExprListDelete() directly when disposing of an unused ORDER BY in an aggregate function, to avoid disrupting ALTER TABLE data structures. (check-in: [d083e42086] user: drh branch: trunk, size: 241855)
2023-10-19
19:57
[0756a4116a] part of check-in [a5c73b46f4] For TK_ORDER expression nodes to always be full-size. (check-in: [a5c73b46f4] user: drh branch: trunk, size: 241785)
19:19
[18a23aeeb4] part of check-in [f371e4c0f8] Fix an adverse interaction between the new aggregate ORDER BY logic and the expression compressor. Update 2023-10-20: Memory allocations were multiplied by a factor of 5 on line 1575 of expr.c. This was a debugging change that I neglected to remove prior to checking it. That change masks deeper problems that will be solved in later check-ins. (check-in: [f371e4c0f8] user: drh branch: trunk, size: 241748)
18:07
[7650672b74] part of check-in [d5ae82ec52] Simplify the Expr compression logic slightly by adding the new EP_FullSize property to expressions that are exceptions to the rule and should not be compressed. (check-in: [d5ae82ec52] user: drh branch: trunk, size: 241697)
12:12
[77191fed30] part of check-in [3d26f1aaa4] Fix the sqlite3ReferencesSrcList() routine so that it recognizes columns in the ORDER BY clause of an aggregate. Fixes a problem with [634286828dad873d] discoverd by dbsqlfuzz. (check-in: [3d26f1aaa4] user: drh branch: trunk, size: 241724)
01:09
[6090c2d44a] part of check-in [d18bc40014] Merge the latest changes from trunk. (check-in: [d18bc40014] user: drh branch: agg-orderby, size: 241522)
00:25
[243ef7e110] part of check-in [cd63eec075] Fix a false-positive in run-time error checking. (check-in: [cd63eec075] user: drh branch: trunk, size: 238990)
2023-10-18
23:48
[167dcf2ecc] part of check-in [ddfa09c603] Changes for test coverage. (check-in: [ddfa09c603] user: drh branch: agg-orderby, size: 241512)
22:03
[3c14758195] part of check-in [16f3805514] Make sure all terms of the ORDER BY within an aggregate go through aggregate analysis. Do not attach an aggregate ORDER BY to a window function. (check-in: [16f3805514] user: drh branch: agg-orderby, size: 241507)
19:44
[ae9224fba7] part of check-in [6cccf86c36] Basic test cases. (check-in: [6cccf86c36] user: drh branch: agg-orderby, size: 241090)
18:11
[7210855080] part of check-in [64c12a835b] ORDER BY on aggregates seem to work, at least for simple smoke tests. Lots more testing is needed though. Surely there are many bugs. (check-in: [64c12a835b] user: drh branch: agg-orderby, size: 240879)
13:58
[dbe1be4833] part of check-in [c83a53a574] Basic error checking. Resolve symbols in the aggregate ORDER BY expressions. (check-in: [c83a53a574] user: drh branch: agg-orderby, size: 240065)
13:18
[c1a2aa866a] part of check-in [3a98ff24bf] Enhance the parser so that it can accept an ORDER BY clause on a function invocation. For this incremental check-in, the ORDER BY clause is currently ignored. (check-in: [3a98ff24bf] user: drh branch: agg-orderby, size: 240039)
2023-09-25
15:25
[8a5045ac7a] 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: 238980)
2023-09-23
18:49
[5a8e6184eb] part of check-in [7c4210253b] Fix a harmless compiler warning. (check-in: [7c4210253b] user: drh branch: partial-index-terms, size: 238975)
2023-09-22
20:21
[a0b26b208a] 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: 238938)
2023-09-15
18:36
[9902bebcc9] part of check-in [59a1bbc69f] Allow expressions like "<tbl>.rowid" to refer to implicit rowid columns of tables in nested FROM clauses. (check-in: [59a1bbc69f] user: dan branch: nested-from-rowid-expansion, size: 237714)
2023-09-09
17:53
[c8c436f3c7] part of check-in [71548f72ad] Remove out-of-date comment regarding use of Parse.pConstExpr. (check-in: [71548f72ad] user: dan branch: trunk, size: 237143)
2023-08-07
16:15
[1affe0cc04] part of check-in [16cd2161e3] Changes so that sqlite3_vtab_nochange() works with "UPDATE ... FROM...". Use this to allow UPDATE on a contentless fts5 table if new values are supplied for all indexed columns. (check-in: [16cd2161e3] user: dan branch: fts5-contentless-delete, size: 237120)
2023-07-21
15:01
[ef4a81822d] part of check-in [d0278cdedf] Multiple optimizations that try to preserve or infer the zero-terminated property of TEXT values. Avoid unnecessary copying of text values destined to become function parameters. All changes help improve performance of doing UPDATEs on large JSON values that are indexed multiple ways. (check-in: [d0278cdedf] user: drh branch: big-function-text, size: 236924)
2023-06-22
21:19
[8d1656b65e] part of check-in [8b8ea4e3f5] Optimize the argument to the octet_length() function so that it does not attempt to read content from disk. (check-in: [8b8ea4e3f5] user: drh branch: octet_length, size: 236972)
2023-06-16
14:39
[36f6a47c8a] part of check-in [365caf2f97] Address various harmless compiler warnings from forum post d526da8ee4. (check-in: [365caf2f97] user: drh branch: trunk, size: 236668)
2023-06-13
18:10
[e9e3619883] part of check-in [118fe60087] Improved sqlite3_error_offset() values for bare column errors on '*' and 'table.*' expressions in SELECT statements. (check-in: [118fe60087] user: drh branch: trunk, size: 236643)
2023-06-09
18:58
[2f159d0e90] part of check-in [446ad162f7] Improved sqlite3_error_offset() values for bare column errors on '*' and 'table.*' expressions in SELECT statements. (check-in: [446ad162f7] user: drh branch: newbie-safe-aggregates, size: 237642)
13:08
[bdaff0996d] part of check-in [f587891134] Experimental change to add a per-connection option that raises an error if a bare column appears in an aggregate query. (check-in: [f587891134] user: drh branch: newbie-safe-aggregates, size: 237428)
2023-06-07
17:03
[b7dabf7f5a] 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: 236429)
08:40
[db2e4870db] 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: 236430)
2023-06-02
18:05
[099cf96cf7] part of check-in [2d962b84dd] Restore the LEFT JOIN strength reduction that was partially lost in [d747afda5683ca5f] when strength reduction was generalized to all OUTER JOINs. (check-in: [2d962b84dd] user: drh branch: trunk, size: 236568)
00:03
[93a8292352] part of check-in [73d7b14b17] Fix the OUTER JOIN strength reduction theorem prover's handling of the CASE operator. (check-in: [73d7b14b17] user: drh branch: trunk, size: 235912)
2023-06-01
20:38
[7644055e99] part of check-in [d747afda56] Generalize the LEFT JOIN strength reduction optimization so that it works for RIGHT and FULL JOIN as well. Rename it to the "OUTER JOIN strength reduction" optimization. (check-in: [d747afda56] user: drh branch: trunk, size: 236303)
00:28
[7bda4678e7] part of check-in [a00928d480] Add an ALWAYS() on an unreachable branch. (check-in: [a00928d480] user: drh branch: trunk, size: 236292)
00:01
[892a0645ed] part of check-in [96c72dde79] Fix the LEFT JOIN strength reduction for IN operators in the WHERE clause. Further simplifications and refinement of the algorithm. (check-in: [96c72dde79] user: drh branch: trunk, size: 236284)
2023-05-31
18:52
[5671567f09] part of check-in [8396032ce1] Add a comment to explain why both sides of an AND must be non-null-row in order for the overall expression to be non-null-row. No code changes. (check-in: [8396032ce1] user: drh branch: trunk, size: 234974)
18:35
[0081058153] part of check-in [f544a8e47c] Improved detection of when the LEFT JOIN strength reduction optimization can be applied. (check-in: [f544a8e47c] user: drh branch: trunk, size: 234659)
2023-05-23
17:43
[f2c4280c6e] part of check-in [1bc549716c] Avoid performing aggregate processing more than once for a single expression. (check-in: [1bc549716c] user: drh branch: branch-3.42, size: 234628)
17:35
[83bbb16197] part of check-in [367b4cc549] Avoid performing aggregate processing more than once for a single expression. Forum post 36ff78b2a3. (check-in: [367b4cc549] user: dan branch: trunk, size: 234665)
2023-05-17
15:46
[cb85ac2326] part of check-in [6084c5fb6d] New assert() statements to verify that Expr.iColumn is never used as an array index when its value is negative. (check-in: [6084c5fb6d] user: drh branch: trunk, size: 234627)
00:26
[6d9805e355] part of check-in [8504fe812c] Fix two assert() statements that failed to take into account the likely() built-in function. This does not impact production code. (check-in: [8504fe812c] user: drh branch: trunk, size: 234590)
2023-05-15
02:06
[941fe75821] 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: 234581)
2023-05-12
12:57
[b239be118a] part of check-in [48139fb904] Remove a stray CR from end of line in a source file. (check-in: [48139fb904] user: drh branch: trunk, size: 233451)
2023-05-10
11:05
[6b04cccecd] 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: 233452)
2023-05-01
11:24
[871cfd80c5] part of check-in [d095da0e7a] Do not apply the "AND false" optimization if either operand comes from the ON clause of a join. Fix for the problem identified by forum post 96cd4a7e9e. (check-in: [d095da0e7a] user: drh branch: trunk, size: 233228)
2023-04-13
15:11
[f307007b9e] part of check-in [fc12743763] Remove an ALWAYS() that can sometimes be false. And fix a code-generator issue associated with very unusual use of window functions. (check-in: [fc12743763] user: drh branch: branch-3.41, size: 233030)
14:50
[6353f4d92d] part of check-in [1ba22631a7] Fix a code-generator issue associated with very unusual use of window functions. Both the expr.c or the window.c changes will each independently fix the problem. They are both included in this patch for defense in depth. Forum post 0d48347967. (check-in: [1ba22631a7] user: drh branch: trunk, size: 233126)
2023-04-11
15:06
[86f843dba9] part of check-in [c8fb143d64] Remove an ALWAYS() that can sometimes be false. Add a test case that makes the test false. Forum post 6c5678e3da. (check-in: [c8fb143d64] user: drh branch: trunk, size: 233123)
2023-04-08
13:31
[067ed64192] part of check-in [c9559ba621] Fix a harmless compiler warning. (check-in: [c9559ba621] user: drh branch: trunk, size: 233131)
2023-04-06
17:41
[6927742729] part of check-in [9511d17e2a] Work around a harmless assertion fault associated with sqlite3VdbeMemAboutToChange() such that the detection of stale values in registers is preserved in debugging builds, but we avoid a false-positive assertion fault in cases involving a virtual table with a LIMIT clause in an IN-operator loop. (check-in: [9511d17e2a] user: drh branch: branch-3.41, size: 233035)
17:29
[874702ffa8] part of check-in [56ea2c2fe6] Work around a harmless assertion fault associated with sqlite3VdbeMemAboutToChange() such that the detection of stale values in registers is preserved in debugging builds, but we avoid a false-positive assertion fault in cases involving a virtual table with a LIMIT clause in an IN-operator loop. dbsqlfuzz 3fd70d4ab4950acf1deb8f610a7a7c67cd38713b (check-in: [56ea2c2fe6] user: drh branch: trunk, size: 233144)
2023-04-05
03:00
[d16a20b500] part of check-in [3bfdb4103d] Remove an ALWAYS() that can now be false due to the prior check-in. (check-in: [3bfdb4103d] user: drh branch: branch-3.41, size: 232998)
02:50
[1c17d1ff2e] part of check-in [fc68993501] Remove an ALWAYS() that might now be false due to the prior check-in. (check-in: [fc68993501] user: drh branch: trunk, size: 233107)
02:25
[9cada96745] part of check-in [b29dea0dae] Fix the function that determines the collating function for an expression tree to handle new cases that arise as a result of the recently added ability to use indexed expressions in aggregate queries. (check-in: [b29dea0dae] user: drh branch: branch-3.41, size: 233006)
02:21
[60b2e406df] part of check-in [cc5041f3f0] Fix the function that determines the collating function for an expression tree to handle new cases that arise as a result of the recently added ability to use indexed expressions in aggregate queries. [forum/forumpost/0713a16a44|Forum post 0713a16a44]. (check-in: [cc5041f3f0] user: drh branch: trunk, size: 233115)
2023-04-04
18:48
[93a6f90d40] part of check-in [93fb8c66c5] Remove an assert() statement that is no longer valid due to enhancements to query planner for improved use of indexes. (check-in: [93fb8c66c5] user: drh branch: branch-3.41, size: 233002)
18:10
[8e30ea19cd] part of check-in [2b23dd249d] Remove an assert() statement that is no longer valid due to enhancements to query planner for improved use of indexes. Forum post dc16ec63d3. (check-in: [2b23dd249d] user: drh branch: trunk, size: 233111)
2023-04-03
23:55
[3a58dfd2cd] part of check-in [7ea98aba78] When translating arguments of aggregate functions into references to expression indexes, make sure to only translate them for the current aggregate when there are nested aggregates. (check-in: [7ea98aba78] user: drh branch: branch-3.41, size: 233076)
23:49
[9586f2dafe] part of check-in [898bfa1afd] When translating arguments of aggregate functions into references to expression indexes, make sure to only translate them for the current aggregate when there are nested aggregates. Forum post 409ebc7368. (check-in: [898bfa1afd] user: drh branch: trunk, size: 233185)
2023-03-30
19:14
[9cd6b02315] part of check-in [cf8dd8cd08] Earlier error detection for index expression usage by aggregate functions. dbsqlfuzz 29214ace4e25c98d2ddff8fbcf97afdda23f28b9 (check-in: [cf8dd8cd08] user: drh branch: branch-3.41, size: 232910)
19:05
[5f2b5f25a9] part of check-in [8e841e7f02] Earlier error detection for index expression usage by aggregate functions. dbsqlfuzz 29214ace4e25c98d2ddff8fbcf97afdda23f28b9 (check-in: [8e841e7f02] user: drh branch: trunk, size: 233019)
11:28
[7661f8a701] part of check-in [5583ea82c6] Cherrypick three fixes from trunk. (check-in: [5583ea82c6] user: drh branch: branch-3.41, size: 232782)
11:05
[e35eb0f324] part of check-in [804435a273] Fix a crash that could follow an OOM error while processing aggregate functions. (check-in: [804435a273] user: dan branch: trunk, size: 232891)
2023-03-29
16:28
[7feb92a99e] part of check-in [248bf62945] Merge recent trunk fixes into the nan-inf branch. (check-in: [248bf62945] user: drh branch: nan-inf, size: 232959)
14:42
[bf74dd13f3] part of check-in [09a9b30ba7] New #ifdefs to omit code that is unused except under STAT4. (check-in: [09a9b30ba7] user: drh branch: trunk, size: 232848)
2023-03-28
16:13
[4d42cbf2d0] part of check-in [36fd948e34] Fix a weird corner case in aggregate function processing that results from the recent addition of support for index expressions on aggregate queries. (check-in: [36fd948e34] user: drh branch: branch-3.41, size: 232739)
16:02
[98ba98271b] part of check-in [c34fd9fe1b] Fix a weird corner case in aggregate function processing that results from the recent addition of support for index expressions on aggregate queries. Forum post bad532820c. (check-in: [c34fd9fe1b] user: drh branch: trunk, size: 232741)
2023-03-27
13:10
[8017306e96] part of check-in [636f6fad8d] Improvements to register allocation, especially in the ANALYZE command. New assert() statements added to help verify that memory allocation is correct, and to help fuzzer find lingering errors. (check-in: [636f6fad8d] user: drh branch: branch-3.41, size: 232732)
2023-03-26
16:36
[4cc4595f1c] part of check-in [6f8b97f31a] Improvements to register allocation, especially in the ANALYZE command. New assert() statements added to help verify that memory allocation is correct, and to help fuzzer find lingering errors. (check-in: [6f8b97f31a] user: drh branch: trunk, size: 232734)
2023-03-25
23:56
[d3909cb38f] part of check-in [c51df77ebe] When the left table of a RIGHT JOIN is used inside an aggregate function and the left table employs an index on expressions, then make sure the expressions evaluate to NULL for the cases where the left table should be NULL. (check-in: [c51df77ebe] user: drh branch: branch-3.41, size: 231704)
23:40
[c938990570] part of check-in [4d05a009df] Add usage detection to the NULL value generator for the left table of a RIGHT JOIN inside of an aggregate. (check-in: [4d05a009df] user: drh branch: rightjoin-agg-idxexpr, size: 231706)
21:01
[c6f7772fd9] part of check-in [3572b40a7d] When the left table of a RIGHT JOIN is used inside an aggregate function and the left table employs an index on expressions, then make sure the expressions evaluate to NULL for the cases where the left table should be NULL. Proposed fix for forum post 9b491e1deb. More testing an analysis needed - there is a FIXME in this check-in. (check-in: [3572b40a7d] user: drh branch: rightjoin-agg-idxexpr, size: 231519)
19:46
[0c60fbb995] part of check-in [2d439ccca4] In the byte-code generator, when the result of an expression needs to be in a particular register, always use the sqlite3ExprCode() routine because it has the smarts to know whether to use OP_Copy or OP_SCopy. Do not try to OP_SCopy inline because an OP_Copy might be required. (check-in: [2d439ccca4] user: drh branch: branch-3.41, size: 231295)
19:44
[fc8e484fbd] part of check-in [c104e5c6ee] In the byte-code generator, when the result of an expression needs to be in a particular register, always use the sqlite3ExprCode() routine because it has the smarts to know whether to use OP_Copy or OP_SCopy. Do not try to OP_SCopy inline because an OP_Copy might be required. Fix for the problem identified by forum post 5522082cfc. (check-in: [c104e5c6ee] user: drh branch: trunk, size: 231297)
2023-03-22
20:21
[f4a6c233ce] part of check-in [96ec830645] Add the SQLITE_ENABLE_NAN_INF compile-time option which makes the following behavior changes: (1) sqlite3_value_double(NULL) returns NaN, (2) SQLite preserves NaN values rather than converting them to NULL. (3) CAST statements understand "NaN" and "Inf" and make the right conversions. (4) Non-standard JSON is never generated by SQLite JSON routines, but those routines will accept floating point literals "NaN", "Inf", and "-Inf". (check-in: [96ec830645] user: drh branch: nan-inf, size: 231765)
2023-03-20
01:59
[e7c0cdde3b] part of check-in [d5cd6c885b] Fix problems with the sqlite3_error_offset() function and its use in the CLI. (check-in: [d5cd6c885b] user: drh branch: branch-3.41, size: 231652)
01:55
[e02117f1d6] part of check-in [770b3e67c8] A better fix for the sqlite3_error_offset() problem on generated columns. (check-in: [770b3e67c8] user: drh branch: trunk, size: 231654)
00:53
[46aa5d02c6] part of check-in [2adb4e0dda] Expression errors in generated columns should not generate non-negative sqlite3_error_offset() returns. Second of two defenses against [33aa4c0de8a62e33]. (check-in: [2adb4e0dda] user: drh branch: trunk, size: 231631)
2023-03-14
20:16
[0bb501fd89] part of check-in [11e0256b8c] Fix Bloom filters on an expression index. (check-in: [11e0256b8c] user: drh branch: branch-3.41, size: 231566)
20:08
[55df0e3312] 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: 231568)
2023-03-10
21:27
[0fc6ebb386] part of check-in [76acc07540] Fix a typo in a comment. No code changes. (check-in: [76acc07540] user: drh branch: trunk, size: 231541)
2023-03-03
15:12
[399c10566b] 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: 231539)
2023-03-02
13:49
[8f9d5c20cf] part of check-in [8fe13f7a5e] When flattening the right operand of a LEFT JOIN (check-in [41c27bc0ff1d3135]), ensure that the OP_IfNullRow opcode does not NULL-out a subquery result that was computed within OP_Once. This fixes the problem problem reported by forum post 402f05296d. (check-in: [8fe13f7a5e] user: drh branch: trunk, size: 231138)
2023-03-01
15:21
[e3520c28b3] part of check-in [e72661eb68] Follow-up to [bbaf1f2eb1e1637b]: Make sure subtypes do not cross a subquery boundary even if the function that returned the value with a subtype is buried down inside a larger expression. This fixes a problem identified by forum post 37dd14a538. (check-in: [e72661eb68] user: drh branch: trunk, size: 230825)
2023-02-09
11:51
[2e5e67e800] part of check-in [f4ec68ceef] The "flexnum" affinity that was added by [44135d6ea84f7ba6] needs to also be added to the output of the affinity() built-in function. dbsqlfuzz d309eaa5fe492c9606a8be876c2bc7dedb29d3d8 (check-in: [f4ec68ceef] user: drh branch: trunk, size: 230556)
2022-12-20
14:02
[204af6a83c] part of check-in [79d62956f2] Improvement to the dbsqlfuzz fix of [f113eebdbe68246f]. (check-in: [79d62956f2] user: drh branch: trunk, size: 230414)
01:48
[6439975198] 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: 230372)
2022-12-17
22:10
[dcf31acfea] part of check-in [8cc0af81ad] Fix an unnecessarily restrictive assert() in the aggregate logic. dbsqlfuzz 699bee2aa26c5dc84afabf6894685c316d936485 (check-in: [8cc0af81ad] user: drh branch: trunk, size: 230275)
2022-12-15
20:03
[6dc067ab82] part of check-in [44135d6ea8] Create a new affinity called FLEXNUM that works like NUMERIC except that it never tries to convert integer to real or real to integer. The affinity is only used internally - it is not possible to create a table column with this affinity. This affinity is used on subqueries and views that are built off of a compound SELECT and where the datatype is controlled by a CAST expression. dbsqlfuzz c9ee6f9a0a8b8fefb02cf69de2a8b67ca39525c8 (check-in: [44135d6ea8] user: drh branch: trunk, size: 230474)
2022-12-14
23:53
[63e0b77a54] part of check-in [c1d5261b22] Fix minor problems in the new sqlite3ExprDataType() function. (check-in: [c1d5261b22] user: drh branch: trunk, size: 230469)
14:41
[c788575fc6] part of check-in [6ebb178c6b] If the SELECT that implements a subquery or a VIEW or a CREATE TABLE AS is a compound with different result datatypes on two or more arms of the compound, then the overall column type becomes BLOB (ANY). (check-in: [6ebb178c6b] user: drh branch: refactor-subquery-types, size: 230341)
2022-12-13
13:33
[f77ab79af3] part of check-in [01cf3278c9] Slightly faster implementation of sqlite3ExprAffinity(). (check-in: [01cf3278c9] user: drh branch: trunk, size: 228747)
2022-12-05
18:19
[d0ce060008] part of check-in [41a0e05e8c] Add loops and rows counters to "USE TEMP B-TREE FOR ORDER BY" records. Also fix the sqliteHwtime() function so that it returns a 64-bit value. (check-in: [41a0e05e8c] user: dan branch: scanstatus_v2, size: 228604)
2022-12-03
18:16
[02a24db962] part of check-in [365011ae8b] Add CYCLES scanstat measurement to "USE TEMP B-TREE FOR ORDER BY" lines. (check-in: [365011ae8b] user: dan branch: scanstatus_v2, size: 228538)
2022-12-02
20:32
[7b44a97e14] part of check-in [5580083364] Enhance the sqlite3_stmt_scanstatus() API and add sqlite3_stmt_scanstatus_v2(). For creation of easier to read query performance reports. (check-in: [5580083364] user: dan branch: scanstatus_v2, size: 228469)
2022-11-25
13:08
[9e7fadc664] part of check-in [5200b84195] Improved comments. Add assert()s to verify that the AggInfo structure is unchanged after registers have been assigned. (check-in: [5200b84195] user: drh branch: agg-with-indexed-expr, size: 228347)
2022-11-24
19:02
[af9e80644a] part of check-in [5fc23863e4] Take care not to try to add comments to a TK_AGG_COLUMN opcode that does not have an associated Table object because it is a reference to an indexed expression. (check-in: [5fc23863e4] user: drh branch: agg-with-indexed-expr, size: 228275)
18:45
[4de4d48885] part of check-in [a0fd44f4e5] Change a NEVER() into an assert(). (check-in: [a0fd44f4e5] user: drh branch: agg-with-indexed-expr, size: 228227)
15:04
[07d4a0f36c] part of check-in [3a901e88c8] Add NEVER() and ALWAYS() macros on branches that are believed to be unreachable. (check-in: [3a901e88c8] user: drh branch: agg-with-indexed-expr, size: 228326)
13:19
[44a7f638ee] part of check-in [ef6ebe7922] New test cases. Fix the logic so that it works for GROUP BY aggregates that do not require sorting. (check-in: [ef6ebe7922] user: drh branch: agg-with-indexed-expr, size: 228312)
2022-11-23
18:51
[141af81391] part of check-in [8dcf9f2031] Aggregates with GROUP BY now make use of expressions on indexes. This code works and gets the correct answer for the test case in the ticket. Lots more testing and documentation is needed, however. (check-in: [8dcf9f2031] user: drh branch: agg-with-indexed-expr, size: 228030)
17:56
[527fc56468] part of check-in [84c06023f4] This attempt at modifying AggInfo to make use of indexed expressions does not work. It gets an incorrect answer for the test case shown in the ticket. (check-in: [84c06023f4] user: drh branch: agg-with-indexed-expr, size: 227980)
2022-11-22
15:43
[63cce2c219] part of check-in [dc5bd34963] Since the memory registers used by the columns and functions of an AggInfo object are sequential, it is not neecessary to remember each register separately. We can simply remember the first one and do the math when others are needed. (check-in: [dc5bd34963] user: drh branch: agg-with-indexed-expr, size: 227355)
14:10
[5de79bb844] part of check-in [4475799d5b] Factor out the allocation of registers for aggregates into a separate subroutine. (check-in: [4475799d5b] user: drh branch: agg-with-indexed-expr, size: 227455)
2022-11-21
16:40
[bc6527e3df] 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: 227432)
2022-10-24
21:58
[f48f053584] part of check-in [80fbb30f28] This check-in attempts to make the SrcItem object smaller by combining the zDatabase and pSchema fields into a single union. It mostly works, but there are some issues, and the performance savings is minimal. So it is side-tracked onto this dead-end branch. (check-in: [80fbb30f28] user: drh branch: failed-opt-attempt, size: 227505)
2022-10-21
20:12
[304bce440e] 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: 227442)
2022-10-20
13:36
[847f87d9df] 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: 227438)
2022-10-19
11:22
[dc17ca9523] 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: 194453)
2022-10-18
20:27
[3ac1d9e87c] 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: 227810)
16:47
[74a9478912] part of check-in [54c3eb085a] Fix the indexed expression resolver for generated columns so that it picks the correct table in a self-join. (check-in: [54c3eb085a] user: drh branch: index-expr-opt, size: 227670)
2022-10-17
14:46
[ba67701bd7] part of check-in [8f460b3b15] Improved comments and function names. No logic changes. (check-in: [8f460b3b15] user: drh branch: index-expr-opt, size: 227549)
2022-10-15
12:01
[4a13a0e5c3] part of check-in [462b3c7f39] Enable the index-on-expression optimization even when the expression is used as an argument to an aggregate function. (check-in: [462b3c7f39] user: drh branch: index-expr-opt, size: 227520)
11:27
[8e260b0082] 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: 227376)
2022-10-13
21:08
[b60036e4bb] 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: 226658)
12:47
[d199850a92] part of check-in [45f1715654] Proposed optimization to the IS NULL and NOT NULL operators that avoids loading the entire content of larges strings and BLOBs. Response to forum post 3c08d4715dc05b00. (check-in: [45f1715654] user: drh branch: isnull-opt, size: 225730)
2022-09-20
19:22
[1cbdd76eee] part of check-in [1292d68caa] Modify the OP_IfNotOpen opcode so that the jump is taken if the cursor is open but was previously set to a NULL row using OP_NullRow. (check-in: [1292d68caa] user: drh branch: flattener-omit-restriction-29, size: 225654)
16:57
[a6692ca006] part of check-in [19270577ad] Is the query flattener restriction 29 (do not allow both EP_InnerON and EP_OuterON constraints on the same FROM clause term) really necessary? This branch explores what happens if we omit that restriction. This is an effort to address the performance regression reported by forum post 96b9e5709cf47cda that is caused by flattener restriction 29. (check-in: [19270577ad] user: drh branch: flattener-omit-restriction-29, size: 225682)
2022-08-22
02:00
[24e828db6b] 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: 225610)
2022-07-26
15:32
[0f72468b64] part of check-in [2bda4fca06] Make sure IF_NULL_ROW expressions receive a separate slot in the sorter used to implement GROUP BY. (check-in: [2bda4fca06] user: drh branch: flatten-left-join, size: 225495)
14:37
[ed5f44ba63] part of check-in [e717e029bd] Improved AggInfo.aCol debugging output, intended to debug a problem with LEFT JOIN flattening into an aggregate query with GROUP BY. (check-in: [e717e029bd] user: drh branch: flatten-left-join, size: 225369)
2022-07-25
23:34
[1565349664] part of check-in [db8230e80e] Fix an assert() that was made out-of-date by [b52393ac28debe98]. (check-in: [db8230e80e] user: drh branch: trunk, size: 225355)
20:21
[afc33c8b4f] part of check-in [1798ce97c8] Performance optimization in computing the Expr.nHeight field. (check-in: [1798ce97c8] user: drh branch: trunk, size: 225308)
19:05
[375b8285b3] part of check-in [92ac01d41d] Small performance increase and size reduction by splitting out the sqlite3VdbeGetLastOp() from sqlite3VdbeGetOp(). (check-in: [92ac01d41d] user: drh branch: trunk, size: 225004)
15:54
[61681ff95f] part of check-in [816da9a893] Allow subqueries on the right-hand side of a LEFT JOIN to be flattened even if they contain a GROUP BY clause. (check-in: [816da9a893] user: drh branch: flatten-left-join, size: 225003)
14:05
[72f312252a] part of check-in [40d0880720] TK_IF_NULL_ROW expressions must be accumulated in the same way as TK_COLUMN expressions in an aggregate query. Proposed fix for the problem identifyed by dbsqlfuzz 8e17857db2c5a9294c975123ac807156a6559f13. (check-in: [40d0880720] user: drh branch: flatten-left-join, size: 224670)
2022-07-23
00:44
[78a1b6c133] part of check-in [2a6f6971fa] Use sqlite3ParserAddCleanup() rather than pParse->pConstExpr to implement sqlite3ExprDeferredDelete(). This is a better solution than check-in [c538d07535092722]. (check-in: [2a6f6971fa] user: drh branch: trunk, size: 224346)
2022-07-22
19:28
[44f6b019a5] part of check-in [28934a9d92] Omit the EP_MemToken flag that was made obsolete by [e1f1cfe7f4387b60], for a size reduction and performance increase. (check-in: [28934a9d92] user: drh branch: trunk, size: 224380)
18:25
[10b3e1a052] part of check-in [c538d07535] In a TK_BLOB Expr node, the Expr.zToken might not be a well-formed BLOB literal if there has been a prior OOM. dbsqlfuzz 23871e5805d6c45b392f9b7aa1e8a2b98f3c27cd. (check-in: [c538d07535] user: drh branch: trunk, size: 224569)
2022-07-20
20:36
[9f568514b3] part of check-in [22f90e9683] Make use of the sqlite3ExprDeferredDelete() interface in the previous check-in, and in another place where it might be helpful. (check-in: [22f90e9683] user: drh branch: trunk, size: 224529)
2022-06-09
16:19
[4907afcb86] part of check-in [08af1fe27e] The subtype of a value should not propagate across a subquery boundary. Proposed fix for the problem reported by forum post 3d9caa45cbe38c78. Additional works is needed as not all cases are covered. (check-in: [08af1fe27e] user: drh branch: subtype-subquery, size: 224517)
2022-06-01
13:32
[69c833a8fa] part of check-in [382cd7e10b] Only include the code for sqlite_offset() if compiled with -DSQLITE_ENABLE_OFFSET_SQL_FUNC. (check-in: [382cd7e10b] user: drh branch: trunk, size: 223995)
11:05
[67c0510697] part of check-in [1c9812c458] Move the sqlite_offset() function implementation to be an in-line function, thereby avoiding special case code and freeing up a bit in the FuncDef.flags field. (check-in: [1c9812c458] user: drh branch: trunk, size: 223951)
2022-05-13
23:01
[19507ae324] part of check-in [778e57a558] Change an unreachable branch into an assert(). (check-in: [778e57a558] user: drh branch: trunk, size: 224040)
19:50
[b4328d113e] part of check-in [12ee29d632] Walk back the optimization from check-in [cc458317bd77046c] that tries to reuse the same ephemeral cursor of a list subquery when that subquery is reused, as it does not work in cases where the list subquery is used both for lookups and for scans. (check-in: [12ee29d632] user: drh branch: trunk, size: 224046)
16:38
[d73ac75456] 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: 224141)
14:52
[8c5ca4fb40] 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: 224082)
2022-05-02
20:49
[d955e8954e] 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: 224088)
19:59
[495ff0219a] part of check-in [6f9c0b07aa] Name resolution and "*" wildcard expansion for parenthesized FROM clauses seems to work the same as PG. The code is chaos, however, and needs some cleanup. (check-in: [6f9c0b07aa] user: drh branch: right-join, size: 224301)
15:10
[efa37babe3] part of check-in [afbcf075c1] Merge the latest trunk fixes and enhancements into the right-join branch. (check-in: [afbcf075c1] user: drh branch: right-join, size: 224257)
14:32
[36acab0dde] part of check-in [cc458317bd] Improvement on check-in [a193749730d6cfba] so that the subroutine call to the IN operator right-hand side generator from the RIGHT JOIN no-match logic does not generate unreachable byte code. (check-in: [cc458317bd] user: drh branch: trunk, size: 224211)
11:24
[926dccca86] part of check-in [40f3274745] Bring the comments on sqlite3FindInIndex() into closer alignment with what that routine actually does. (check-in: [40f3274745] user: drh branch: trunk, size: 224048)
2022-04-28
12:52
[132e30b849] part of check-in [3fd9706bba] Merge trunk enhancements into the right-join branch. (check-in: [3fd9706bba] user: drh branch: right-join, size: 223733)
2022-04-27
18:38
[d8c520edd0] part of check-in [e1f4a115df] Fix a harmless typo in a comment. (check-in: [e1f4a115df] user: drh branch: trunk, size: 223687)
2022-04-25
21:21
[7b9d66f012] 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: 223047)
19:40
[5d4178f846] 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: 223688)
2022-04-23
07:29
[6763de6e37] part of check-in [3a6b0db451] Fix minor problems with the new join table name resolution logic. (check-in: [3a6b0db451] user: drh branch: right-join-colnames, size: 222280)
2022-04-22
16:15
[06dfbfb7f4] part of check-in [8d631a6b9e] Honor the MATERIALIZED keyword on a common table expression by not flattening the CTE into an outer query. (check-in: [8d631a6b9e] user: drh branch: trunk, size: 222234)
2022-04-20
21:58
[899c77da1c] part of check-in [07906e3c4f] Try to avoid materializing unused columns when processing a parenthesized FROM clause. (check-in: [07906e3c4f] user: drh branch: right-join-paren, size: 222192)
2022-04-18
14:15
[1d9a1eefd8] part of check-in [1b2c5cef95] Improved comment field in the bytecode generated for OP_Column and OP_Rowid. (check-in: [1b2c5cef95] user: drh branch: trunk, size: 222435)
13:57
[0714987d57] part of check-in [009bbf8026] Improved comment field in the bytecode generated for OP_Column and OP_Rowid. (check-in: [009bbf8026] user: drh branch: right-join, size: 222156)
2022-04-17
20:30
[efde3f5034] 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: 222109)
2022-04-15
15:47
[5f4fa51dde] part of check-in [40f3c95871] Enhance the IdList object to exist in a single memory allocation (rather than a separate allocate for the base object and the array of IDs). Also permit an IdList object to store an Expr pointer together with each name. (check-in: [40f3c95871] user: drh branch: right-join, size: 222219)
2022-04-14
19:48
[38a25dcba2] part of check-in [12645f100d] Cherry pick subroutine indentation improvements and the hardening of OP_Gosub from the right-join branch back into trunk. (check-in: [12645f100d] user: drh branch: trunk, size: 222388)
19:05
[6cf41bfa55] part of check-in [73f4036b04] Another instance of indenting a subroutine. (check-in: [73f4036b04] user: drh branch: right-join, size: 222460)
16:34
[f4020ee000] 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: 222466)
15:55
[e333233133] part of check-in [079b7b1252] Adjust the output formatting of bytecode listings so that subroutines used to implement subqueries are indented one level. (check-in: [079b7b1252] user: drh branch: right-join, size: 222397)
2022-04-11
11:59
[d5be48b7f3] part of check-in [5be5ede5cc] Fix some comments that refer to LEFT JOIN that should refer to OUTER JOIN. No changes to code. (check-in: [5be5ede5cc] user: drh branch: right-join, size: 222402)
2022-04-07
01:11
[5e247a8dfa] 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: 222399)
2022-03-03
15:00
[3cdb00b6c1] part of check-in [b822674870] Add the new OP_BeginSubrtn opcode (which is really an alias for OP_Integer) and make other changes so that the span of a subroutine that implements a subquery is more readily apparent in bytecode listings. (check-in: [b822674870] user: drh branch: trunk, size: 222018)
2022-02-06
11:51
[b90a029105] part of check-in [a7a5af327b] Faster computation of Expr.nHeight. (check-in: [a7a5af327b] user: drh branch: trunk, size: 221736)
00:30
[ddb6a18fcb] part of check-in [fa34676042] Further improvements to localization of errors in input SQL. (check-in: [fa34676042] user: drh branch: trunk, size: 221700)
2022-02-04
13:15
[31d23e6b57] part of check-in [70049342d5] Fix various harmless compiler warnings. (check-in: [70049342d5] user: drh branch: trunk, size: 221516)
2022-01-24
20:16
[9658bccd15] part of check-in [11df9187da] One of the ALWAYS() macros in the previous check-in could sometimes be false, following an OOM. Remove it. Problem found by dbsqlfuzz. (check-in: [11df9187da] user: drh branch: trunk, size: 221572)
19:38
[81c8fad481] part of check-in [4aa27b4fcd] Add ALWAYS() macros. Change some existing ALWAYS() into assert(). Other code simplifications. (check-in: [4aa27b4fcd] user: drh branch: trunk, size: 221580)
16:47
[da0ba8a4cf] 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: 221616)
2021-11-28
19:54
[827179c78d] part of check-in [4e207401ac] Following a prior error, an ALWAYS() in sqlite3ExprCanBeNull() might be false. dbsqlfuzz 5dbec6678a20e7595a34dfdd869a3b9722b3ca43. (check-in: [4e207401ac] user: drh branch: trunk, size: 221656)
2021-11-26
17:10
[4b6dfb224b] part of check-in [eb878c01f3] Improved defenses against integer overflow when computing the size of a memory allocations. No bugs were fixed here. But perhaps future bugs will be prevented. (check-in: [eb878c01f3] user: drh branch: trunk, size: 221665)
2021-11-19
19:11
[89c4a225af] part of check-in [d814ba6eff] Small performance increase and size reduction for sqlite3ExprCompare(). This change also handles some corner cases without the need for ALWAYS(). (check-in: [d814ba6eff] user: drh branch: trunk, size: 221659)
2021-11-12
14:39
[6c55bf2170] part of check-in [5995dd4de4] Improved handling of OOM while reallocating a column name to add type information. dbsqlfuzz 5a195b4233649e49e0aa34f1b743ca192d85b198 (check-in: [5995dd4de4] user: drh branch: trunk, size: 221654)
2021-11-08
23:24
[5c021ca249] part of check-in [74aec5dd1d] Refactor the code that figures out which SELECT in a cascade of nested queries a particular aggregate function belongs to. This fixes the problem reported by forum post c7cc2aa3546e39c1. New test cases in dbsqlfuzz and th3. (check-in: [74aec5dd1d] user: drh branch: trunk, size: 221614)
16:38
[2d06e9ee4f] part of check-in [6f4369666e] Add assert()s that verify that cursor numbers on subqueries are always greater than outer cursor numbers. Except, this is not always true in the presence of query flattening. We might need to relax that constraint. This branch will probably become a dead-end. For now it is saved for reference. (check-in: [6f4369666e] user: drh branch: well-ordered-cursors, size: 222719)
2021-11-07
23:33
[f96439c1c5] 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: 221067)
2021-10-27
17:15
[b882787df2] part of check-in [947805719b] Fix the build for various the OMIT-everything compile-time option. No impact on regular builds. (check-in: [947805719b] user: drh branch: trunk, size: 221058)
2021-10-07
20:46
[529f7eca28] 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: 221052)
17:43
[19c0b5c7af] 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: 220450)
13:40
[a2ceac9ee8] 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: 220058)
2021-10-04
22:34
[ac2bc8eef5] part of check-in [32f33f3569] Fix harmless static-analyzer warnings. (check-in: [32f33f3569] user: drh branch: trunk, size: 219730)
15:08
[b2d8333a1b] part of check-in [1ebcde72e2] Fix harmless static analyzer warnings. (check-in: [1ebcde72e2] user: drh branch: trunk, size: 219705)
2021-10-02
17:46
[ebc76aa98b] part of check-in [918c22e82a] Fix a harmless static-analyzer warning in sqlite3ExprCode(). (check-in: [918c22e82a] user: drh branch: trunk, size: 219690)
2021-09-29
18:33
[82797e5d82] part of check-in [a0df216f7c] Fix another problem with ALTER TABLE and vector UPDATE statements within triggers. (check-in: [a0df216f7c] user: dan branch: trunk, size: 219673)
14:01
[7628ab5359] part of check-in [bbfd083c26] Improved testability of changes from check-in [255b0eeed113d83b]. (check-in: [bbfd083c26] user: drh branch: trunk, size: 219610)
2021-09-27
15:44
[f2e0f5dd07] part of check-in [255b0eeed1] Fix a problem in ALTER TABLE causing table or column references in sub-selects ton the RHS of a vector SET clause in an UPDATE within a trigger (i.e. "SET (a,b) = ( (SELECT...), <expr> )"). (check-in: [255b0eeed1] user: dan branch: trunk, size: 219610)
2021-09-25
17:07
[38597afb00] part of check-in [70c221c5cf] Add const to parameters on various internal interfaces. (check-in: [70c221c5cf] user: drh branch: trunk, size: 219531)
2021-09-24
16:14
[5316aff621] part of check-in [a3c71a673d] Add lots of new "const" on internal function parameters. There is opportunity for many more - this is a work in progress. (check-in: [a3c71a673d] user: drh branch: trunk, size: 219438)
2021-09-17
13:07
[ce736caaf1] part of check-in [b7e00ef805] Make the affinity() function available even if compiled without SQLITE_DEBUG. Surround the implementation of all test-only SQL functions with #ifndef SQLITE_UNTESTABLE. (check-in: [b7e00ef805] user: drh branch: trunk, size: 219128)
2021-08-05
15:27
[e98375fc63] part of check-in [832ac4c1ee] Store the collating sequence name for each column of a table as an extension to the column name, for an additional savings in the heap space needed to hold the schema. (check-in: [832ac4c1ee] user: drh branch: trunk, size: 219082)
2021-08-02
18:03
[0d541b9f9e] 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: 219070)
16:41
[4e2878324f] part of check-in [bbb6759bcf] Refactor the Table object to reduce its memory footprint. (check-in: [bbb6759bcf] user: drh branch: trunk, size: 219019)
2021-07-31
20:30
[84691a9d63] part of check-in [8646547e54] Refactor the way that DEFAULT expressions are stored on columns, in order to save memory in the common case where the column has no DEFAULT clause. (check-in: [8646547e54] user: drh branch: trunk, size: 219019)
2021-07-29
00:33
[b1bcf90afb] part of check-in [4d1dbfa35c] Remove ALWAYS() macros that can be true if the internal test function implies_nonnull_row() is used in the result set of a query and contains comparison operator against a computed column. dbsqlfuzz 4c34db5bff6247f33ee49e341a1f3018e72be0a0. (check-in: [4d1dbfa35c] user: drh branch: trunk, size: 218821)
2021-07-07
15:52
[62b6d0ac8e] part of check-in [f586c06a5d] Fix a recently introduced segfault that might occur if a sub-select were used as a term on the RHS of an IN(...) operator for which the LHS is a row-value. (check-in: [f586c06a5d] user: dan branch: trunk, size: 218837)
13:53
[69ec84d794] part of check-in [6b22f4e71d] Improve the error message in cases where there is a row-value on the LHS of an IN() operator, the RHS is a list (not a sub-select) and at least one element of the list is not a row-value with the correct number of elements. (check-in: [6b22f4e71d] user: dan branch: trunk, size: 218794)
2021-07-06
20:44
[ab3935a79d] part of check-in [981d230ece] Handle "<vector> IN (<vector>, <vector> ...)" in the same way as "<vector> IN (VALUES(<vector>, <vector>, ...)". (check-in: [981d230ece] user: dan branch: trunk, size: 218721)
2021-07-05
02:40
[5c532072d9] part of check-in [2547cfe38f] Improved rebustness in sqlite3ExprListDup() when it contains a vector assignment from an UPDATE where the initial term is omitted. This can happen during a UNION ALL query flattening while processing a virtual table update in which the first term of the vector is repeated. Forum post 16ca0e9f32. (check-in: [2547cfe38f] user: drh branch: trunk, size: 217333)
01:11
[2d40c29e10] 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: 217383)
2021-06-30
11:53
[d571a83580] part of check-in [763fdec5b3] Do not enforce the SQLITE_LIMIT_FUNCTION_ARG limit for internally generated SQL. This prevents problems with statements like ALTER TABLE if the function argument limit is set too low. Forum post 17735aa21f3ddab2. (check-in: [763fdec5b3] user: drh branch: trunk, size: 217348)
2021-06-11
11:14
[30a2abf526] part of check-in [8b1f9a51e9] Fix problems with ALTER TABLE and schemas that contain views with some recursive CTEs, or CTEs that reference other CTEs. Forum post 9d965f2956. (check-in: [8b1f9a51e9] user: dan branch: trunk, size: 217320)
2021-06-04
16:11
[57534c739e] part of check-in [83aca2d870] Fix harmless compiler warnings. (check-in: [83aca2d870] user: drh branch: trunk, size: 217306)
2021-06-03
18:56
[f175b34cc0] part of check-in [4a587c3492] Fix a case where combining row-value UPDATE FROM syntax with window functions over aggregates can cause an error. dbsqlfuzz ae4516bff08d736f203f09934e2f4d31e0b3e7ce (check-in: [4a587c3492] user: dan branch: trunk, size: 217298)
2021-05-26
18:46
[09f8ae1421] part of check-in [f30fb19ff7] Take care that the code is not generated for the same Select object more than once, as transformations that apply during the first pass might cause problems for the second pass. dbsqlfuzz 836b625cd8a41809ef80fc7ebaa6554357bcb463. (check-in: [f30fb19ff7] user: drh branch: trunk, size: 217254)
2021-05-24
11:35
[fcca84eb7b] part of check-in [dd56fbe0cf] Fix the TreeView module so that it works with the TK_ERROR exprssion. Also fix an assert() that was failing due to the recent TK_ERROR addition. (check-in: [dd56fbe0cf] user: drh branch: trunk, size: 217154)
00:17
[d4fd185035] part of check-in [0be6b6c9f7] Additional defenses (above and beyond [b986600520696b0c]) to prevent an invalid subquery from causing problems downstream. If an error is found while analyzing a subquery expression, change the expression to TK_ERROR so inhibit further processing on that expression. dbsqlfuzz cf624b8c0484c66e0f552bf6475e3e3f2c22b24e. (check-in: [0be6b6c9f7] user: drh branch: trunk, size: 217086)
2021-05-20
23:25
[c56c74d40d] part of check-in [240f7494bf] Fix a faulty assert() statement in sqlite3ExprListDup(). This is a continuation of the fix at [59812e7ef705226c]. (check-in: [240f7494bf] user: drh branch: trunk, size: 216890)
2021-05-04
12:07
[1d5171fe60] 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: 216828)
2021-04-26
21:00
[70e2cf6e27] part of check-in [63c50fbdee] Add ALWAYS() to branches that are no longer reachable due to recent enhancements. (check-in: [63c50fbdee] user: drh branch: trunk, size: 217228)
15:28
[01ae116c42] part of check-in [e99faf4f82] More aggressive detection of OOM errors in resolveAlias(). dbsqlfuzz 7f96832c2ef7ee472022ed805b064e55e41094b2 (check-in: [e99faf4f82] user: drh branch: trunk, size: 217220)
2021-04-23
00:59
[a658bd4ee3] part of check-in [fac12115a9] Improved OOM detection in sqlite3ExprCheckIN(). dbsqlfuzz 46ae2d8f473ac672f3042cc14ab67aeab9ffa6c2 (check-in: [fac12115a9] user: drh branch: trunk, size: 217157)
2021-04-20
12:14
[2b79c16f16] part of check-in [a61c0e6b78] In the sqlite3SelectDup() routine, do not do an incomplete duplication due to OOM. This in turn requires several new NEVER() and ALWAYS() macros for unreachable branches. (check-in: [a61c0e6b78] user: drh branch: trunk, size: 217125)
00:09
[626c74402e] part of check-in [8f339f4300] Add two ALWAYS() macros for branches no longer reachable due to the previous check-in. Later: Dbsqlfuzz quickly found ways to make both of these ALWAYS() conditionals false. (check-in: [8f339f4300] user: drh branch: mistake, size: 216840)
2021-04-16
22:53
[f1e3474d69] part of check-in [ab83a99899] Performance optimizations in the code generator, especially in name resolution. (check-in: [ab83a99899] user: drh branch: trunk, size: 216832)
12:33
[17972f20c9] part of check-in [6af4e6d054] Remove an ALWAYS() from a branch in sqlite3ExprAddCollateToken() which can be false following an OOM. dbsqlfuzz 9e8516bf1e786c84e520ae43141b75b7399f8618. (check-in: [6af4e6d054] user: drh branch: trunk, size: 216832)
2021-04-14
11:20
[f18126b29b] part of check-in [427e83eb58] Fix an assert() in the code generator for expressions so that it is valid even after an OOM. (check-in: [427e83eb58] user: drh branch: trunk, size: 216840)
2021-04-12
23:18
[818ede599e] part of check-in [59812e7ef7] Fix a faulty assert() inside sqlite3ExprDup(). (check-in: [59812e7ef7] user: drh branch: trunk, size: 216812)
2021-04-06
12:50
[4fd60d0e74] part of check-in [8d46df7313] Earlier detection and handling of OOM problems. dbsqlfuzz 39f2963ea5559aa3a16e24e0e3cb42aac85a7371. (check-in: [8d46df7313] user: drh branch: trunk, size: 216738)
2021-04-04
12:52
[9b03ea5c8a] part of check-in [35cf295e02] Make shell .parameter feature type-agnostic. Hush harmless compiler warning. (check-in: [35cf295e02] user: larrybr branch: trunk, size: 216669)
2021-03-31
13:51
[cfab1113f9] part of check-in [77a30f3f7a] Defer deletion of expressions that are optimized out by the AND optimizer in the sqlite3ExprAnd() routine until the corresponding Parse object is deleted. This avoids a dangling pointer in AggInfo if sqlite3ExprAnd() is invoked by the push-down optimization. The dangling pointer appears to be harmless in release builds, only showing up in debug builds. Problem found by dbsqlfuzz. (check-in: [77a30f3f7a] user: drh branch: branch-3.35, size: 215402)
13:31
[1bf346b7ef] part of check-in [c36b43589a] Defer deletion of expressions that are optimized out by the AND optimizer in the sqlite3ExprAnd() routine until the corresponding Parse object is deleted. This avoids a dangling pointer in AggInfo if sqlite3ExprAnd() is invoked by the push-down optimization. The dangling pointer appears to be harmless in release builds, only showing up in debug builds. Problem found by dbsqlfuzz. (check-in: [c36b43589a] user: drh branch: trunk, size: 216663)
2021-03-29
19:47
[1a63403c5b] part of check-in [ebe100de55] Fix VDBE coverage macros. (check-in: [ebe100de55] user: drh branch: compare-opcode-opt, size: 216209)
18:53
[a1403e4cf2] part of check-in [380b46054b] Omit the SQLITE_STOREP2 and SQLITE_KEEPNULL options from the comparison opcodes, allowing them to run faster. This required refactoring the vector comparison logic, which in turn required changing OP_ElseNotEq into OP_ElseEq. (check-in: [380b46054b] user: drh branch: compare-opcode-opt, size: 216209)
14:40
[39f37546a8] part of check-in [93781b6f10] Add the OP_ZeroOrNull opcode and use it to compute boolean values for scalar comparisons, rather than the SQLITE_STOREP2 parameter to the comparison opcode. (check-in: [93781b6f10] user: drh branch: compare-opcode-opt, size: 215867)
2021-03-23
14:27
[030391f7a1] part of check-in [1d3c4662c2] Add the ExprList.nAlloc column and use it to make the sqlite3ExprListAppend() routine much faster. (check-in: [1d3c4662c2] user: drh branch: trunk, size: 215636)
2021-03-19
14:51
[984bb2ded0] part of check-in [e3a78b2a23] Restore the NEVER() that was taken out by [f481636f1a0333c6] because that case is no longer reachable after the previous check-in. (check-in: [e3a78b2a23] user: drh branch: trunk, size: 214955)
2021-03-10
16:35
[d681f0b48b] part of check-in [7b65fb9f7b] Do not confuse the constant SQLITE_MAX_ATTACHED with the maximum number of schemas. Add the new SQLITE_MAX_DB constant for the maximum number of schemas. Forum post a006d86f72. (check-in: [7b65fb9f7b] user: drh branch: trunk, size: 214948)
2021-02-21
23:44
[6793c836af] part of check-in [ba59159fbe] Materialize any CTE that is used more than once. (check-in: [ba59159fbe] user: drh branch: as-materialize-redux, size: 214954)
21:04
[3a756aae04] 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: 214894)
2021-02-16
16:32
[fe76d3b9f6] 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: 214958)
2021-01-16
20:22
[47c85263e6] 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: 214930)
2020-11-08
20:44
[0d196ed5a2] 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: 214530)
2020-10-02
12:42
[2cfe739c81] part of check-in [80ecdb3da4] Fix a faulty assert() statement. Add new test cases. (check-in: [80ecdb3da4] user: drh branch: trunk, size: 214479)
2020-08-20
16:25
[4c8b9c2942] part of check-in [5f58dd3a19] Fix a crash that could occur in SQLITE_MAX_EXPR_DEPTH=0 builds when processing SQL containing syntax errors. (check-in: [5f58dd3a19] user: dan branch: trunk, size: 214403)
2020-08-19
23:32
[616244b0f9] part of check-in [871f2ddcfb] Do not skip over TK_IF_NULL_ROW operators when bypassing TK_COLLATE operators. Fix to check-in [ac31edd3eeafcef4] which was itself a fix for ticket [45f4bf4eb4ffd788]. (check-in: [871f2ddcfb] user: drh branch: trunk, size: 214374)
2020-08-10
14:18
[58c06940d9] part of check-in [9d670a3183] Fix harmless compiler warnings that surface in newer versions of GCC. (check-in: [9d670a3183] user: drh branch: trunk, size: 214419)
2020-07-29
16:18
[3ace378960] 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: 214190)
2020-07-13
15:35
[90039a0436] part of check-in [9cb03beae4] Add back the ALWAYS() macro that was removed by [f7a74f89dbd58b47] as the condition is no longer reachable due to the previous check-in. (check-in: [9cb03beae4] user: drh branch: trunk, size: 214193)
2020-07-10
21:43
[73bd71448a] part of check-in [1e87da9c93] Remove unnecessary code from the window functions implementation. (check-in: [1e87da9c93] user: drh branch: trunk, size: 214185)
2020-06-26
04:34
[a3ab84399b] part of check-in [cc888878ea] Fix a possible null pointer deref following OOM. Discovered by dbsqlfuzz. (check-in: [cc888878ea] user: drh branch: trunk, size: 214186)
2020-06-19
13:33
[c6b723ffef] part of check-in [9536fa0ae0] Further refactoring of the schema table name. (check-in: [9536fa0ae0] user: drh branch: trunk, size: 214124)
2020-06-17
12:37
[96cf4c2996] part of check-in [d55b8e7993] Merge miscellaneous fixes from trunk into the 3.32 branch. (check-in: [d55b8e7993] user: drh branch: branch-3.32, size: 214106)
2020-06-13
03:18
[36bb737d2c] part of check-in [ad738286e2] Identifiers "TRUE" and "FALSE" cannot take on their boolean constant values if they are operands of the "." operator. (check-in: [ad738286e2] user: drh branch: trunk, size: 214124)
2020-06-10
11:18
[516522463b] part of check-in [dafd2466a1] Ensure that aggregate functions that (a) are part of SELECT statements with no FROM clause and (b) have one or more scalar sub-selects as arguments are assigned to the correct aggregate context. Fix for ticket [7c6d876f84e6e7e2] (check-in: [dafd2466a1] user: dan branch: branch-3.32, size: 214052)
2020-06-09
22:11
[54c0e48fda] part of check-in [35a2368417] Mark an always-true conditional with ALWAYS(). (check-in: [35a2368417] user: drh branch: agg-context-fix, size: 214070)
17:45
[a72ee44af0] part of check-in [16a41fa8c4] Ensure that aggregate functions that (a) are part of SELECT statements with no FROM clause and (b) have one or more scalar sub-selects as arguments are assigned to the correct aggregate context. (check-in: [16a41fa8c4] user: dan branch: agg-context-fix, size: 214062)
14:56
[87f1d6b0b2] part of check-in [9a4cc1dbf2] Crazy experimental change to refcount the AggInfo objects. (check-in: [9a4cc1dbf2] user: drh branch: refcount-agginfo, size: 213277)
13:38
[5afb8dd59d] part of check-in [a53bdd311c] Give the expression pointer fields of AggInfo distinctive names in order to simplify tracking of all their uses. (check-in: [a53bdd311c] user: drh branch: trunk, size: 213440)
13:17
[151248f87c] part of check-in [04867cba97] Persist AggInfo expressions before deleting them when omitting the LIMIT clause in a subquery. One possible fix for ticket [7c6d876f84e6e7e2]. (check-in: [04867cba97] user: drh branch: tkt-7c6d876f84e6e7e2, size: 213541)
2020-06-08
12:49
[6ac12b2880] part of check-in [44a58d6cb1] When an Expr object is changed and that Expr is referenced by an AggInfo, then also update the AggInfo. Also, persist all AggInfo objects until the Parse object is destroyed. This is a new fix for ticket [c8d3b9f0a750a529]. (check-in: [44a58d6cb1] user: drh branch: branch-3.32, size: 213422)
2020-06-07
22:44
[217bee94b6] part of check-in [8b23d80271] Fix minor OOM problems. (check-in: [8b23d80271] user: drh branch: persist-agginfo, size: 213433)
20:18
[3ee54650bb] part of check-in [3c840b4df3] AggInfo objects might be referenced even after the sqlite3Select() function that created them has exited. So AggInfo cannot be a stack variable. And it must not be freed until the Parse object is destroyed. (check-in: [3c840b4df3] user: drh branch: persist-agginfo, size: 213377)
17:33
[23434d32b9] part of check-in [7682d8a768] Alternative fix to ticket [c8d3b9f0a750a529]: Prior to deleting or modifying an Expr not that is referenced by an AggInfo, modify the AggInfo to get its own copy of the original Expr. (check-in: [7682d8a768] user: drh branch: persist-agginfo, size: 213426)
2020-06-05
15:56
[2994105183] part of check-in [79eff1d038] Do parse-tree transformations required for window functions prior to running aggregate function analysis. Fix for ticket [c8d3b9f0a750a529]. (check-in: [79eff1d038] user: drh branch: branch-3.32-early-winfunc-rewrite, size: 210949)
14:25
[2c5582c504] part of check-in [13ffedab9b] ALWAYS() and NEVER() macros added due to unreachable branches arising from the previous check-in. (check-in: [13ffedab9b] user: drh branch: early-winfunc-rewrite, size: 210960)
14:10
[ab412878f3] part of check-in [fe702aa08c] Move the parse tree rewrite for window functions earlier in the process, before sqlite3ExprAnalyzeAggregates() has run. Add new assert()s to verify that aggregate analysis always remains valid until the end of SELECT processing. (check-in: [fe702aa08c] user: drh branch: early-winfunc-rewrite, size: 211361)
2020-05-27
12:44
[4750c6b634] part of check-in [eeb53e2195] Small performance improvement and size reduction in the expression code generator. (check-in: [eeb53e2195] user: drh branch: trunk, size: 211282)
00:02
[4d5ca337ac] part of check-in [5b560ec490] Change a datatype from i16 to int to appease Converity and help eliminate a false-positive. (check-in: [5b560ec490] user: drh branch: trunk, size: 211320)
2020-05-26
10:54
[7a388ddfac] part of check-in [4ec8a5a203] Innocuous changes to help Coverity avoid false-positives. (check-in: [4ec8a5a203] user: drh branch: trunk, size: 211320)
2020-05-25
15:19
[b46669d9fc] part of check-in [572105de1d] Defensive code that tries to prevent a recurrence of problems like the one described in ticket [7a5279a25c57adf1] (check-in: [572105de1d] user: drh branch: trunk, size: 211271)
2020-05-24
03:01
[30bdb15abf] part of check-in [dac438236f] Move some utility Walker callbacks into the walker.c source file, as they seem to belong there better. (check-in: [dac438236f] user: drh branch: trunk, size: 211085)
2020-05-13
18:03
[8eed44d9de] part of check-in [fce173cd21] Implement the IIF(x,y,z) SQL function that is short-hand for "CASE WHEN x THEN y ELSE z END". For compatibility with SQL Server. (check-in: [fce173cd21] user: drh branch: trunk, size: 211371)
2020-05-08
19:02
[2918cac044] part of check-in [3a16c0ce4d] Release some restrictions on columns added by ALTER TABLE so that they only apply if the table contains one or more rows. (check-in: [3a16c0ce4d] user: drh branch: trunk, size: 211147)
2020-04-25
15:01
[d1e1d42cbd] part of check-in [ac31edd3ee] Ensure affinity is not discarded from a view column if the view appears on the rhs of a LEFT JOIN. Fix for [45f4bf4e]. (check-in: [ac31edd3ee] user: dan branch: trunk, size: 211095)
2020-04-07
01:18
[b292bdecd6] part of check-in [230556e859] The ALTER TABLE fix of check-in [7e5ad8e0ab7ee91a] is no longer needed due to the changes at check-in [4cf8721f5ceb1fda]. But, we keep the defense in place as an assert() for extra safety. (check-in: [230556e859] user: drh branch: trunk, size: 211008)
00:54
[daac9c5a0a] part of check-in [c95c4cda46] Remove dead code that was added during initial development of RENAME COLUMN but never actually served a purpose. (check-in: [c95c4cda46] user: drh branch: trunk, size: 210944)
2020-04-06
16:37
[29b4aedca8] part of check-in [4cf8721f5c] When running ALTER TABLE, avoid adding some internally generated tokens to the token map to improve performance on schemas with nested views. (check-in: [4cf8721f5c] user: dan branch: trunk, size: 211071)
2020-04-04
00:29
[7eec20f912] part of check-in [43612157f8] In the push-down optimization, do not substitute columns that have previously been identified as being constant by the propagate-constants optimization. Fix for ticket [51166be0159fd2ce]. Also, avoid factoring out constant expressions on the LHS of an IN(...) operator, as the IN(...) operation may affect the affinity of these values. Fix for [fd1bda016d1]. (check-in: [43612157f8] user: drh branch: branch-3.31, size: 209338)
2020-04-03
19:37
[74973866b0] part of check-in [98d56b4a34] Avoid factoring out constant expressions on the LHS of an IN(...) operator, as the IN(...) operation may affect the affinity of these values. Fix for [fd1bda016d1]. (check-in: [98d56b4a34] user: dan branch: trunk, size: 210879)
2020-03-26
00:29
[226293a02b] part of check-in [27936e6884] Reinstate the optimization that converts "x IN (y)" into "x==y". (check-in: [27936e6884] user: drh branch: trunk, size: 210537)
2020-03-11
19:41
[ed718ee220] part of check-in [d7f1848997] Rename sqlite3ExprCodeAtInit() to sqlite3ExprCodeRunJustOnce(). Other changes to make the new code cleaner. Test cases added. (check-in: [d7f1848997] user: drh branch: do-not-factor-functions, size: 210816)
17:58
[137db48827] part of check-in [97a18a5cd7] Do not factor out constant functions into the initialization section at the end of the prepared statement, be cause if they throw an exception, it will abort the statement even if the function is never called. Better to put constant functions in an OP_Once block. (check-in: [97a18a5cd7] user: drh branch: do-not-factor-functions, size: 210942)
02:04
[cddb6c7ccd] part of check-in [fb5a8a9edd] This variant to the fix for ticket [e0c2ad1aa8a9c691] uses fewer CPU cycles. (check-in: [fb5a8a9edd] user: drh branch: trunk, size: 210515)
2020-03-10
19:24
[117997508b] part of check-in [5f60b527b9] Enhanced detection logic for preventing the use of static schema expressions by code generating routines. (check-in: [5f60b527b9] user: drh branch: trunk, size: 210310)
19:23
[d8845931d5] part of check-in [2b750b0f74] Prevent the read-only expressions held in the schema from being passed down into code generating subroutines where they might be changed. Pass a copy of the expression instead. (check-in: [2b750b0f74] user: drh branch: branch-3.31, size: 208996)
13:35
[6454893aab] part of check-in [03d201c041] Make a copy of the expression that defines a value of a generated column before sending it to the code generator routines. (check-in: [03d201c041] user: drh branch: trunk, size: 209677)
11:50
[92fa379dab] part of check-in [101f7dea75] Apply the correct affinity transformations when pulling values off of the sorter index used for GROUP BY. Ticket [e0c2ad1aa8a9c691] (check-in: [101f7dea75] user: drh branch: trunk, size: 209673)
02:57
[4efd019be6] part of check-in [a2d6f108c5] The sqlite3ExprCodeFactorable() routine should make a copy of non-factorable expressions, as they might be coming from a DEFAULT or generated column in a table constraint. (check-in: [a2d6f108c5] user: drh branch: trunk, size: 209517)
2020-02-17
19:25
[4b25db7f94] part of check-in [abc473fb8f] A better (smaller and faster) solution to ticket [4374860b29383380]. (check-in: [abc473fb8f] user: drh branch: trunk, size: 209449)
00:12
[af70e9a131] 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: 209320)
2020-02-04
01:41
[6617ca8d4c] part of check-in [29a969d6b1] Extend the OP_Copy-coalesce optimization fix of check-in [b36126c1889e323c] so that it is also correctly disabled by the CASE operator. Ticket [9d3666754ac37d5a]. (check-in: [29a969d6b1] user: drh branch: trunk, size: 209170)
2020-01-09
20:44
[003c59158b] part of check-in [5720924cb0] Merge in the untrusted-schema enhancements. See doc/trusted-schema.md for details. (check-in: [5720924cb0] user: drh branch: trunk, size: 208924)
20:11
[d8854187a7] part of check-in [83dc55679a] Fix an assert() in window.c that could fail with some obscure SELECT statements that use window functions. Ticket [678ecf429f8d1a5f] (check-in: [83dc55679a] user: dan branch: trunk, size: 206607)
2020-01-08
22:22
[c5ff3bb83e] part of check-in [da434dc149] Block edgy functions used in DEFAULT constraints. (check-in: [da434dc149] user: drh branch: new-security-options, size: 208832)
20:37
[b1cb02a4b4] part of check-in [30882ca80f] Performance improvements and test cases added. Allow "PRAGMA trusted_schema=ON" (check-in: [30882ca80f] user: drh branch: new-security-options, size: 208004)
17:28
[bea12b3380] part of check-in [1da802d54b] Check for whether or not it is safe to use non-innocuous functions as the function is being coded, not when its name is resolved. (check-in: [1da802d54b] user: drh branch: new-security-options, size: 207988)
2020-01-06
18:59
[631b1f24d0] part of check-in [b3f2696705] Backout change [4d0b9109f7a5312d4e1] because the conditional it added is no longer reachable due to check-in [1409758f72c0206c]. (check-in: [b3f2696705] user: drh branch: trunk, size: 206515)
2020-01-04
15:21
[e25df342c1] part of check-in [9da48a5ca6] Fix a false-positive in the register validity tracking logic by moving the temporary register release call before the jump that uses that temporary register. (check-in: [9da48a5ca6] user: drh branch: trunk, size: 206515)
2020-01-03
14:16
[70af050710] part of check-in [b36126c188] Fix the OP_Copy-coalesce optimization so that if the previous row happens to end with OP_Copy but is not a candidate for the optimization due to jumps, then the optimization is correctly bypassed. (check-in: [b36126c188] user: drh branch: trunk, size: 206515)
02:20
[53106d7ca6] part of check-in [ff9492d3ff] When generating the name of a view (or common table expression) because the SQL does not specify a name, avoid the names "true" and "false" which might be confused for the boolean literals of the same name, leading to an inconsistent abstract syntax tree. (check-in: [ff9492d3ff] user: drh branch: trunk, size: 206308)
2020-01-02
21:41
[bef2f4c18a] part of check-in [bd57e6d923] Merge the latest enhancements from trunk. (check-in: [bd57e6d923] user: drh branch: two-size-lookaside, size: 205940)
17:46
[d74209d6ab] part of check-in [937be22106] Have the OP_ReleaseReg opcode also invalidate the registers if P5 is non-zero. (check-in: [937be22106] user: drh branch: trunk, size: 205955)
02:50
[75985a13af] part of check-in [435c272dcf] Use OP_Copy instead of OP_SCopy to move the results of a scalar subquery. (check-in: [435c272dcf] user: drh branch: trunk, size: 205946)
2020-01-01
21:14
[7f3a19d0d4] part of check-in [4edddcc0bc] When generating code for a subquery, make a copy of the Select object and generate the code out of the copy, in case the code generator makes modifications to expression and the Select object needs to be reused. (check-in: [4edddcc0bc] user: drh branch: trunk, size: 206294)
16:43
[e76660a57f] part of check-in [07e504d517] Fix the sqlite3ExprImpliesNonNullRow() routine so that it correctly handles a numeric comparison of two AND subexpressions. (check-in: [07e504d517] user: drh branch: trunk, size: 205837)
15:43
[971e442fd5] part of check-in [473892a8ec] New test-only SQL functions: implies_nonnull_row(), expr_compare(), and expr_implies_expr(). The SQLITE_TESTCTRL_INTERNAL_FUNCTIONS test-control is modified to toggle internal function access on and off for a single database connection. (check-in: [473892a8ec] user: drh branch: trunk, size: 205823)
13:55
[afde0ea106] part of check-in [586a65a28f] Factor out code generation for in-line SQL functions into a separate routine inside of expr.c. (check-in: [586a65a28f] user: drh branch: trunk, size: 204648)
2019-12-31
14:49
[8d4b6ac02f] part of check-in [39d5557937] Merge recent enhancements from trunk. (check-in: [39d5557937] user: drh branch: two-size-lookaside, size: 203904)
2019-12-30
20:42
[e3bfa38e34] part of check-in [40d10e7aad] Put a NEVER() on a defensive branch. (check-in: [40d10e7aad] user: drh branch: trunk, size: 203926)
06:55
[3584e19c22] part of check-in [a9e0354c99] In ALTER TABLE, rename columns and tables in expressions that are optimized out by the "AND 0" optimization. Doing this also fixes an otherwise harmless assert() failure. (check-in: [a9e0354c99] user: dan branch: trunk, size: 203919)
2019-12-28
02:40
[de4fa05000] part of check-in [4d0b9109f7] Convert an assert() back into a conditional. The conditional was converted into an assert() by check-in [6ae4ad6ebee4db88] (2009-05-28) because we were unable to find a test case for it. Yongheng's fuzzer just now found that test case. (check-in: [4d0b9109f7] user: drh branch: trunk, size: 203908)
2019-12-27
20:06
[188a8c039c] part of check-in [597896ed0a] Remove a NEVER() that is no longer true. Fix for [36ffedcb9]. (check-in: [597896ed0a] user: dan branch: trunk, size: 203908)
08:57
[a01bfcf51b] part of check-in [1ffc045d2b] When determining if an aggregate within a sub-query should be processed as part of the sub-query or an outer query, consider any FILTER clause in the same way as the arguments to the aggregate. (check-in: [1ffc045d2b] user: dan branch: trunk, size: 203836)
2019-12-25
23:54
[3a27de3630] part of check-in [fa58aad48a] When the sqlite3WindowRewrite() routine detects and error, have it convert the SELECT statement into just "SELECT null" so that it does not leave the parse tree in a goofy state that can cause problems with subsequent code before the stack has a chance to unwind and report the error. Ticket [d87336c81c7d0873] (check-in: [fa58aad48a] user: drh branch: trunk, size: 203701)
2019-12-24
15:01
[518e46716b] part of check-in [0a70f5ddaf] Extra defense against problems following an OOM. dbsqlfuzz find. Also import the latest dbsqlfuzz test cases. (check-in: [0a70f5ddaf] user: drh branch: trunk, size: 203639)
2019-12-23
15:17
[ba7bed1c4f] part of check-in [2f17974912] Fix a case in which SQLite could fail to identify "x BETWEEN ? AND ?" being true as implying that x is not null. Ticket [dfd66334]. (check-in: [2f17974912] user: dan branch: trunk, size: 203492)
02:18
[0f38befff4] part of check-in [36fdeb4f0a] Enhance the sqlite3VdbeMemAboutToChange() shallow-copy validation mechanism by adding the new OP_ReleaseReg opcode to tell MemAboutToChange() that a range of registers is no longer needed so that the source register can be freely changed. This is a change to debugging and test builds only and does not impact release builds. Fix for ticket [c62c5e58524b204d] and [5ad2aa6921faa1ee]. The previous fix to ticket [5ad2aa6921faa1ee] is backed out by this change since this change is a better fix. (check-in: [36fdeb4f0a] user: drh branch: trunk, size: 203407)
2019-12-22
23:48
[210669714d] part of check-in [9ab985a9c8] Change the code generator for the IN operator so that it avoids creating OP_Eq and OP_Ne opcode with the same P1 and P3 arguments. This enables us to back out check-in [ddb17d92df194337] and also fix ticket [188f912b51cd802]. (check-in: [9ab985a9c8] user: drh branch: trunk, size: 203175)
20:29
[59c52601a6] part of check-in [89a9dad633] Make a hard copy of strings in constraint checks prior to applying OP_RealAffinity, to avoid problems with a pointer accounting assert. This change is not strictly necessary - the correct answer is obtained without it and no UB occurs - however the pointer accounting asserts are useful to prevent other problems so it is a simple matter to bring this piece into compliance. Ticket [5ad2aa6921faa1ee] (check-in: [89a9dad633] user: drh branch: trunk, size: 202868)
18:06
[b7f3be57e7] part of check-in [a982e6434c] When parsing a CREATE TABLE from the sqlite_master table, delete the CHECK constraints if there are any errors, since there might otherwise be attempts to use those CHECK constraints if PRAGMA writable_schema=ON is set. This undoes the fix in check-in [ea721b34477ab8b4] for a more general solution. (check-in: [a982e6434c] user: drh branch: trunk, size: 202869)
2019-12-21
14:09
[d1031aaefc] part of check-in [ea721b3447] When a corrupt schema is loaded using writable_schema=ON, the CHECK constraints (or other expressions in the table definition) might not be fully resolved. Ensure that the code generator can deal with this if the table is subsequently used in a DML statement. dbsqlfuzz find. (check-in: [ea721b3447] user: drh branch: trunk, size: 203082)
2019-12-20
20:45
[f384985519] part of check-in [728ad39e3b] Apply real affinity to generated columns of type REAL that are extract from an index. Ticket [e0a8120553f4b082] (check-in: [728ad39e3b] user: drh branch: trunk, size: 202872)
2019-12-19
20:37
[5099de2d6c] part of check-in [e2bddcd4c5] When an error occurs while rewriting the parser tree for window functions in the sqlite3WindowRewrite() routine, make sure that pParse->nErr is set, and make sure that this shuts down any subsequent code generation that might depend on the transformations that were implemented. This fixes a problem discovered by the Yongheng and Rui fuzzer. (check-in: [e2bddcd4c5] user: drh branch: trunk, size: 202715)
2019-12-18
21:22
[8f873d6a41] part of check-in [062e00c4d7] Change an unreachable testcase() into an assert() (check-in: [062e00c4d7] user: drh branch: trunk, size: 202684)
01:31
[a0330e4035] part of check-in [9bdd57cb9a] Remove an assert() in the code generator that can fail due to an invalid INSERT statement. The same assert() appears again in the VDBE and will fire there if the problem persists in an SQL statement that does not contain errors. Gramfuzz find. (check-in: [9bdd57cb9a] user: drh branch: trunk, size: 202422)
2019-12-16
16:52
[6346d23442] part of check-in [0271491438] When a table is part of a LEFT JOIN and should be a completely NULL row due to the semantics of a LEFT JOIN, make sure any generated columns on that row evaluate to NULL. Ticket [3b84b42943644d6f] (check-in: [0271491438] user: drh branch: trunk, size: 202470)
2019-12-14
17:43
[7c21a77ca0] part of check-in [2401e04730] Do not set OP_Column flags on the instructions generated by sqlite3ExprCodeGetColumn() if the opcode generated is not really an OP_Column, which might happen if the column is virtual. Fix for ticket [b439bfcfb7deedc6] (check-in: [2401e04730] user: drh branch: trunk, size: 202233)
15:01
[530df5b8b6] part of check-in [f8e876c82a] Make the sqlite3ExprCodeTarget() expression code generator routine robust in the face of unknown opcodes - it simply generates a NULL value. (check-in: [f8e876c82a] user: drh branch: trunk, size: 202176)
2019-12-13
00:49
[a4c16d4eed] part of check-in [59d0f3afe5] Tie up the loose ends in the ExprList size reduction. (check-in: [59d0f3afe5] user: drh branch: exprlist-size-reduction, size: 202153)
2019-12-12
22:11
[828bc6ae0c] part of check-in [fdda76cfb0] Work toward reducing the incremental size of an ExprList object to 24-byte per entry, from 32-bytes (on a 64-bit machine). This helps the new mini-lookaside allocator to run better by avoiding excessive reallocs. The current change mostly works, but still has a few loose ends to tie up. This check-in is merely a snapshot to save my work. (check-in: [fdda76cfb0] user: drh branch: exprlist-size-reduction, size: 202112)
20:22
[eefc9abca2] part of check-in [d3783357f8] Change the name of the Expr.a.zName field to zEName, so that it has a name that is distinct from other fields and variables and is hence easier to grep for. (check-in: [d3783357f8] user: drh branch: two-size-lookaside, size: 202180)
2019-12-07
00:22
[947911a182] part of check-in [27c0fdab1b] Fix a problem with foreign keys and generated columns discovered by Manuel Rigger. (check-in: [27c0fdab1b] user: drh branch: trunk, size: 202168)
2019-12-04
19:45
[208f7345cf] part of check-in [35f0b5a8c7] Window functions are never constant. (check-in: [35f0b5a8c7] user: drh branch: trunk, size: 202185)
2019-11-21
18:28
[be8060167e] part of check-in [8b12e95fec] Fix a problem that comes up when using generated columns that evaluate to a constant in an index and then making use of that index in a join. (check-in: [8b12e95fec] user: drh branch: trunk, size: 202131)
2019-11-10
10:08
[a138de8ae7] part of check-in [f7a74f89db] Remove an incorrect ALWAYS() macro. (check-in: [f7a74f89db] user: drh branch: trunk, size: 202030)
2019-11-06
22:19
[fad49e282d] part of check-in [9e07b48934] Change the way generated columns are computed so that no column is computed inside branch code that might not be taken. Ticket [4fc08501f4e56692] (check-in: [9e07b48934] user: drh branch: trunk, size: 201870)
2019-11-04
02:05
[254238a943] part of check-in [ea20068e6d] Fix a false-postive in the sqlite3ExprImpliesNonNullRow() decision routine, that resulted in an incorrect LEFT JOIN strength reduction when the WHERE clause contained a row-value comparison. Ticket [02aa2bd02f97d0f2] (check-in: [ea20068e6d] user: drh branch: trunk, size: 202251)
2019-10-31
13:16
[a02db12833] part of check-in [329820673a] Ignore differences in Expr.op2 in sqlite3ExprCompare() in cases where it does not matter. Ticket [1d2a8efc6c3a595a]. (check-in: [329820673a] user: drh branch: trunk, size: 202191)
2019-10-30
18:50
[90c774b399] part of check-in [2978b65ebe] Always disallow the use of non-deterministic functions in CHECK constraints, even date/time functions that use the 'now' or similar keywords. Provide improved error messages when this requirement is not met. Ticket [830277d9db6c3ba1] (check-in: [2978b65ebe] user: drh branch: trunk, size: 201528)
16:29
[23d5f9e491] part of check-in [84e02d773d] Simplify the bytecode generation for SQL function calls such that the OP_Function or OP_PureFunc opcodes are coded directly, rather than using the intermediate OP_Function0 or OP_PureFunc0 - opcodes that are now removed. (check-in: [84e02d773d] user: drh branch: trunk, size: 201499)
2019-10-28
13:07
[c158710c5d] part of check-in [f4285297e1] Remove a NEVER() comparison from sqlite3ExprCompare(). (check-in: [f4285297e1] user: drh branch: trunk, size: 201561)
2019-10-24
23:43
[91429fb529] part of check-in [4ec57d8841] Merge fixes from trunk. (check-in: [4ec57d8841] user: drh branch: generated-columns, size: 201585)
2019-10-23
18:09
[afa8c1082e] part of check-in [978b2d20cf] When a vector comparison appears in the WHERE clause and the constraint side has a COLLATE clause on the first term of the vector, be sure to honor that COLLATE clause. Ticket [135c9da7513e5a97]. (check-in: [978b2d20cf] user: drh branch: trunk, size: 200101)
2019-10-22
21:01
[bf20202a8d] part of check-in [9e04ba22df] Take the declared column time into account when computing the values for generated columns, and apply appropriate affinity. (check-in: [9e04ba22df] user: drh branch: generated-columns, size: 201504)
20:16
[738bcc4412] part of check-in [1fbd743861] Merge the row-value fix from trunk. (check-in: [1fbd743861] user: drh branch: generated-columns, size: 201010)
19:51
[e5dad5e67a] part of check-in [5c118617cf] Disqualify row-value comparisons for use by an index if the right-hand side has an affinity that does not match the index. Fix for ticket [6ef984af8972c2eb] (check-in: [5c118617cf] user: drh branch: trunk, size: 200020)
12:02
[7f2492f1a8] part of check-in [ba123b8c20] Merge changes on trunk into the generated-columns branch. (check-in: [ba123b8c20] user: drh branch: generated-columns, size: 200923)
00:03
[da4b31b0df] 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: 199933)
2019-10-21
01:04
[e00d483f68] part of check-in [bc368cb090] Changes to the INSERT logic to make it simpler and faster and so that it works with generated columns and BEFORE triggers. (check-in: [bc368cb090] user: drh branch: generated-columns, size: 199913)
2019-10-19
18:47
[ffa1cda427] part of check-in [932a37275d] Work toward getting generated columns to work with triggers. Still more work to do in this area. (check-in: [932a37275d] user: drh branch: generated-columns, size: 200810)
15:01
[254252a948] part of check-in [fb9c9bb284] Add testcase macros. (check-in: [fb9c9bb284] user: drh branch: generated-columns, size: 200984)
13:29
[8caa6f07be] 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: 200859)
2019-10-18
12:52
[e2c2f78c9f] part of check-in [e8426acb94] Claw back some performance from the sqlite3ExprGetColumnOfTable() routine. (check-in: [e8426acb94] user: drh branch: generated-columns, size: 200813)
02:19
[e492fffa17] part of check-in [0d236698e6] STORED columns can now reference other STORED columns, in any order, as long as there are not loops. (check-in: [0d236698e6] user: drh branch: generated-columns, size: 200803)
2019-10-16
22:01
[61d9043b1b] part of check-in [64db39f92d] INSERT with named columns for a table with generated columns. (check-in: [64db39f92d] user: drh branch: generated-columns, size: 199613)
19:31
[5f2e2678c1] part of check-in [7f9f90b1b8] Simple INSERT and SELECT operations working with VIRTUAL columns. (check-in: [7f9f90b1b8] user: drh branch: generated-columns, size: 199352)
12:18
[6c2b2dc1d7] part of check-in [11d472c1df] Initial experimental code for generated column support. Non-functional. (check-in: [11d472c1df] user: drh branch: generated-columns, size: 199350)
2019-10-11
17:14
[4c2a0d00a0] part of check-in [8a39167bd2] Futher improvements to LEFT JOIN strength reduction. (check-in: [8a39167bd2] user: drh branch: trunk, size: 198923)
16:01
[8e82108846] part of check-in [548082dfab] Improvements to the LEFT JOIN strength reduction optimization. (check-in: [548082dfab] user: drh branch: trunk, size: 198905)
2019-10-10
17:09
[88de5e67b3] part of check-in [7833feecfe] Prevent SQLite from assuming that if ((? IS NOT NULL) IS NOT NULL) is true, ? may not be NULL. Fix for [c31034044bb72c89]. (check-in: [7833feecfe] user: dan branch: trunk, size: 198774)
16:21
[1897455006] part of check-in [c6cc2390e9] Avoid assuming that an expression that contains the sub-expression (? IS FALSE) or (? IS TRUE) may only be true if ? is non-null. Fix for [a976c487]. (check-in: [c6cc2390e9] user: drh branch: branch-3.30, size: 198880)
2019-10-09
21:14
[bf8f259596] part of check-in [eb7ed90b8a] Avoid assuming that an expression that contains the sub-expression (? IS FALSE) or (? IS TRUE) may only be true if ? is non-null. Fix for [a976c487]. (check-in: [eb7ed90b8a] user: dan branch: trunk, size: 198928)
15:37
[3f4dcbe7cb] part of check-in [907f7965b3] An improved fix for the dbsqlfuzz-discovered ALWAYS() failure following OOM in sqlite3ExprCollSeq(). This time with a test case (engineered by Dan). (check-in: [907f7965b3] user: drh branch: trunk, size: 198870)
15:00
[5e4d9823fc] part of check-in [01ba4641ab] Change sqlite3SelectDup() to always return NULL if an OOM has occurred. (check-in: [01ba4641ab] user: drh branch: trunk, size: 198901)
2019-09-27
15:15
[1e9a6da29e] part of check-in [102ef64462] Alternative implementation of the previous check-in which is testable. (check-in: [102ef64462] user: drh branch: trunk, size: 198822)
15:01
[be398d5b59] part of check-in [6a204b192a] Fix sqlite3ExprCompare() so that it ignores differences in the Expr.iTable field for IN operators, as otherwise it can lead to false negatives, which is usually harmless, but can cause problems for an assert() in the window function logic. (check-in: [6a204b192a] user: drh branch: trunk, size: 198822)
2019-09-23
12:38
[66d1f3eb7d] part of check-in [f907395ef5] Omit the sqlite3IntTokens array constant for a code simplification. (check-in: [f907395ef5] user: drh branch: trunk, size: 198798)
11:55
[d7ed577f8e] part of check-in [82e5dcf5c1] When a scalar subquery has a pre-existing "LIMIT X" then change it to "LIMIT X<>0" rather than just "LIMIT 1" so that if X is 0 the limit will still be zero. Ticket [99cd4807dc03f178]. Test cases in TH3. (check-in: [82e5dcf5c1] user: drh branch: trunk, size: 198873)
2019-09-18
20:34
[012dec53bc] part of check-in [b6f2a7f9cd] Always clear the temporary register cache after coding a subroutine. (check-in: [b6f2a7f9cd] user: drh branch: trunk, size: 198372)
2019-09-02
22:13
[10d90c4676] part of check-in [6e7b4527d3] Fix a bug introduced earlier today by check-in [88833a9c2849c959]. Ticket [29f635e0af71234b] (check-in: [6e7b4527d3] user: drh branch: trunk, size: 198046)
02:21
[718634de1c] part of check-in [88833a9c28] When applying the IN_INDEX_NOOP optimization and the LHS has REAL affinity, also apply REAL affinity to each element of the RHS. Ticket [2841e99d104c6436]. (check-in: [88833a9c28] user: drh branch: trunk, size: 197922)
01:25
[1deee9370b] part of check-in [0c946f0846] Fix an obsolete comment that defines the meaning of one of the parameters to the sqlite3FindInIndex() subroutine. No changes to code. (check-in: [0c946f0846] user: drh branch: trunk, size: 197687)
00:58
[dcf6eb8465] part of check-in [0658c16e31] When computing an expression value for an index-on-expression or a CHECK constraint and the expressions uses a REAL table column, but the value of that column is an integer (in other words, when it is using the store-real-as-integer optimization) be sure to promote the value to real before evaluating the expression. Ticket [57af00b6642ecd68]. (check-in: [0658c16e31] user: drh branch: trunk, size: 197714)
2019-08-31
20:29
[150acd113e] part of check-in [63c67a54b4] Fix a harmless compiler warning. (check-in: [63c67a54b4] user: drh branch: trunk, size: 197218)
20:13
[eb9b2e8b19] part of check-in [d768007473] Improvements to the algorithm that determines which SELECT in a sequence of nested SELECT statements that an aggregate function belongs to. This resolves an issue identified by dbsqlfuzz. (check-in: [d768007473] user: drh branch: trunk, size: 197218)
01:33
[60cf8c778c] part of check-in [e2db1123fa] Remove some affinity tests that became unreachable due to the prior change. (check-in: [e2db1123fa] user: drh branch: trunk, size: 196915)
2019-08-30
16:00
[e1b7411637] part of check-in [dd66134817] The expression "(X IS FALSE) IN (FALSE)" does not imply that X is NOT NULL. Ticket [f8f472cbc77ba9c9] (check-in: [dd66134817] user: drh branch: trunk, size: 197005)
15:11
[e1d261e3d2] part of check-in [057fb8b180] The expression "(X IS FALSE) BETWEEN FALSE AND TRUE" does not implie that X is not NULL. Ticket [fba33c8b1df6a915] (check-in: [057fb8b180] user: drh branch: trunk, size: 197011)
13:07
[5f9d677be6] part of check-in [45ff2b1f26] The expression "(x IS FALSE) IS FALSE" does not imply that X is not NULL. Ticket [a6408d42b9f44462] (check-in: [45ff2b1f26] user: drh branch: trunk, size: 196914)
2019-08-29
23:24
[6b62b44b92] part of check-in [80124ae552] Remove a faulty testcase() macro. (check-in: [80124ae552] user: drh branch: trunk, size: 196920)
19:34
[13cbe4b8af] part of check-in [96ff2ba9c4] Fix other problems similar to ticket [c0390363]. (check-in: [96ff2ba9c4] user: dan branch: trunk, size: 196957)
15:50
[c54fcc18ff] part of check-in [616f5663b3] Fix another case where SQLite assumes that if "~(? AND FALSE)" is true, "?" must be non-null. (check-in: [616f5663b3] user: dan branch: trunk, size: 196631)
15:06
[33c1d88c98] part of check-in [84ae41fd2f] Avoid assuming that for "~ (? AND FALSE)" to be true, "?" must not be NULL, just as we do for "NOT (? AND FALSE)". Fix for ticket [c0390363]. (check-in: [84ae41fd2f] user: dan branch: trunk, size: 196611)
2019-08-27
19:59
[0f3aaaac5c] 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: 196611)
17:01
[18b6d8b5fe] 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: 196113)
2019-08-26
20:41
[f17e014c32] part of check-in [ad816d01d4] Merge in recent fixes from trunk. (check-in: [ad816d01d4] user: drh branch: nulls-last, size: 196694)
14:18
[701e304da3] part of check-in [bd4bda73df] Improved detection of number of column mismatch for vector assignment in UPDATE statements. Ticket [78acc9d40f0786e8] (check-in: [bd4bda73df] user: drh branch: trunk, size: 196196)
13:45
[9962ab98d3] part of check-in [d0cc06d8a3] Fix typo in a comment. No code changes. (check-in: [d0cc06d8a3] user: drh branch: trunk, size: 196027)
2019-08-23
21:11
[1ed0847f48] part of check-in [12d2cf8871] Attempt to parse the NULLS LAST clause more efficiently. A few cycles were saved, but at the expense of more code. And there is a bug was introduced somewhere. Not worth continuing down this line. (check-in: [12d2cf8871] user: drh branch: dead-end, size: 196003)
2019-08-22
19:35
[e5f0cf649e] 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: 196518)
16:38
[a1a811e1e5] 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: 196020)
11:11
[1888c5647e] part of check-in [e62eddbb04] Fix a false-positive in sqlite3ExprNeedsNoAffinityChange(). Ticket [ac184eb571d5e6e0] (check-in: [e62eddbb04] user: drh branch: trunk, size: 195717)
2019-08-21
15:41
[e5de46f4a2] part of check-in [6153bcf41a] Update this branch with latest trunk changes. (check-in: [6153bcf41a] user: dan branch: nulls-last, size: 196119)
2019-08-20
14:43
[abef10556e] part of check-in [75aec4fc88] Fix a segfault that could occur following an OOM while processing a SELECT statement for which one or more of the expressions in the window frame declaration are themselves sub-selects that use window functions. (check-in: [75aec4fc88] user: dan branch: trunk, size: 195621)
2019-08-19
19:59
[223bd0d513] part of check-in [75d665a494] Fix problems with window frames that use ORDER BY ... NULLS LAST etc. (check-in: [75d665a494] user: dan branch: nulls-last, size: 195427)
17:26
[0a3442b0df] part of check-in [bb9767a287] Prevent NULLS FIRST/LAST from being used in CREATE INDEX and other statements. (check-in: [bb9767a287] user: dan branch: nulls-last, size: 195389)
2019-08-17
19:13
[66a844757e] part of check-in [43e8b14314] When populating an ephemeral b-tree for the RHS of an IN(...) clause, avoid applying an affinity to a value that may be used later on for some other purpose. Fix for [c7a117190]. (check-in: [43e8b14314] user: dan branch: trunk, size: 195598)
17:07
[abb98379d5] part of check-in [500c9152da] Ensure the functions that appear to be constant are not factored out of expression that originate on the right-hand side of a LEFT JOIN. Ticket [6710d2f7a13a2997] (check-in: [500c9152da] user: drh branch: trunk, size: 195613)
15:47
[bef29885d1] part of check-in [db1e60800b] Merge trunk changes into this branch. (check-in: [db1e60800b] user: dan branch: nulls-last, size: 195270)
2019-08-15
13:53
[1b4f5a53a5] part of check-in [4f5b2d9381] Ensure that SQLite does not attempt to process incompatible window functions in a single scan. Fix for [256741a1]. (check-in: [4f5b2d9381] user: dan branch: trunk, size: 194929)
2019-08-12
16:36
[7cc60cb97c] 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: 195407)
2019-08-10
15:06
[85239130e2] part of check-in [da01ba4fa4] Fix the sqliteExprImpliesExpr() routine so that it recognizes that "(NULL IS FALSE) IS FALSE" doe not imply "NULL NOT NULL". Ticket [9080b6227fabb466] (check-in: [da01ba4fa4] user: drh branch: trunk, size: 195066)
2019-08-06
15:18
[338a6f564f] part of check-in [c9724e761b] Performance optimization to the new affinity handling logic. (check-in: [c9724e761b] user: drh branch: pending, size: 195042)
14:37
[0e6c36895a] 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: 195255)
2019-08-05
18:01
[20dca64dd8] part of check-in [a29f2a7d07] Refactor field Expr.affinity into Expr.affExpr to avoid confusion with other fields and variables named "affinity" and display affExpr it in sqlite3TreeViewExpr() output. (check-in: [a29f2a7d07] user: drh branch: trunk, size: 195101)
2019-07-22
17:28
[b49492392b] part of check-in [05080344dc] Fix a bug in the linked-list handling code added by commit [fd7316cd]. (check-in: [05080344dc] user: dan branch: trunk, size: 195109)
16:20
[3dba8ac22b] part of check-in [d23f331682] Remove Window objects from the corresponding Select.pWin list when they are deleted. (check-in: [d23f331682] user: dan branch: winfunc-in-orderby, size: 195134)
2019-07-19
01:25
[7411b75bcb] part of check-in [ce6bf395e2] Fix a new problem in the BETWEEN operator when applied to a window function. The problem was introduced yesterday by check-in [7ef7b23cbb1b9ace]. This cherry-pick also needed to remove an assert from sqliteExprDelete(). (check-in: [ce6bf395e2] user: drh branch: branch-3.29, size: 195193)
2019-07-17
18:19
[b0107ae644] part of check-in [bc6b0d73ee] When processing a BETWEEN or CASE expression, avoid transforming a node of the original expression into a TK_REGISTER node. Instead, take a copy and use it instead. Fix for [1be72aab9]. (check-in: [bc6b0d73ee] user: drh branch: branch-3.29, size: 195229)
14:34
[f1d87bc9f2] part of check-in [7ef7b23cbb] When processing a BETWEEN or CASE expression, avoid transforming a node of the original expression into a TK_REGISTER node. Instead, take a copy and use it instead. Fix for [1be72aab9]. (check-in: [7ef7b23cbb] user: dan branch: trunk, size: 194938)
2019-07-13
16:22
[896c4576cd] part of check-in [5dac8c38df] Rework the FILTER clause implementation to share more code with window functions. (check-in: [5dac8c38df] user: dan branch: filter-clause, size: 194934)
2019-07-10
20:16
[01bbd69f29] part of check-in [bcc8b38ac7] Minor performance improvement in sqlite3ExprDeleteNN(). (check-in: [bcc8b38ac7] user: dan branch: filter-clause, size: 196050)
2019-07-02
11:56
[33267aaf04] part of check-in [1f1ae2d6ac] Experimental implementation of FILTER clause for aggregate functions. (check-in: [1f1ae2d6ac] user: dan branch: filter-clause, size: 195870)
2019-06-16
08:58
[2756d2875a] part of check-in [ba7870e292] Avoid transforming TK_COLLATE or TK_UNLIKELY Expr nodes to TK_REFERENCE. Instead, transform the uppermost Expr node in the expression tree that is not of this type. Fix for [e1e07ef2]. (check-in: [ba7870e292] user: dan branch: tkt-e1e07ef2, size: 195225)
2019-06-12
13:49
[069de02008] part of check-in [5c6146b56a] Handle expressions like "expr IS TRUE COLLATE xyz" in the same way as "expr IS TRUE". Fix for [4d01eda8115b10d1]. (check-in: [5c6146b56a] user: dan branch: trunk, size: 195178)
2019-06-11
21:02
[d1eeebc0ff] part of check-in [614ecb0af4] The affinity of the unlikely() function and its cousins should be "none". Ticket [0c620df60bffd9ef] (check-in: [614ecb0af4] user: drh branch: trunk, size: 195130)
18:07
[2e0fb76763] part of check-in [0f748fe58b] Make sure the affinity of the RHS of an IN operator does not affect the outcome even if the RHS expression contains a COLLATE clause. Ticket [57353f8243c637c0] (check-in: [0f748fe58b] user: drh branch: trunk, size: 195024)
10:43
[f6b10414b5] part of check-in [36ea13e0a8] Add the new sqlite3ExprUnmapAndDelete() function and use it in place of separate calls to sqlite3RenameExprUnmap() and sqlite3ExprDelete(). (check-in: [36ea13e0a8] user: drh branch: trunk, size: 195024)
02:43
[19100ef384] part of check-in [04bd5cb732] The ALTER TABLE command should not attempt to rename objects that are contained within an expression tree that has been optimized out because it is the other branch of an "AND false" expression. Ticket [533010b8cacebe82] (check-in: [04bd5cb732] user: drh branch: trunk, size: 194913)
2019-05-20
10:36
[6b18f02287] part of check-in [99eba69b3a] Update the sqlite3ExprCompare() routine so that it does not think "? IS NOT TRUE" is the same as "? IS TRUE". Fix for [d3e7f2ba5b3]. (check-in: [99eba69b3a] user: dan branch: trunk, size: 194892)
2019-05-18
21:22
[5176c490d2] part of check-in [778b1224a3] Fix an assert() failure that could occur in a join query if the RHS of an IN() operator is a list containing correlated expressions. This problem was introduced by checkin [e130319317e7611938] which was part of the fix for ticket [787fa716be3a7f650c] - so this commit is part of that ticket's fix too. (check-in: [778b1224a3] user: dan branch: trunk, size: 194853)
2019-05-11
19:36
[a41e5a03d6] part of check-in [b3413197f5] A new implementation for the sqlite3ExprImpliesExpr() theorem prover that does a better job of answering TRUE to "(NOT A) OR B" when B is a NOT NULL expression. (check-in: [b3413197f5] user: drh branch: trunk, size: 194808)
16:14
[de746e2fc5] part of check-in [1b24303220] When considering partial indexes, do not assume that a "CASE x ..." expression implies "x IS NOT NULL". (check-in: [1b24303220] user: dan branch: trunk, size: 192974)
13:04
[ff970039f7] part of check-in [0ba6d709b5] Do not assume that "x IS NOT ?" implies "x NOT NULL" when considering partial indexes. Fix for ticket [8025674847]. (check-in: [0ba6d709b5] user: dan branch: trunk, size: 192951)
2019-05-07
02:57
[2d96dc299a] part of check-in [ab2ba8e732] Add the exprNodeCopy() routine that will safely memcpy() an Expr node that might be a size-reduced node. (check-in: [ab2ba8e732] user: drh branch: expr-node-copy-patch, size: 194327)
2019-05-04
17:32
[55e71df830] part of check-in [c2e439bccc] Fix the NOT NULL logic in the theorem prover that determines when a partial index can be used. Ticket [5c6955204c392ae763a95]. (check-in: [c2e439bccc] user: drh branch: trunk, size: 192927)
2019-04-19
23:05
[f65db06a0f] part of check-in [4f35b3b78a] Mark a single branch as no longer reachable. (check-in: [4f35b3b78a] user: drh branch: trunk, size: 192898)
18:10
[5b34505575] part of check-in [9b888fcc5a] Mark two branches as unreachable. Oops - one of those branches was reachable via fuzzcheck tests. (check-in: [9b888fcc5a] user: drh branch: mistake, size: 192906)
17:26
[23a2a2d86e] part of check-in [0fbd154eb4] Improved optimization of the AND and OR operators. (check-in: [0fbd154eb4] user: drh branch: trunk, size: 192887)
16:21
[18f8875c24] part of check-in [6de980a09c] Use macros to determine if an expression is always true or always false. (check-in: [6de980a09c] user: drh branch: trunk, size: 191461)
13:38
[d9b219b2a2] part of check-in [7713996aa9] Streamline the processing of the AND operator. Slightly smaller and faster. (check-in: [7713996aa9] user: drh branch: trunk, size: 192311)
2019-04-14
00:34
[e100212835] part of check-in [cd08442731] Fix an obsolete comment and other minor issues from code inspection. (check-in: [cd08442731] user: drh branch: trunk, size: 192373)
2019-04-13
04:01
[fab235a7bd] part of check-in [0b6ae032c2] Enforce the SQLITE_LIMIT_COLUMN limit on virtual tables. (check-in: [0b6ae032c2] user: drh branch: trunk, size: 192363)
2019-04-05
20:56
[03f583cf77] part of check-in [d272819298] Eliminate the tool/addopcodes.tcl script. The purpose of that script was to keep the number of parser codes below 256 in order to save parser table space. But we have long since blown through that ceiling so the addopcodes.tcl script was just needless complexity. There is no longer any reason to keep it around. (check-in: [d272819298] user: drh branch: trunk, size: 192354)
2019-04-01
19:42
[7f39a0138c] part of check-in [3fde627616] Improvements to the sqlite3ExprImpliesNonNullRow() theorem prover. (check-in: [3fde627616] user: drh branch: trunk, size: 192360)
2019-02-22
23:29
[f2d0ecf682] part of check-in [c2d50df8fd] Make all ephemeral tables built to hold the RHS of an IN operator be index-btrees, never table-btrees, regardless of whether or not they are used as IN_INDEX_LOOP or IN_INDEX_MEMBERSHIP. That way, the same ephmerial table can be reused for both cases. (check-in: [c2d50df8fd] user: drh branch: tkt-df46dfb631, size: 192111)
2019-02-20
03:38
[d5b2878dd7] part of check-in [b5f90bfe62] Back off the optimization of check-in [e130319317e76119] slightly so that it only applies to IN operators that are used for membership tests. Proposed fix for ticket [df46dfb631f75694]. (check-in: [b5f90bfe62] user: drh branch: tkt-df46dfb631, size: 193468)
2019-02-05
14:36
[182dc9ff30] part of check-in [d840e9bb02] The IS NOT NULL operator does not imply that the operand is never NULL. Fix for ticket [5948e09b8c415bc45da5cf] (check-in: [d840e9bb02] user: drh branch: trunk, size: 193204)
2019-02-01
15:06
[c6c10cd52d] part of check-in [4ca9d5d53d] Ensure that the Walker.pParse structure is initialized when walking the source tree to gather the WINDOW clauses on a query with window functions. (check-in: [4ca9d5d53d] user: drh branch: trunk, size: 193142)
2019-01-23
16:59
[4bc5086448] part of check-in [0387cb3add] Fix problems with sub-selects in WINDOW definitions. Also rename-column operations when the column being renamed appears in a WINDOW definition that is part of a VIEW or TRIGGER. (check-in: [0387cb3add] user: dan branch: trunk, size: 193126)
2019-01-19
14:07
[9c30765910] part of check-in [908ff7fffa] Fix a problem with using ALTER TABLE to rename a table or column when the database schema contains a trigger or view that itself contains an expression "<column> AND 0". (check-in: [908ff7fffa] user: dan branch: trunk, size: 193110)
2019-01-17
01:06
[b660eb4d6d] part of check-in [835e2cc55f] Fix a failure in sqlite3ExprCompare() (check-in: [835e2cc55f] user: drh branch: trunk, size: 193089)
2019-01-15
20:51
[716a241833] part of check-in [cc6cd7531f] Fix a problem with ALTER TABLE and vector assignments in UPDATE statements within triggers. (check-in: [cc6cd7531f] user: dan branch: trunk, size: 193013)
2019-01-11
13:32
[01aa7e667b] part of check-in [5547f39de9] The keywords TRUE and FALSE should only act as boolean literal values if unquoted. (check-in: [5547f39de9] user: drh branch: trunk, size: 192888)
2019-01-05
21:56
[9ad9c40a83] part of check-in [a874c64996] Add the exprNodeCopy() routine that will safely memcpy() an Expr node that might be a size-reduced node. (check-in: [a874c64996] user: drh branch: trunk, size: 192915)
2018-12-31
21:43
[18ce84bab1] part of check-in [b57c545a38] Fix harmless compiler warnings. (check-in: [b57c545a38] user: drh branch: trunk, size: 192598)
18:30
[2871554cc9] part of check-in [9fb646f29c] Merge enhancements and bug fixes from trunk. (check-in: [9fb646f29c] user: drh branch: reuse-subqueries, size: 192594)
2018-12-29
02:26
[2c28e3bcb8] 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: 190164)
2018-12-26
15:04
[8f674a8295] part of check-in [50e5f390fb] Here is the beginnings of an effort to factor out the implementation of scalar subqueries to be implemented as subroutines at the end of the main body of bytecode, after the jump back to the OP_Init opcode. This is an incremental check-in that contains only preliminary changes. (check-in: [50e5f390fb] user: drh branch: factor-out-scalar-subselect, size: 192521)
2018-12-24
20:21
[7e6f3cd438] part of check-in [7153552bac] Improvements to EXPLAIN QUERY PLAN formatting. The MULTI-INDEX OR now shows a separate "INDEX" subtree for each index. SCALAR SUBQUERY entries provide a subquery number that is related back to the .selecttrace output. (check-in: [7153552bac] user: drh branch: reuse-subqueries, size: 192529)
12:09
[7122877f40] part of check-in [06de44ec9e] Do not generate subroutines for non-static SELECT and EXISTS expressions. Fix up some test cases to account for the minor changes in EXPLAIN QUERY PLAN output. (check-in: [06de44ec9e] user: drh branch: reuse-subqueries, size: 192285)
11:55
[84b83f3f5c] part of check-in [6b24d3fb94] Prevent the use of subroutines to implement the RHS of IN operators within CHECK constraints. (check-in: [6b24d3fb94] user: drh branch: reuse-subqueries, size: 192229)
02:34
[98076b0c05] 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: 192206)
2018-12-23
21:27
[3f398a6698] part of check-in [2b6494b150] Split the code generation for the RHS of IN operators and for SELECT and EXISTS expressions into two separate subroutines, because there is now little commonality between those to functions. This is intended to help make the code easier to read and maintain. (check-in: [2b6494b150] user: drh branch: trunk, size: 190099)
2018-12-22
01:13
[291e764ce4] part of check-in [db8d1d12f5] Do not all REPLACE to sneak a NULL value into a NOT NULL column. Detect that situation and ABORT instead. Fix for ticket [e6f1f2e34dceeb1ed61531c7e98]. (check-in: [db8d1d12f5] user: drh branch: trunk, size: 190559)
2018-12-20
15:04
[5bf5ccc9a1] part of check-in [ddf06db702] Fix a segfault caused by using the RAISE function incorrectly (library now returns an error instead of crashing). (check-in: [ddf06db702] user: dan branch: trunk, size: 190553)
2018-12-14
20:28
[0f996b684f] part of check-in [11368e673c] Add a missing OP_ColumnsUsed opcode to code for expressions like "? IN (SELECT ...)" in cases where expression can use an index that may contain NULL values. (Backported fix from version 3.14.0). (check-in: [11368e673c] user: drh branch: branch-3.8.9, size: 152547)
20:20
[b74a30503b] 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: 152365)
2018-12-12
21:34
[b84c41530d] part of check-in [2b690dbdff] Fix another problem found by Matthew Denton's new fuzzer. (check-in: [2b690dbdff] user: drh branch: trunk, size: 190533)
20:11
[4c6769333c] part of check-in [5c7dab8553] Remove an ALWAYS() from a branch that is not always taken. The test case found by OSSFuzz has been added to TH3. (check-in: [5c7dab8553] user: drh branch: trunk, size: 190566)
11:57
[39ce499eed] part of check-in [bc891ac6b6] OSSFuzz found a case where an assert() inside sqlite3ExprCompare() can be true. Test case added to TH3. (check-in: [bc891ac6b6] user: drh branch: branch-3.26, size: 190825)
11:50
[1c2157f34c] part of check-in [c1c735a8c6] Do not use a partial index as a table scan in an IN operator. Fix for ticket [1d958d90596593a77420e59]. (check-in: [c1c735a8c6] user: drh branch: branch-3.26, size: 190823)
11:23
[d18469f0b1] part of check-in [23b62fb160] OSSFuzz found a case where an assert() inside sqlite3ExprCompare() can be true. Test case added to TH3. (check-in: [23b62fb160] user: drh branch: trunk, size: 190574)
2018-12-08
20:30
[494a778ee1] part of check-in [15bc915dd7] Do not use a partial index as a table scan in an IN operator. Fix for ticket [1d958d90596593a77420e59]. (check-in: [15bc915dd7] user: drh branch: trunk, size: 190572)
2018-12-07
02:01
[a0cf3628dd] part of check-in [65aafb5531] Fix the sqlite3ExprDup() function so that it correctly duplicates the Window object list on a Select that contains window functions. Fix for ticket [f09fcd17810f65f717]. (check-in: [65aafb5531] user: drh branch: branch-3.26, size: 190774)
2018-12-06
22:12
[b83e205608] part of check-in [2b9258b8b0] Performance improvement: Avoid using sqlite3WalkerSelectExpr() and sqlite3WalkerSelectFrom() twice, so that the compiler will in-line their implementation. (check-in: [2b9258b8b0] user: drh branch: ticket-f09fcd17810f, size: 190523)
22:04
[348e387778] part of check-in [940174543e] Fix the sqlite3ExprDup() routine so that it makes complete duplications of subqueries containing window functions. (check-in: [940174543e] user: drh branch: ticket-f09fcd17810f, size: 190366)
2018-12-05
23:45
[a3e90131d7] part of check-in [e8540377ec] The sqlite3_normalized_sql() interface should not be transforming quoted identifier names into wildcards. Fix this, and at the same time simplify the code substantially. (check-in: [e8540377ec] user: drh branch: trunk, size: 189476)
2018-11-20
16:02
[38c5031821] part of check-in [dfab7170ed] Consolidate the two sqlite3SchemaToIndex() routines. (check-in: [dfab7170ed] user: dan branch: reuse-schema1, size: 189752)
2018-11-17
18:11
[ddbc6be9e1] part of check-in [6d7a7e5faf] Fix further problems with the feature on this branch. (check-in: [6d7a7e5faf] user: dan branch: reuse-schema1, size: 189753)
2018-11-09
00:02
[a41c736a9b] part of check-in [8d663bfaaa] Disable the use of coroutines for subqueries within a query that is the RHS of an IN operator, as the IN operator might be evaluated more than once. Possible fix for [787fa716be3a7f65], unless we can come up with something better. Later: Counter-example found. (check-in: [8d663bfaaa] user: drh branch: tkt787fa716-deadend, size: 189823)
2018-10-31
20:52
[9aacc0b723] part of check-in [4a6ad5190b] Deploy the sqlite3Strlen30NN() function (argument guaranteed to be non-NULL) for a small performance improvement. (check-in: [4a6ad5190b] user: drh branch: trunk, size: 189727)
2018-10-29
17:53
[16dee9504d] part of check-in [592b66e805] Add the sqlite3_normalized_sql() API. (check-in: [592b66e805] user: mistachkin branch: normalized_sql, size: 189725)
2018-09-24
19:32
[d8da79a5cb] part of check-in [8694c3d565] Fix a faulty assert() in the validation logic for the LEFT JOIN strength reduction optimization. Problem found by OSSFuzz. (check-in: [8694c3d565] user: drh branch: branch-3.25, size: 189087)
18:29
[dad286e9fe] part of check-in [1c0ecbbdf1] Fix a problem with views that use window functions as part of complex expressions. (check-in: [1c0ecbbdf1] user: drh branch: branch-3.25, size: 189254)
15:39
[5cee8fb79b] part of check-in [d7c816ae15] Slightly smaller and faster alternative to [507d892c3a40a0bacbd47] that fixes a problem with views that use window function as part of complex expressions. (check-in: [d7c816ae15] user: drh branch: trunk, size: 189474)
14:51
[781afe5200] part of check-in [507d892c3a] Fix a problem with views that use window functions as part of complex expressions. (check-in: [507d892c3a] user: dan branch: trunk, size: 189455)
2018-09-23
02:01
[cd7a294bff] part of check-in [2fd62fccd1] Fix a faulty assert() in the validation logic for the LEFT JOIN strength reduction optimization. Problem found by OSSFuzz. (check-in: [2fd62fccd1] user: drh branch: trunk, size: 189463)
2018-09-20
19:02
[610eea078f] 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: 189630)
2018-09-19
20:14
[5814b4b5d4] 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: 192513)
16:35
[539140adf9] part of check-in [e4129cd3a0] Make sure Expr.eX changes back to EX_None after Expr.x.pRight is set to NULL due to an OOM. (check-in: [e4129cd3a0] user: drh branch: expr-simplify, size: 191763)
14:54
[cc72d25fe9] 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: 191709)
11:59
[d48bca738e] part of check-in [de02a1d97a] Make sure temporary Expr objects are fully initialized prior to sending them into sqlite3ExprCodeTemp(). (check-in: [de02a1d97a] user: drh branch: expr-simplify, size: 190463)
2018-09-18
21:35
[c7d6ce81a4] 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: 190421)
18:08
[83c279eda8] part of check-in [655f065404] Merge all recent trunk enhancements. (check-in: [655f065404] user: drh branch: expr-simplify, size: 189720)
2018-09-01
15:49
[92dc4e104b] part of check-in [589186c083] Merge fixes and enhancements from trunk. (check-in: [589186c083] user: drh branch: alter-table-rename-table, size: 189262)
2018-08-29
21:00
[e7d04a23bc] part of check-in [01308bae3a] Extend RENAME TABLE to edit triggers and views. Still buggy. (check-in: [01308bae3a] user: dan branch: alter-table-rename-table, size: 189255)
2018-08-23
14:54
[bf08bfe77e] part of check-in [c446c88411] Merge enhancements from trunk. (check-in: [c446c88411] user: drh branch: rtree-geopoly, size: 189163)
2018-08-21
16:32
[665eafd450] part of check-in [b9ae9a0a18] Rename internal function sqlite3RenameToken() to sqlite3RenameTokenMap() and sqlite3MoveRenameToken() to sqlite3RenameTokenRemap(). (check-in: [b9ae9a0a18] user: dan branch: alter-table-rename-column, size: 189255)
2018-08-18
18:14
[f44978812b] part of check-in [ccad277927] Merge trunk fixes. (check-in: [ccad277927] user: drh branch: alter-table-rename-column, size: 189252)
2018-08-16
15:29
[d50257c6a7] part of check-in [60045fbf52] Fix EXPLAIN QUERY PLAN so that it describes IN operators implemented using a ROWID lookup. (check-in: [60045fbf52] user: drh branch: trunk, size: 189156)
2018-08-15
20:28
[4c1e40cdb1] part of check-in [e272dc2b1c] Have ALTER TABLE RENAME COLUMN edit trigger programs. Only partly working. (check-in: [e272dc2b1c] user: dan branch: edit-trigger-wrapper, size: 189142)
2018-08-09
18:36
[4a555ff680] part of check-in [7404ea8316] When a column must be a constant due to WHERE clause and the value of that column is being coded as a constant, make sure the affinity is correct. (check-in: [7404ea8316] user: drh branch: trunk, size: 189046)
2018-08-04
20:30
[aac1c33ef8] part of check-in [cdff3af7be] Remove the column-cache from the code generator. The column-cache has been a persistent source of bugs for years and with recent improvements in the performance of OP_Column, it no longer provides a benefit. After the column cache is removed, the binary is almost 2KB smaller and the speed-check.sh performance test is over 3 million cycles faster. (check-in: [cdff3af7be] user: drh branch: trunk, size: 188193)
17:15
[3c5c439653] part of check-in [2041231d56] Fix comments that were made obsolete by the removal of the column cache. (check-in: [2041231d56] user: drh branch: omit-column-cache, size: 188164)
15:53
[81a8f601d5] part of check-in [7d9072b027] Further logic simplifications that flow out of the omission of the column cache. (check-in: [7d9072b027] user: drh branch: omit-column-cache, size: 188369)
15:16
[825198653f] part of check-in [8bc7f84c39] Ensure that all expressions that are to be evaluated once at the start of a prepared statement (the Parse.pConstExpr expressions) pass the sqlite3ExprIsConstantNotJoin() test. It is not sufficient to pass just the sqlite3ExprIsConstant() test as that would allow through column references that are bound to constants by the WHERE clause in the constant propagation optimization. This fixes a problem discovered by OSSFuzz. (check-in: [8bc7f84c39] user: drh branch: trunk, size: 196629)
14:30
[1b4889eff3] part of check-in [db6052e972] Remove additional traces of the column cache. (check-in: [db6052e972] user: drh branch: omit-column-cache, size: 189077)
2018-08-03
23:04
[4cb4ca6357] 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: 189242)
2018-07-28
16:24
[3a85e8e236] part of check-in [d30b2a9473] Do not allow a column reference that is converted into a constant by the WHERE-clause constant propagation optimization to be moved to the init-time constant expression list, as the table reference will not work there. This fixes a problem found by OSSFuzz. (check-in: [d30b2a9473] user: drh branch: trunk, size: 196600)
13:37
[dff6636152] part of check-in [fc90a53de7] An early attempt at refactoring Expr (check-in: [fc90a53de7] user: drh branch: expr-simplify-branch1, size: 196935)
01:30
[eeb14df211] part of check-in [81f25d5c84] Add assert() statements to sqlite3ExprDelete() that prove various symmetry properties of the Expr object that might be exploited to make the Expr object smaller and faster. (check-in: [81f25d5c84] user: drh branch: expr-simplify, size: 196743)
2018-07-27
23:33
[907d7de6ca] part of check-in [02204f8b24] Improvements to the parser to increase coverage. Fix the parser so that at least one expresssion is required after PARTITION BY and within the list of expressions on VALUES(). (check-in: [02204f8b24] user: drh branch: trunk, size: 196285)
18:19
[5b5e7b571f] part of check-in [a5f86f49b7] Performance improvement to sqlite3ExprCollSeq(). With this change, the performance of speed-check.sh is within 400,000 cycles of trunk. (check-in: [a5f86f49b7] user: drh branch: propagate-const-opt, size: 195907)
18:12
[fe08e0dbf1] part of check-in [be05d0db09] Faster implementation of sqlite3IsBinary(). (check-in: [be05d0db09] user: drh branch: propagate-const-opt, size: 195907)
17:51
[eaf12eb8eb] 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: 196070)
16:57
[af489eb4da] 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: 196098)
2018-07-26
23:47
[8187c1be10] part of check-in [57eb2abd5b] Generalize the constant propagation optimization so that it applies on every WHERE close, not just those that contain a subquery. This then demonstrates that the current implementation is inadequate since it does not take into account collating sequences. (check-in: [57eb2abd5b] user: drh branch: propagate-const-opt, size: 195696)
2018-07-10
19:48
[bb148f4c45] 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: 195676)
07:39
[0abe1e6931] part of check-in [0f6ec605e1] Fix a harmless warning about comment formatting in the previous check-in. Simplify the ORDER BY dereferencing logic so that it avoids unreachable branches. (check-in: [0f6ec605e1] user: drh branch: trunk, size: 195693)
07:25
[61ae1a229b] part of check-in [52559ad58c] Assert that if two functions compare equal in every other way, then they must both have OVER clauses, or neither has an OVER clause. Use this fact to simplify expression comparison. (check-in: [52559ad58c] user: drh branch: trunk, size: 195693)
06:47
[e5861888a3] part of check-in [0a7649afeb] Enhance the sqlite3ExprCompare() routine so that it knows to compare the OVER clause of window functions. (check-in: [0a7649afeb] user: drh branch: trunk, size: 195207)
2018-06-22
20:51
[7e257eeffe] part of check-in [5f04b01646] Omit all window-function related code when building with SQLITE_OMIT_WINDOWFUNC. (check-in: [5f04b01646] user: dan branch: exp-window-functions, size: 194989)
2018-06-18
20:34
[02e1fb65a7] part of check-in [943bccd2a6] Fix problems with using window functions in CREATE VIEW statements. (check-in: [943bccd2a6] user: dan branch: exp-window-functions, size: 194840)
2018-06-14
14:30
[80c61121f3] part of check-in [5cf5f1808a] Merge latest trunk changes into this branch. (check-in: [5cf5f1808a] user: dan branch: exp-window-functions, size: 194816)
2018-06-11
20:50
[1963827d3a] part of check-in [0cd55e98a4] Clarify the relationship between a Window object and its associated Expr. (check-in: [0cd55e98a4] user: dan branch: exp-window-functions, size: 194490)
17:35
[3ab855fb88] 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: 194336)
2018-06-08
20:58
[d6db67ebe0] part of check-in [19c983b511] Add support for the WINDOW clause. (check-in: [19c983b511] user: dan branch: exp-window-functions, size: 194484)
16:11
[587b4bc88f] part of check-in [236cb75bd1] Do not flatten sub-queries that contain window functions. (check-in: [236cb75bd1] user: dan branch: exp-window-functions, size: 194437)
2018-06-04
08:28
[7c8880478d] part of check-in [83d6416a86] Merge latest trunk changes into this branch. (check-in: [83d6416a86] user: dan branch: exp-window-functions, size: 194990)
2018-05-29
15:18
[16f90ae2af] part of check-in [f141d80647] Add a comment to justify a goto statement. No code changes. (check-in: [f141d80647] user: drh branch: trunk, size: 194010)
2018-05-26
18:03
[81b3925fb8] 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: 193966)
2018-05-19
14:15
[bb57b0b5ba] part of check-in [19c2e4b2f1] Fix minor problems on this branch. (check-in: [19c2e4b2f1] user: dan branch: exp-window-functions, size: 194939)
2018-05-17
19:24
[75cef2e9fa] part of check-in [c9f0f14094] Evaluate multiple window functions in a single pass if they use the same window definition. Add xValue callbacks for other built-in aggregate functions. (check-in: [c9f0f14094] user: dan branch: exp-window-functions, size: 194945)
14:26
[af55e984d8] part of check-in [35af0b750e] Handle multiple window-functions in a single query. (check-in: [35af0b750e] user: dan branch: exp-window-functions, size: 194841)
2018-05-16
20:58
[6e443e4f9f] part of check-in [3781e52085] Start of experimental implementation of SQL window functions. Does not yet work. (check-in: [3781e52085] user: dan branch: exp-window-functions, size: 194780)
2018-05-03
19:47
[af4a81a385] part of check-in [956fef361a] Optimizations to the new EQP framework. (check-in: [956fef361a] user: drh branch: rework-EQP, size: 193959)
2018-05-02
00:33
[1757b6896a] part of check-in [70b48a7972] Begin reengineering the EXPLAIN QUERY PLAN function to provide more intuitive output. (check-in: [70b48a7972] user: drh branch: rework-EQP, size: 194050)
2018-04-28
04:16
[5c9a6dc7f5] part of check-in [6e098ee415] Prevent deep recursions on nested COLLATE operators. (check-in: [6e098ee415] user: drh branch: trunk, size: 194545)
2018-04-26
12:27
[4a39bc2a9a] part of check-in [368c14da86] Improved VDBE comment on the OP_Param opcode. No substantial changes. (check-in: [368c14da86] user: drh branch: trunk, size: 194536)
2018-04-24
01:10
[9a3b6eaa86] part of check-in [8bc0207abd] In EXPLAIN QUERY PLAN output, do not show an EXECUTE LIST SUBQUERY line for IN operators where the RHS is a list and not a subquery, since in that case there is no SUBQUERY to execute. (check-in: [8bc0207abd] user: drh branch: trunk, size: 194545)
2018-04-23
20:38
[d99ee5eed7] part of check-in [67d0b2c152] Fix a problem in sqlite3ExprCompare() associated with UPSERT. (check-in: [67d0b2c152] user: drh branch: trunk, size: 194162)
2018-04-18
19:56
[53df437b3a] part of check-in [ef74090a40] Add the "sorter-reference" optimization, allowing SQLite to be configured so that some required values may be loaded from the database after external sorting occurs for SELECT statements with ORDER BY clauses that are not satisfied by database indexes. (check-in: [ef74090a40] user: dan branch: trunk, size: 194134)
17:52
[7c08754d68] part of check-in [fb16348a5b] Fix a problem in the sqlite3ExprCompare() function that caused two dissimilar expressions to match if they have the same "COLLATE name" at the outer layer. (check-in: [fb16348a5b] user: drh branch: trunk, size: 193981)
01:34
[e27dfc8fd5] part of check-in [266a99f7c0] Add new testcase() macros and fix a bug that was revealed when trying to cover all the new test cases. (check-in: [266a99f7c0] user: drh branch: upsert, size: 193981)
2018-04-17
18:50
[1633ff93c1] part of check-in [f3d91cad92] TK_REGISTER expressions nodes are probably not constant. Make sure sqlite3ExprIsConstant() knows this. (check-in: [f3d91cad92] user: drh branch: upsert, size: 193939)
2018-04-16
10:47
[fc607dd633] part of check-in [54d96772e7] Merge changes from trunk. (check-in: [54d96772e7] user: drh branch: upsert, size: 193921)
10:34
[ca52b09125] part of check-in [dba3095fee] Reduce the size of the NameContext object by grouping seldom-used fields into a union. (check-in: [dba3095fee] user: drh branch: trunk, size: 193842)
2018-04-14
18:46
[2448a255ce] part of check-in [9719cb46bb] Experimental change to "SELECT * FROM ... ORDER BY" processing to load some column values from the db after sorting. (check-in: [9719cb46bb] user: dan branch: sorter-reference, size: 193951)
2018-04-13
14:27
[a4e99a5607] part of check-in [5bf7042562] Get the conflict-target clause parsing working correctly, with test cases. This change involves an enhancement to sqlite3ExprCompare() which needs to be reviewed on trunk prior to merging. (check-in: [5bf7042562] user: drh branch: upsert, size: 193877)
2018-04-10
15:31
[6a41ceb279] part of check-in [1fdaf2c344] Fix a problem causing the LEFT JOIN strength reduction optimization to be incorrectly applied in some cases where the WHERE clause of the query contains a filter expression of the form "lhs.x IS NOT ?". (check-in: [1fdaf2c344] user: dan branch: trunk, size: 193798)
12:10
[397c3ca2f5] part of check-in [38d319c153] Fix a problem causing the LEFT JOIN strength reduction optimization to be incorrectly applied in some cases where the WHERE clause of the query contains a filter expression of the form NOT(x AND y). Ticket [1e39b966]. (check-in: [38d319c153] user: dan branch: trunk, size: 193703)
2018-04-03
14:04
[0d4345e0e1] part of check-in [cbb977fe19] Change the LEFT JOIN strength reduction optimization so that assumes that virtual table constraints can be true even if terms within the constraint are NULL. This works around dodgy virtual table implementations. Fix for ticket [fac496b61722daf2]. (check-in: [cbb977fe19] user: drh branch: trunk, size: 193686)
2018-03-24
18:01
[51500461dc] part of check-in [5613457714] Add testcase() macros and improve comments in the LEFT JOIN strength reduction optimization. (check-in: [5613457714] user: drh branch: trunk, size: 193001)
15:47
[82d8b12a15] part of check-in [e88cf3d4df] Yet another fault in the sqlite3ExprImpliesNotNull() routine, causing errors in the LEFT JOIN strength reduction optimization of check-in [dd568c27b1d76563]. (check-in: [e88cf3d4df] user: drh branch: trunk, size: 192021)
13:24
[c370003225] part of check-in [cf171abe95] Bug fix in the LEFT JOIN strength reduction optimization of check-in [dd568c27b1d76563]. The sqlite3ExprImpliesNotNull() routine was mistakenly assuming that a CASE expression must always be NULL if contained any reference to a variable that was NULL. (check-in: [cf171abe95] user: drh branch: trunk, size: 192005)
2018-03-20
21:16
[21ba8e1f8b] part of check-in [5b7abecc7a] If terms of the WHERE clause require that the right table in a LEFT JOIN not be a null row, then simplify the LEFT JOIN into an ordinary JOIN. (check-in: [5b7abecc7a] user: drh branch: join-strength-reduction, size: 191987)
2018-03-19
16:59
[a750629a0a] part of check-in [16c22ff818] Show symbolic SELECT names in EXPLAIN QUERY PLAN output when compiling with SQLITE_ENABLE_SELECTTRACE. (check-in: [16c22ff818] user: drh branch: EQP-improvements, size: 190592)
2018-02-27
14:49
[904f85e5f5] part of check-in [6445519e91] Clean up comments and variable names prior to merge. (check-in: [6445519e91] user: drh branch: is-true-operator, size: 190368)
00:58
[03975fff22] part of check-in [adcb466549] Remove an unnecessary decision. (check-in: [adcb466549] user: drh branch: is-true-operator, size: 190154)
2018-02-26
21:26
[ee29e9c2af] part of check-in [57508518ef] Code simplifications. New test cases. (check-in: [57508518ef] user: drh branch: is-true-operator, size: 190175)
20:15
[2662b7cb76] part of check-in [8002f87d96] Get the "DEFAULT true" and "DEFAULT false" phrases working correctly in CREATE TABLE. (check-in: [8002f87d96] user: drh branch: is-true-operator, size: 190251)
18:49
[4344e70a15] part of check-in [cf2abd59be] Refactor for correct NULL handling in the IS TRUE, IS FALSE, IS NOT TRUE, and IS NOT FALSE operators. (check-in: [cf2abd59be] user: drh branch: is-true-operator, size: 189410)
03:20
[56bfb9937e] part of check-in [40314bc999] Experimental implementation of IS TRUE and IS FALSE operators. All TRUE and FALSE to act like constants if the names do not resolve to a column name. (check-in: [40314bc999] user: drh branch: is-true-operator, size: 188155)
2018-01-18
19:00
[9e06de431c] part of check-in [86de43595c] Use a loop to avoid recursion in the heightOfSelect() function. (check-in: [86de43595c] user: dan branch: trunk, size: 187445)
2018-01-14
20:12
[46a7d73d55] part of check-in [a4fa0581ba] Avoid excess stack usage when a VALUES clause with lots of rows occurs within a scalar expression. This fixes a problem discovered by OSSFuzz. (check-in: [a4fa0581ba] user: drh branch: trunk, size: 187444)
2017-12-29
15:04
[ad6e7a9c34] 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: 187484)
14:33
[119aa8d492] 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: 187436)
13:35
[db1f29a1ee] part of check-in [6251e438f2] Merge recent enhancements from trunk. (check-in: [6251e438f2] user: drh branch: location-function, size: 187422)
2017-12-27
19:43
[f03666d7f5] part of check-in [a8e1545cb7] Add and use the internal sqlite3DbSpanDup() interface. (check-in: [a8e1545cb7] user: drh branch: span-refactor, size: 187124)
2017-12-24
00:18
[04188faa71] part of check-in [3eab7bdc44] Remove the ExprSpan object. Instead, keep track of the test of subphrases in the parse using the "scanpt" non-terminal. (check-in: [3eab7bdc44] user: drh branch: span-refactor, size: 187264)
2017-12-16
20:20
[261d1eb095] part of check-in [51be955816] Add an experimental location(X) SQL function that attempt to return the location of the payload within the database for the record that contains column X. location(X) returns NULL if X is not an ordinary table column or if SQLite cannot figure out the location because it is using a covering index. (check-in: [51be955816] user: drh branch: location-function, size: 187519)
2017-11-17
15:02
[fe11b91bb6] part of check-in [071cabd23c] Clarification of comments on sqlite3FindInIndex(). No changes to code. (check-in: [071cabd23c] user: drh branch: trunk, size: 187221)
2017-11-14
23:48
[5257a9157f] part of check-in [3925facd94] In the parse tree, combine LIMIT and OFFSET into a single expression rooted on a TK_LIMIT node, for a small code size reduction and performance increase, and a reduction in code complexity. (check-in: [3925facd94] user: drh branch: trunk, size: 187201)
2017-10-28
20:51
[0016b95aed] part of check-in [d17ef7d153] Reactivate query flattening when the result set of the outer query has no function calls or subqueries. This is a partial reversal of check-in [c9104b59]. Co-routines are still preferred if the outer query has a complex result set, but for simple results sets, query flattening is used. Check-in [4464f40ccd7] is completely backed out due to this change. (check-in: [d17ef7d153] user: drh branch: trunk, size: 187182)
2017-10-23
16:03
[755caeafc4] part of check-in [58e5bb491b] Avoid passing a NULL value as the second argument to memcpy(). (check-in: [58e5bb491b] user: dan branch: branch-3.21, size: 187145)
2017-09-30
01:25
[4d2d0aafd9] part of check-in [71f0adf7ca] Fix unreachable conditionals and revise a testcase that was made obsolete by the changes on this branch. (check-in: [71f0adf7ca] user: drh branch: prefer-coroutine-sort-subquery, size: 187127)
2017-09-28
01:58
[628395aea8] 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: 187134)
2017-09-20
10:47
[82fedd57c8] part of check-in [7f2bd4ff45] Improved resolution of large integer values in "CAST(x AS NUMERIC)". (check-in: [7f2bd4ff45] user: drh branch: trunk, size: 186153)
2017-09-17
19:45
[38a225057f] part of check-in [29227d00a9] Do not make the assumption (as check-in [4da49a95c0f07] incorrectly did) that the ExprList returned by sqlite3ExprListDup() would never be passed into sqlite3ExprListAppend(). Include a new test case that shows this sometimes does happen. (check-in: [29227d00a9] user: drh branch: trunk, size: 186151)
2017-09-15
15:38
[995a0801cc] part of check-in [5dc3ecb5f6] Improved the header-comment documentation on sqlite3ExprCodeExprList(). No changes to code. (check-in: [5dc3ecb5f6] user: drh branch: trunk, size: 186484)
15:17
[e44dda9df0] part of check-in [4da49a95c0] Optimization to the ExprList object to make it slightly smaller and faster. (check-in: [4da49a95c0] user: drh branch: trunk, size: 186234)
2017-09-04
00:33
[0f61184021] part of check-in [c7f9f47b23] Proposed fix for ticket [b899b6042f97f5] (check-in: [c7f9f47b23] user: drh branch: trunk, size: 185550)
2017-08-21
02:20
[4ca86dc65f] part of check-in [56d19f9fd7] Remove an unnecessary conditional. (check-in: [56d19f9fd7] user: drh branch: trunk, size: 185327)
2017-08-14
14:53
[dc436431dc] part of check-in [d0da791ba0] Sometimes a TK_COLUMN Expr node can have Expr.pTab==0 if it is a reference to an expression column in an index on an expression. Fix for ticket [aa98619ad08ddcab]. (check-in: [d0da791ba0] user: drh branch: trunk, size: 185340)
2017-07-20
13:17
[fdb2fc465c] part of check-in [22eda0985e] Combine the Parse.ckBase and Parse.iSelfTab fields into just Parse.iSelfTab. This fixes a problem with date/time functions in check-constraints. Add some test cases for date/time functions in index expressions and check constraints. (check-in: [22eda0985e] user: drh branch: index-on-date-func, size: 185291)
2017-07-19
19:48
[17fb28516a] part of check-in [0a5e1c04d9] Allow indexes to be created on date/time functions as long as the 'now' date and the 'localtime' and 'utc' modifiers are not used. (check-in: [0a5e1c04d9] user: drh branch: index-on-date-func, size: 185287)
2017-07-15
20:33
[68552ca7f1] part of check-in [253945d480] Fix a register allocation problem in PRAGMA integrity_check that caused the same register to be used for two different purposes on the first ATTACHed database if the schema for the ATTACHed database was noticable more complex than the schema for the first database. Fix for ticket [a4e06e75a9ab61a1]. (check-in: [253945d480] user: drh branch: trunk, size: 185219)
2017-07-07
13:59
[f3f0f7a1a8] part of check-in [aacbb9a461] Exploit the fact that Expr.pRight and Expr.x are never used at the same time for a small performance gain. (check-in: [aacbb9a461] user: drh branch: trunk, size: 185215)
12:43
[26f51aa89d] part of check-in [c1a1d68c82] More aggressive use of EP_Leaf on expression nodes, to help prune searches. (check-in: [c1a1d68c82] user: drh branch: trunk, size: 185184)
2017-06-29
01:23
[cc024ddd19] part of check-in [25acd9658b] Fix the exprCompareVariable() routine so that it works for non-UTF8 text. (check-in: [25acd9658b] user: drh branch: partial-index-variables, size: 185176)
2017-06-28
21:47
[8281b9e5b8] part of check-in [b959c6297c] Alternative implementation of exprCompareVariable(). (check-in: [b959c6297c] user: drh branch: partial-index-variables, size: 185053)
2017-06-24
18:10
[9aea9dbac1] 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: 184964)
2017-06-17
19:06
[d2a511fbcd] part of check-in [c21628e9c1] Avoid adding an artifical "LIMIT 1" on scalar subqueries that do not need it. This seems like a pointless optimization as it makes minimal run-time difference but does increase code complexity. Parked on a branch for historical reference. (check-in: [c21628e9c1] user: drh branch: subquery-limit-opt, size: 183210)
2017-05-31
02:58
[452c6f3aa6] part of check-in [de28e6514a] Avoid unnecessary memory zeroing during expression list allocation. (check-in: [de28e6514a] user: drh branch: trunk, size: 183090)
2017-05-29
14:26
[82ccc704a2] part of check-in [6854a34ed7] Optimizations to the Walker object and its methods to make the code a little smaller and to help it run a little faster. (check-in: [6854a34ed7] user: drh branch: trunk, size: 182922)
2017-05-25
00:08
[30f61b7d82] 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: 182656)
2017-05-15
15:12
[c83f799f3e] part of check-in [bb0d928158] Fix the build so that it works again with SQLITE_OMIT_SUBQUERY. (check-in: [bb0d928158] user: drh branch: trunk, size: 182578)
2017-05-06
18:09
[c980b2c929] part of check-in [04e7e5650e] Fix an obscure assertion fault that can follow an OOM. The problem was introduced by check-in [a1cf44763277b6c7]. (check-in: [04e7e5650e] user: drh branch: trunk, size: 182666)
2017-05-02
16:46
[965f5e6074] part of check-in [8424492eac] Additional comments on the sqlite3ExprIsConstantOrGroupBy() routine. No code changes. (check-in: [8424492eac] user: drh branch: having-where-optimization, size: 182634)
2017-04-29
20:53
[ed8914c001] part of check-in [5375a3ce56] Automatically transfer terms from the HAVING clause to the WHERE clause of an aggregate query in cases where the result of evaluating the term depends only one one or more of the GROUP BY expressions (and on no other inputs). (check-in: [5375a3ce56] user: dan branch: having-where-optimization, size: 181735)
2017-04-14
19:03
[f10e35dc50] 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: 180439)
14:50
[f6914d6d06] part of check-in [6bf673767b] Make USE_FULLWARN=1 the default for MSVC and fix harmless compiler warnings. (check-in: [6bf673767b] user: mistachkin branch: trunk, size: 180083)
2017-04-11
11:52
[f6572c7690] part of check-in [d6bb7c42ff] Fix a segfault that could occur if an indexed expression was used in a comparison operation within the result-set of a SELECT statement. (check-in: [d6bb7c42ff] user: dan branch: trunk, size: 180078)
2017-04-07
19:41
[8fd6b7bc10] 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: 180061)
2017-04-05
12:39
[6bce2cbdd8] 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: 179968)
11:57
[15f245fd12] part of check-in [9e6c939144] Save a few bytes and a few CPU cycles in sqlite3ExprListDelete() routine. (check-in: [9e6c939144] user: drh branch: trunk, size: 179962)
11:49
[d6b2f5ffa9] part of check-in [a1cf447632] Remove a conditional made unreachable by the previous ExprList enhancement. (check-in: [a1cf447632] user: drh branch: trunk, size: 179931)
11:32
[6b186566a1] part of check-in [2b6560ad88] Combine the ExprList_item objects and the ExprList wrapper into a single memory allocation, for improved performance and reduced footprint. (check-in: [2b6560ad88] user: drh branch: trunk, size: 179964)
2017-03-12
20:28
[f12a581f34] part of check-in [5ec655e8e8] Fix a possible NULL pointer dereference in following an OOM error in sqlite3ExprIsInteger(). Problem found by OSS-Fuzz. (check-in: [5ec655e8e8] user: drh branch: trunk, size: 180257)
19:39
[7eac40b592] part of check-in [18bf6aca2a] Remove an obsolete assert() in the IN operator code generation. (check-in: [18bf6aca2a] user: drh branch: trunk, size: 180194)
2017-02-18
20:05
[980e4627f5] part of check-in [c1adf95958] Add an optimization to OP_Column to speed up sequential OP_Column instructions that read earlier fields from the same cursor. Attempt to reorder OP_Column opcodes so as to take advantage of this. (check-in: [c1adf95958] user: dan branch: sort-column-opcodes, size: 183650)
2017-02-16
17:18
[8a29e9b72d] part of check-in [ff5e733cbf] Change two MallocZero() calls into MallocRaw() to avoid unnecessary memset(). (check-in: [ff5e733cbf] user: drh branch: trunk, size: 180257)
2017-02-13
13:35
[38bd92fcbd] part of check-in [670f10b242] Change all legacy instances of "#if SQLITE_DEBUG" to "#ifdef SQLITE_DEBUG" for consistency. (check-in: [670f10b242] user: drh branch: trunk, size: 180258)
2017-02-11
14:59
[4748f51a68] 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: 180255)
13:51
[c218ec8cfc] 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: 179970)
2017-02-03
14:44
[d29114e9b7] part of check-in [a7674ead5b] Modify the sqlite3SelectDup() routine to avoid recursing on Select.pPrior. (check-in: [a7674ead5b] user: dan branch: recursive-selectdup, size: 179977)
2017-01-31
12:41
[d7ef6fdb70] part of check-in [eacfdcf257] Further minor enhancement and size reduction in sqlite3ExprAssignVarNumber(). (check-in: [eacfdcf257] user: drh branch: trunk, size: 179882)
03:52
[27ac552489] part of check-in [5987ca1ff9] Performance optimization in sqlite3ExprAssignVarNumber(). (check-in: [5987ca1ff9] user: drh branch: trunk, size: 179882)
2017-01-09
18:20
[e559c6c1a0] part of check-in [8a90f69139] Try to move OP_Concat operations outside the inner loop. This turns out to make things very slightly slower, at least in speedtest1.c. (check-in: [8a90f69139] user: drh branch: failed-optimization, size: 179931)
2017-01-04
04:18
[f06f41e5e5] part of check-in [80ad317f89] Factor constant functions out of the inner loop since they are more expensive than the extra OP_Copy needed to move the result into place. (check-in: [80ad317f89] user: drh branch: trunk, size: 179716)
04:10
[9e60a71c78] part of check-in [2ab997e479] Clean up the implementation of constant function factorization. (check-in: [2ab997e479] user: drh branch: factor-constant-funcs, size: 179715)
01:07
[8ba6e4ee13] part of check-in [62e9270a80] Attempt to factor out constant functions from the interior of table scans, since functions can often be expensive to compute. (check-in: [62e9270a80] user: drh branch: factor-constant-funcs, size: 179724)
2017-01-03
14:39
[449cbb8b98] part of check-in [f778f58ae4] Put the affinity() function implementation inside of #ifdef SQLITE_DEBUG. (check-in: [f778f58ae4] user: drh branch: affinity-sql-func, size: 179165)
14:30
[3cf3bb3b5d] part of check-in [c27cd8a812] Merge all the latest changes from trunk. (check-in: [c27cd8a812] user: drh branch: affinity-sql-func, size: 179138)
13:45
[59418cecc9] part of check-in [36944be6be] Defer size checking on row-value assignments for when the RHS is a SELECT until after the "*" wildcards have been expanded. (check-in: [36944be6be] user: drh branch: trunk, size: 178574)
11:59
[b5f55c2955] part of check-in [abc27b6023] Fix a typo on a comment. No code changes. (check-in: [abc27b6023] user: drh branch: trunk, size: 177526)
02:58
[1df03961ab] part of check-in [696219b110] Improvements to the way vector assignment size checking is done. Size checks when the RHS is a SELECT are deferred until after "*" wildcards are expanded. (check-in: [696219b110] user: drh branch: vector-size-check, size: 178574)
00:27
[e115097aa8] part of check-in [14da99d41f] Improved assert()s on the sqlite3ExprListDup() logic for TK_SELECT_COLUMN. (check-in: [14da99d41f] user: drh branch: rowvalue-update-trigger, size: 177526)
2017-01-02
23:18
[c2be1c1ae3] part of check-in [2caaaab5e0] Put an ALWAYS() on an unreachable branch in the sqlite3ExprListDup() routine. (check-in: [2caaaab5e0] user: drh branch: rowvalue-update-trigger, size: 177388)
22:36
[d438df533e] part of check-in [61a442ea2c] Proposed fix for the row-value TRIGGER UPDATE problem described in ticket [8c9458e7]. (check-in: [61a442ea2c] user: drh branch: rowvalue-update-trigger, size: 177326)
2017-01-01
12:44
[3b662f58b5] part of check-in [2c4d167ccd] Detect row-value comparison size mismatches even when the size of one operand is obscured by an unexpanded subquery. (check-in: [2c4d167ccd] user: drh branch: trunk, size: 176790)
2016-12-26
00:18
[dfde7bf6d3] part of check-in [57e40e1cb1] Add the built-in affinity() SQL function. (check-in: [57e40e1cb1] user: drh branch: affinity-sql-func, size: 177292)
2016-12-23
13:52
[a90e37bc54] part of check-in [aa23d7eaf6] Add check to prevent a VList from growing after pointers to labels have been taken. (check-in: [aa23d7eaf6] user: drh branch: VList, size: 176728)
13:30
[fedcfcd874] part of check-in [9dcd85698a] Fix the VList object so that it actually works. (check-in: [9dcd85698a] user: drh branch: VList, size: 176650)
03:59
[e640b1c82b] part of check-in [68ecafa142] Use the VList object to replace Parse.azVar for tracking the mapping between SQL parameter names and parameter numbers. There is a performance improvement, though there are still a few hiccups in the current code. (check-in: [68ecafa142] user: drh branch: VList, size: 176550)
2016-12-14
14:07
[c7c11fbe8b] part of check-in [9cae4c2e30] Refactor the Table.nRef field as Table.nTabRef for easier grepping. (check-in: [9cae4c2e30] user: drh branch: trunk, size: 176981)
2016-12-07
21:35
[84a5e59018] part of check-in [28883e8f3e] Add the sqlite3VdbeAppendP4() method for adding P4 content to the most recently coded instruction. (check-in: [28883e8f3e] user: drh branch: trunk, size: 176978)
15:38
[0393a016d9] part of check-in [433d16ff3a] Prevent the flattening or where-term push-down optimizations from obscuring misuses of SQL row values that can lead to crashes or assert() failures. (check-in: [433d16ff3a] user: dan branch: trunk, size: 176982)
2016-12-06
22:47
[b4db982acf] 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: 176502)
2016-11-30
14:47
[b22e09630f] part of check-in [3816bb415e] Fix then handling of the (oversized) integer literal -0x8000000000000000. (check-in: [3816bb415e] user: drh branch: trunk, size: 176458)
2016-11-25
14:30
[8c224aa282] part of check-in [6df7c5747e] Add a comment to help clarify the EP_FromJoin hack in exprCodeBetween(). (check-in: [6df7c5747e] user: drh branch: trunk, size: 176403)
2016-11-23
21:13
[bf9c58cf9b] part of check-in [4c6efe600d] Code constant vector components outside of any loops in CASE and BETWEEN expressions. Fix for [1a684656]. (check-in: [4c6efe600d] user: drh branch: branch-3.15, size: 175886)
19:31
[b64811af00] part of check-in [c08aff13ea] Code constant vector components outside of any loops in CASE and BETWEEN expressions. Fix for [1a684656]. (check-in: [c08aff13ea] user: dan branch: trunk, size: 176049)
2016-11-11
19:08
[d8c8277d77] part of check-in [b835cf3e50] Avoid storing redundant fields in sorter records when the sort-key and data have fields in common. (check-in: [b835cf3e50] user: drh branch: trunk, size: 176039)
2016-11-10
20:14
[1fd53148e5] part of check-in [0af62fdbd8] Avoid storing redundant fields in sorter records when the sort-key and data have fields in common (as in "SELECT a FROM t1 ORDER BY 1"). (check-in: [0af62fdbd8] user: dan branch: sorter-opt, size: 176029)
2016-11-09
00:10
[ddd46bafbb] part of check-in [89d958abba] Enhance the OP_IdxInsert opcode to optionally accept unpacked key material. (check-in: [89d958abba] user: drh branch: unpacked-IdxInsert, size: 175954)
2016-11-02
02:17
[ce7110980f] part of check-in [9b3a3b41b5] Use NOT NULL partial indexes when the query is constrained by a single LIKE or GLOB. (check-in: [9b3a3b41b5] user: drh branch: trunk, size: 175944)
2016-10-03
16:33
[aac0b8d393] part of check-in [109852e51e] Size and performance optimizations on the sqlite3ExprAssignVarNumber() routine. (check-in: [109852e51e] user: drh branch: trunk, size: 175876)
15:28
[cf99b1a327] part of check-in [d15ae2e530] Avoid unnecessary strlen() calls in sqlite3ExprAssignVarNumber() by passing in the token length from the parser. (check-in: [d15ae2e530] user: drh branch: trunk, size: 176030)
12:56
[4f75ec38f9] part of check-in [012ff6dd30] Fix an obsolete comment on a variable definition in expr.c. No code changes. (check-in: [012ff6dd30] user: drh branch: trunk, size: 176020)
2016-09-30
21:20
[ebb5174d26] part of check-in [ab12fce331] Fix an always-true conditional left over from the previous commit. (check-in: [ab12fce331] user: drh branch: trunk, size: 176033)
20:22
[f0ea2e1a7a] part of check-in [6028502059] Fix the Parse.aColCache column cache so that all of the valid entries are in the first Parse.nColCache slots. (check-in: [6028502059] user: drh branch: trunk, size: 176046)
2016-09-23
21:36
[a27090ab1d] part of check-in [8a6ea455cd] Add the EP_Leaf flag bit to the Expr.flags field to indicate Expr nodes that do not have substructure. Use that bit to avoid unnecessary recursion. (check-in: [8a6ea455cd] user: drh branch: trunk, size: 176553)
20:59
[13bc043a6a] 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: 176325)
2016-09-22
18:53
[471ca87aa3] 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: 176320)
2016-09-19
10:24
[f35e6c250b] part of check-in [75146165dc] Improved performance in sqlite3ExprCodeTarget(). (check-in: [75146165dc] user: drh branch: trunk, size: 176573)
2016-09-18
16:08
[5f6c8263b0] part of check-in [6bf5ba10d2] Revise the implementation of OP_Once so that it is smaller, faster, and uses less memory. This also fixes an obscure bug introduced 3 days ago by check-in [5990a1bdb4a073]. (check-in: [6bf5ba10d2] user: drh branch: trunk, size: 176579)
2016-09-09
15:12
[c1de782695] part of check-in [6ac932c92a] Fix a out-of-order variable declaration for some compile-time configurations. (check-in: [6ac932c92a] user: drh branch: trunk, size: 176596)
2016-09-06
17:21
[028c34005c] part of check-in [7cc9746c54] Remove an unnecessary branch from expr.c. (check-in: [7cc9746c54] user: dan branch: rowvalue, size: 176604)
14:37
[4c2b988692] part of check-in [4071da2f87] Enhance the sqlite3GetTempRange() and sqlite3ReleaseTempRange() internal routines so that they use sqlite3GetTempReg() and sqlite3ReleaseTempReg() when nReg==1. (check-in: [4071da2f87] user: drh branch: rowvalue, size: 176623)
12:04
[17af5dc732] part of check-in [288e934f35] Fix a typo in a comment in expr.c. (check-in: [288e934f35] user: dan branch: rowvalue, size: 176498)
2016-09-05
22:50
[32bbbf7ef8] part of check-in [e8f105c300] Simplified logic to extract a column from a row value. (check-in: [e8f105c300] user: drh branch: rowvalue, size: 176497)
19:57
[48b18962e3] part of check-in [2fa5288a7e] Fix an assert() so that it does C-compiler does not combine an assert() conditional with a production code conditional and thereby confuse the mutation testing script. (check-in: [2fa5288a7e] user: drh branch: rowvalue, size: 176477)
12:02
[942c417e84] 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: 176477)
09:44
[750ed16649] 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: 177411)
2016-09-03
19:52
[23b595cc6e] part of check-in [7d9bd22c07] Fix a problem causing the affinity of sub-select row-value elements to be ignored in some contextes. (check-in: [7d9bd22c07] user: dan branch: rowvalue, size: 176776)
01:46
[7e0470e2b8] part of check-in [f1d06c49ba] Performance optimizations. (check-in: [f1d06c49ba] user: drh branch: rowvalue, size: 176590)
2016-08-26
22:09
[6ac2955b85] part of check-in [829f802be7] Fix a minor problem in sqlite3FindInIndex() related to rowids being used as part of the index. (check-in: [829f802be7] user: drh branch: rowvalue, size: 176576)
21:15
[4c80148f83] part of check-in [b9fc89e432] Fix the sqlite3FindInIndex() to ensure that it always uses a prefix of the index and uses no repeated columns. Enhanced comments. (check-in: [b9fc89e432] user: drh branch: rowvalue, size: 176570)
19:54
[935366a02a] part of check-in [171aa833a2] Add an EXPLAIN QUERY PLAN line for when a index is used to implement an IN operator. (check-in: [171aa833a2] user: drh branch: rowvalue, size: 175745)
19:31
[192dac6da7] part of check-in [4b589fbfcc] Enhance sqlite3FindInIndex() so that it is able to make use of the primary keys at the end of an index. (check-in: [4b589fbfcc] user: drh branch: rowvalue, size: 175554)
13:19
[1f2ddbec8b] part of check-in [b0cc6be4eb] Allow ROWID values in indexed vector comparisons. (check-in: [b0cc6be4eb] user: drh branch: rowvalue, size: 175128)
03:42
[bca7140549] part of check-in [397617009e] Comment improvements. Put ALWAYS and NEVER macros on three unreachable branches. (check-in: [397617009e] user: drh branch: rowvalue, size: 175066)
01:02
[2fe35bc5e9] part of check-in [9d96f61481] Remove an unreachable branch from sqlite3ExprAffinity() (check-in: [9d96f61481] user: drh branch: rowvalue, size: 174992)
2016-08-25
21:14
[45f814e52d] part of check-in [b56705ae63] Refactor the sqlite3ExprCodeIN() routine for improved maintainability. (check-in: [b56705ae63] user: drh branch: rowvalue, size: 174982)
15:46
[1c003fcb9c] part of check-in [b634429878] Improvements to IN operator code generator comments. Avoid unnecessary Copy operations on the LHS of the IN operator. (check-in: [b634429878] user: drh branch: rowvalue, size: 174946)
2016-08-24
21:54
[866bcb6e85] part of check-in [7ae504e62e] Simplified VDBE code for the vector NOT IN null-scanning loop. (check-in: [7ae504e62e] user: drh branch: rowvalue, size: 174277)
18:51
[3dc226ccd9] part of check-in [55945fc12f] In sqlite3FindInIndex(), improve internal comments and avoid an unreachable branch. (check-in: [55945fc12f] user: drh branch: rowvalue, size: 174239)
17:49
[57b6d994d8] part of check-in [6099c180db] Fix more unreachable branches. (check-in: [6099c180db] user: drh branch: rowvalue, size: 173707)
15:37
[c2d3844fb1] part of check-in [505a2f20ea] Add a NEVER() on an unreachable branch in comparisonAffinity(). (check-in: [505a2f20ea] user: drh branch: rowvalue, size: 173528)
00:51
[f433feeeaa] part of check-in [1e3bc3698a] The previous OOM fix was bad. Back it out and replace it with a better one. (check-in: [1e3bc3698a] user: drh branch: rowvalue, size: 173519)
00:25
[be8772ac50] part of check-in [25f6ed8de4] Avoid a potential null-pointer dereference following an OOM. (check-in: [25f6ed8de4] user: drh branch: rowvalue, size: 173551)
2016-08-23
19:02
[e67849c475] part of check-in [838c50a5bf] Simplify the row value misuse error message. (check-in: [838c50a5bf] user: drh branch: rowvalue, size: 173496)
18:30
[3d3cc24386] part of check-in [e149e6b93a] Fix a problem with rowvalue UPDATE when the rowvalue is not the left-most and the RHS is a multi-column subquery. (check-in: [e149e6b93a] user: drh branch: rowvalue, size: 173517)
17:30
[5117686878] part of check-in [c8ffae05e1] Fix an uninitialized variable in CASE expression code generation. (check-in: [c8ffae05e1] user: drh branch: rowvalue, size: 173419)
2016-08-22
14:30
[575d6767ab] part of check-in [07e69f43a2] Fix the vector BETWEEN operator so that it only evaluates the left-most vector expression once. Add support for vector comparisons in the CASE operator. (check-in: [07e69f43a2] user: drh branch: rowvalue, size: 173369)
00:48
[77215e927a] part of check-in [2f39987f21] Reinstate the mechanism in BETWEEN that avoids evaluating the first expression more than once, but fix the affinity extractor so that it works with this mechanism. The de-duplication of the first expression still does not work for vector expressions, though. (check-in: [2f39987f21] user: drh branch: rowvalue, size: 172248)
2016-08-20
22:49
[157f2aa7e5] part of check-in [e50d264fdc] The docs promise the in "x BETWEEN y AND z" the x expression is only evaluated once. That is no longer true, and so some tests are failing. This needs to be fixed before merging to trunk. (check-in: [e50d264fdc] user: drh branch: rowvalue, size: 171841)
21:11
[b6f0592292] part of check-in [d4562a9e7b] Further comment enhancements. No changes to code. (check-in: [d4562a9e7b] user: drh branch: rowvalue, size: 171958)
21:02
[4adf875e1b] part of check-in [4fb66d6592] Clarification of code comments in expr.c. Clean up the implementations of sqlite3ExprIsVector() and sqlite3ExprVectorSize() slightly. (check-in: [4fb66d6592] user: drh branch: rowvalue, size: 171619)
18:06
[e96f29a02a] part of check-in [9041ee4a6f] Fixes for problems following OOM errors. (check-in: [9041ee4a6f] user: drh branch: rowvalue, size: 171692)
17:00
[8e1288b32f] part of check-in [8384c77ebb] Do not duplicate the Expr.pLeft subtree of a TK_SELECT_COLUMN node. (check-in: [8384c77ebb] user: drh branch: rowvalue, size: 171618)
15:01
[f1d9c43742] part of check-in [203f07c5e1] Fix a segfault that could occur if a query that used a vector comparison contained certain types of syntax errors. (check-in: [203f07c5e1] user: dan branch: rowvalue, size: 171515)
01:06
[d5cffb307d] part of check-in [4165d20f64] Improvements to comments. No code changes. (check-in: [4165d20f64] user: drh branch: rowvalue, size: 171486)
00:51
[bdc98d3301] 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: 170878)
00:07
[ff73eb6cae] 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: 169746)
2016-08-19
19:12
[e139851835] part of check-in [acea4ee136] Improved comments on sqlite3CodeSubquery(). No changes to code. (check-in: [acea4ee136] user: drh branch: rowvalue, size: 166903)
2016-08-13
12:37
[d79a02ba0f] part of check-in [ec70a67ebc] Fix to the vector less-than operator. All legacy tests passing now. (check-in: [ec70a67ebc] user: drh branch: vector-compare, size: 166498)
10:02
[375de68ad2] part of check-in [dfc028cfbe] Attempt to simplify the logic and generated code for vector comparisons. Basic comparison operators are working, but there are many indexing test failures still to be worked through. (check-in: [dfc028cfbe] user: drh branch: vector-compare, size: 166597)
2016-08-12
11:25
[d05cc249f8] part of check-in [381aa73141] Add VdbeCoverage() macros on newly added VDBE branch operations. (check-in: [381aa73141] user: drh branch: rowvalue, size: 165982)
11:01
[04b320c93f] part of check-in [14009b32b9] Fix a post-OOM memory leak. (check-in: [14009b32b9] user: drh branch: rowvalue, size: 165822)
2016-08-11
12:01
[dfc2275726] part of check-in [8278be06fa] Fix some problems with handling "no such collation sequence" errors. (check-in: [8278be06fa] user: dan branch: rowvalue, size: 165806)
2016-08-08
16:52
[94b3d94696] part of check-in [0e927a7e02] Merge trunk changes with this branch. (check-in: [0e927a7e02] user: dan branch: rowvalue, size: 165732)
2016-08-04
01:47
[9c5eca8602] part of check-in [4ada023ca0] Add an experimental SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION compile-time option. This changes has been merged into main branches via cherry-pick. (check-in: [4ada023ca0] user: drh branch: unknown-function, size: 151773)
2016-08-03
16:14
[9539a6e094] part of check-in [18af74abc8] Fix stat4-based cost estimates for vector range constraints. (check-in: [18af74abc8] user: dan branch: rowvalue, size: 165569)
2016-08-02
17:45
[200cad2bc4] part of check-in [339f85f414] Fix SQLITE_OMIT_SUBQUERY builds. (check-in: [339f85f414] user: dan branch: rowvalue, size: 165513)
2016-08-01
20:14
[4db65a0c33] 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: 165369)
16:37
[cdde4d3ed7] 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: 164547)
2016-07-30
21:02
[f33dcbaf36] part of check-in [059d0d0535] Fix problems with vector == comparisons and NULL values. (check-in: [059d0d0535] user: dan branch: rowvalue, size: 164506)
16:39
[4e79d7a355] part of check-in [e9d9c6d46b] Remove the EP_Vector expression flag. (check-in: [e9d9c6d46b] user: dan branch: rowvalue, size: 162376)
2016-07-29
20:58
[d904598a80] 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: 162146)
18:12
[d21255d0b7] 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: 162059)
2016-07-28
19:47
[473ce0ac25] 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: 162417)
13:59
[82bc40bb27] part of check-in [9685880f7b] Merge latest trunk changes into this branch. (check-in: [9685880f7b] user: dan branch: rowvalue, size: 162021)
2016-07-27
19:33
[bee29fbb01] part of check-in [719a3b2035] Fix some problems with multi-column IN(SELECT...) processing. (check-in: [719a3b2035] user: dan branch: rowvalue, size: 160230)
19:20
[fbc17c717a] part of check-in [50f8ea37fb] Add test cases and fix a comment. (check-in: [50f8ea37fb] user: drh branch: improved-index-scan, size: 151610)
18:27
[3347e66d4e] 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: 151618)
2016-07-26
18:06
[f84861eaaf] 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: 160204)
2016-07-23
20:24
[8ff9d70cc2] part of check-in [e2fd6f49b1] Allow vector IN(SELECT ...) expressions to use an index if either all the indexed columns are declared NOT NULL or if there is no difference between the expression evaluating to 0 and NULL (as in a WHERE clause). (check-in: [e2fd6f49b1] user: dan branch: rowvalue, size: 159668)
2016-07-13
19:48
[939362d26f] part of check-in [34e35c71b2] Modifications towards better vector IN(...) support on this branch. Not activated yet. (check-in: [34e35c71b2] user: dan branch: rowvalue, size: 158735)
2016-07-10
19:35
[21b153e104] part of check-in [77c692a670] Fix typos in comments. No changes to code. (check-in: [77c692a670] user: mistachkin branch: trunk, size: 149819)
2016-07-09
20:23
[330854fe9f] 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: 157268)
2016-06-16
17:14
[523a5b1db2] part of check-in [0b1579caf0] Add a missing OP_ColumnsUsed opcode to code for expressions like "? IN (SELECT ...)" in cases where expression can use an index that may contain NULL values. (check-in: [0b1579caf0] user: dan branch: trunk, size: 149818)
2016-06-02
23:13
[798146ea4c] part of check-in [95f483e86e] Add the CSV extension to the test fixture. Fix a memory leak in the CSV extension. Add test cases for the CSV extension, including one that uses a WITHOUT ROWID virtual table participating in the OR optimization. (check-in: [95f483e86e] user: drh branch: without-rowid-vtab, size: 149636)
2016-05-26
20:56
[81bd7d8798] part of check-in [ffe80a1bfa] Add a new OP_SeekRowid opcode, that combines the functions of OP_MustBeInt and OP_NotExists. This makes the code slightly smaller and faster. (check-in: [ffe80a1bfa] user: drh branch: trunk, size: 149616)
2016-04-16
15:03
[8796c0739b] part of check-in [8eb3d7d836] Fix a couple of assert() statements that were failing with OOM error tests. (check-in: [8eb3d7d836] user: dan branch: rbu-vacuum, size: 149692)
2016-04-11
19:01
[17d4e745ef] part of check-in [9efe2265b1] Performance optimization to sqlite3Dequote() and its callers. (check-in: [9efe2265b1] user: drh branch: trunk, size: 149636)
18:25
[57fa7eb870] part of check-in [2764aeaa11] Performance optimization for the sqlite3ExprListDelete() routine. (check-in: [2764aeaa11] user: drh branch: trunk, size: 149701)
18:15
[22d553f3e6] part of check-in [e35b345cf8] Performance optimizations in the column cache of the code generator, and especially the sqlite3ExprCacheRemove() routine. (check-in: [e35b345cf8] user: drh branch: trunk, size: 149605)
16:43
[16829fcf84] part of check-in [476cc28388] Simplification and performance improvements in sqlite3ExprDup() and its subroutines. More work is possible in this area. (check-in: [476cc28388] user: drh branch: trunk, size: 149195)
14:49
[702260035c] part of check-in [60ad80e3af] Performance improvement in sqlite3ExprDelete(). (check-in: [60ad80e3af] user: drh branch: trunk, size: 149169)
01:06
[a195d2d047] part of check-in [6a5cceee48] Factor out the common operation of setting the Expr.x.pSelect field of an Expr object into a subroutine. (check-in: [6a5cceee48] user: drh branch: trunk, size: 149061)
2016-03-19
00:35
[289ffac524] part of check-in [88439a866b] Fix a register allocation bug in the VDBE code generator for PRAGMA integrity_check; (check-in: [88439a866b] user: drh branch: trunk, size: 148591)
2016-03-17
19:07
[f8137b7d3d] part of check-in [8607e3ac7a] A more compact implementation of the code generator for the IS and IS NOT operators. (check-in: [8607e3ac7a] user: drh branch: trunk, size: 148031)
18:41
[ee11e39874] part of check-in [41335d8800] An alternative method of encoding the wildcard in "SELECT *". This is an experiment. (check-in: [41335d8800] user: drh branch: select-wildcard, size: 148301)
2016-03-09
15:34
[c329d581e5] part of check-in [2c55c3c295] Slight simplification to the query optimizer logic associated with IN (SELECT). (check-in: [2c55c3c295] user: drh branch: trunk, size: 148294)
15:09
[4ce9e66a29] part of check-in [1ed6b06ea3] When optimizing expressions of the form "x IN (SELECT ...)" make sure that the subquery is not correlated. Fix for ticket [5e3c886796e5512]. (check-in: [1ed6b06ea3] user: drh branch: trunk, size: 148384)
2016-02-27
21:16
[c4dad2cd6c] part of check-in [d8c94a46df] Eliminate the need for the Column.zDflt (using Column.pDflt instead) to reduce the amount of memory needed to hold the schema. (check-in: [d8c94a46df] user: drh branch: trunk, size: 148221)
2016-02-15
00:34
[9adb58153f] part of check-in [3201fbcc51] Improvements to the application-defined function mechanism so that it is more compact and runs faster, especially when the application defines thousands of new SQL functions. (check-in: [3201fbcc51] user: drh branch: many-app-functions, size: 148203)
2016-02-05
13:38
[fbf0706199] 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: 148354)
01:55
[fddb1b19d7] part of check-in [c3ef03478a] Improvements to the way that OOM errors are processed. (check-in: [c3ef03478a] user: drh branch: oom-handling, size: 148201)
2016-02-04
02:34
[b37b5a2f27] 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: 148120)
2016-01-22
17:48
[d10c1cdef5] part of check-in [7323175337] Add the sqlite3TokenInit() utility function. (check-in: [7323175337] user: drh branch: trunk, size: 148147)
2016-01-18
13:18
[df0d7c3230] part of check-in [9e8c23acf7] Avoid unnecessary calls to memset() for a small performance improvement. (check-in: [9e8c23acf7] user: drh branch: trunk, size: 148154)
2016-01-14
22:19
[9a1a415086] part of check-in [0d1b3d7d3c] Combine the xFunc and xStep pointers of the FuncDef object into a single pointer xSFunc. (check-in: [0d1b3d7d3c] user: drh branch: trunk, size: 148133)
2016-01-08
12:46
[fe55c48936] part of check-in [cede2bf8e4] Reduce the number of calls to memset() in sqlite3DbMallocZero(). (check-in: [cede2bf8e4] user: drh branch: trunk, size: 148129)
2015-12-23
16:42
[38790e65d1] part of check-in [5d44d4a6cf] Fix some harmless gcc compiler warnings. Mostly in fts5, but also two in the core code. (check-in: [5d44d4a6cf] user: dan branch: trunk, size: 148095)
2015-12-21
15:22
[414f4c6b01] part of check-in [34073ce87d] Ensure that the Expr objects that describe indexed expressions are not modified by code generation. Fix for an assert() problem found by Jon Metzman using AFL. (check-in: [34073ce87d] user: drh branch: trunk, size: 148090)
2015-12-08
16:58
[ccb93d7b7e] part of check-in [901d0b8f3b] Changes to avoid undefined behavior in memset() and memcpy() and in the comparisons of pointers from different allocations. All problems are found by analysis tools - none have been seen in the wild. (check-in: [901d0b8f3b] user: drh branch: trunk, size: 147637)
2015-11-24
02:10
[cb1a419508] part of check-in [824ad96f72] Remove an incorrect ALWAYS() macro. Fix for ticket [e5c6268dd807fa8950] - a problem introduced in SQLite 3.9.0 and found by libFuzzer. (check-in: [824ad96f72] user: drh branch: trunk, size: 147495)
2015-11-21
17:27
[dfccb439a2] part of check-in [198d191b2f] Fix over-length source code lines. No logic changes. (check-in: [198d191b2f] user: drh branch: trunk, size: 147503)
2015-10-29
12:27
[16043ce1ca] part of check-in [d533e23f05] Apply optimizations to simplify OR clauses that contain constant terms. (check-in: [d533e23f05] user: drh branch: simplify-or-clause, size: 148514)
2015-10-28
20:01
[0080c0f128] part of check-in [b10ab59fb8] Make the internal sqlite3PExpr() interface responsive to the TKFLG_DONTFOLD flag on the operator parameter. (check-in: [b10ab59fb8] user: drh branch: trunk, size: 147496)
2015-10-26
18:51
[ea3e0c2981] 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: 147502)
2015-10-16
23:55
[d9896fda47] part of check-in [0df371d1a5] Fix a comment in expr.c and add a CORRUPT_DB to an assert() in btree.c. (check-in: [0df371d1a5] user: drh branch: trunk, size: 147092)
20:53
[41c83c4475] part of check-in [26fa091d68] Merge recent enhancements from trunk. Version now 3.9.1. (check-in: [26fa091d68] user: drh branch: cursor-hints, size: 147288)
2015-10-15
19:21
[e8765542b2] part of check-in [871e091df6] Enhance the use of the column cache for UPDATE statements, making them more efficient for the case where a column is modified to be an expression of other unmodified columns. (check-in: [871e091df6] user: drh branch: trunk, size: 146878)
2015-10-14
20:09
[7afc6450c3] part of check-in [2944414934] Merge in all the 3.9.0 updates from trunk. (check-in: [2944414934] user: drh branch: cursor-hints, size: 146711)
2015-10-10
14:41
[b89dfbb8a3] part of check-in [9ddef84d43] Compiler warning fixes: Rename some local variables from "j1" to avoid a name collision with the j1() bessel function in the math library. Omit a dummy initializer that gcc 4.6.3 does not like. (check-in: [9ddef84d43] user: drh branch: trunk, size: 146301)
2015-09-29
17:20
[36381822e6] 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: 146283)
2015-09-15
17:31
[572ebfeb5c] part of check-in [66fe068326] Merge enhancements from trunk. (check-in: [66fe068326] user: drh branch: cursor-hints, size: 146685)
2015-09-05
22:36
[3a76afcdac] part of check-in [7ab0b258ea] Omit all use of Expr nodes for TK_AS, as those nodes no longer served a useful purpose and in fact interferred with the query planner. (check-in: [7ab0b258ea] user: drh branch: trunk, size: 146275)
2015-09-03
14:39
[3783aa1915] part of check-in [25ee3000e9] Merge enhancements from trunk. (check-in: [25ee3000e9] user: drh branch: cursor-hints, size: 145768)
14:18
[f3c4d165de] part of check-in [1ab10cbf27] Merge enhancements from trunk. (check-in: [1ab10cbf27] user: drh branch: index-expr, size: 146408)
13:46
[af2c72f893] 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: 145358)
2015-09-02
18:19
[cf60b916ef] 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: 145396)
2015-09-01
18:31
[6814e926d9] part of check-in [29570a6048] Merge enhancements from trunk. (check-in: [29570a6048] user: drh branch: cursor-hints, size: 145883)
2015-08-31
18:13
[500c0ee6ac] part of check-in [e2f1caf117] Case should not be significant when comparing function names. (check-in: [e2f1caf117] user: drh branch: index-expr, size: 146523)
2015-08-26
18:04
[cf0c5ef646] part of check-in [ec6ddb3d48] Merge enhancements from trunk. (check-in: [ec6ddb3d48] user: drh branch: index-expr, size: 146419)
14:01
[5944e52989] part of check-in [c2f3bbad77] Evaluate expressions only once when the same expression is used in both the result set and in the ORDER BY clause. (check-in: [c2f3bbad77] user: drh branch: trunk, size: 145473)
2015-08-25
16:57
[4a52fd2914] part of check-in [efaabdb716] Add code to maintain indexes with expression arguments across DELETE, INSERT, and UPDATE statements. Legacy tests pass, but the new code paths are still largely untested. The query planner currently makes no effort to use expression indexes. (check-in: [efaabdb716] user: drh branch: index-expr, size: 146213)
2015-08-24
20:21
[650ac7c4f6] part of check-in [bed42116ad] Enhances the parser so that it accepts arbitrary expressions for the arguments of an index, though the code generator still rejects everything other than simple column names. The sqlite3RestrictColumnListSyntax() routine is removed since that feature is now handled by the parser. (check-in: [bed42116ad] user: drh branch: trunk, size: 145267)
15:39
[c05d67f1a0] part of check-in [83cbc4d876] Disallow the use of COLLATE clauses and the ASC and DESC keywords within foreign key constraints and in the argument list to common table expressions. (check-in: [83cbc4d876] user: drh branch: trunk, size: 145302)
2015-08-23
20:48
[c34408e0ac] part of check-in [518d6220a1] Fix a comment typo on sqlite3ExprAlloc(). No code changes. (check-in: [518d6220a1] user: drh branch: trunk, size: 144867)
2015-08-20
23:45
[673b80a52b] part of check-in [b9927c876c] Merge recent enhancements from trunk, including table-valued expressions. (check-in: [b9927c876c] user: drh branch: cursor-hints, size: 145279)
2015-08-19
15:20
[9b9fa7f825] 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: 144869)
2015-08-13
20:34
[e1fc69ce92] part of check-in [be254715b5] Fix a bug in sqlite3ExprContainsSubquery(). (check-in: [be254715b5] user: drh branch: cursor-hints, size: 145308)
20:07
[0cd7fabb57] part of check-in [82a7a61bc0] Merge in all the trunk changes from the previous year. This breaks the cursor-hint mechanism, but provides a baseline for trouble-shooting. (check-in: [82a7a61bc0] user: drh branch: cursor-hints, size: 145306)
2015-06-26
18:16
[c5c58e4d01] part of check-in [2abc44eb3b] Cache the sqlite3_context structure in the P4 operand of VDBE programs for faster SQL function dispatch. (check-in: [2abc44eb3b] user: drh branch: trunk, size: 144898)
2015-06-20
13:18
[32c836d9fa] part of check-in [7cdbae625e] Make sure that the likelihood() function does not mess up generation of result-set code when it is used (inappropropriately) in a result-set expression. (check-in: [7cdbae625e] user: drh branch: trunk, size: 144897)
2015-06-12
12:54
[fbde754df3] 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: 144883)
2015-06-11
13:58
[710c764c19] part of check-in [e63d01c69c] When generating code for partial indexes, be sure not to modify the index condition expression in the schema. (check-in: [e63d01c69c] user: drh branch: trunk, size: 145162)
2015-06-08
15:08
[0550baeca8] part of check-in [c32ce54ca4] Factor out the TreeView parse tree printing module into a separate file. (check-in: [c32ce54ca4] user: drh branch: view-optimization, size: 144681)
2015-06-05
22:33
[12e04f3229] part of check-in [be8e3fc70e] Split FROM-clause subquery flattening and code generation into separate loops. (check-in: [be8e3fc70e] user: drh branch: view-optimization, size: 152536)
15:59
[1980fffc75] 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: 152481)
2015-06-04
12:08
[d953b9f03c] 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: 152760)
2015-06-02
16:09
[5abe19af1c] part of check-in [80889306bf] Add the built-in affinity() SQL function. This turns out to be not as useful as originally envisioned, so abandon it on a branch. (check-in: [80889306bf] user: drh branch: affinity-func, size: 153352)
15:32
[52f5c1c2c1] part of check-in [bce3f04186] Rename SQLITE_AFF_NONE to SQLITE_AFF_BLOB. (check-in: [bce3f04186] user: drh branch: blob-affinity-rename, size: 152752)
2015-06-01
18:13
[5de0af7c63] part of check-in [f925389eaf] Corrections to comments in expr.c. No code changes. (check-in: [f925389eaf] user: drh branch: trunk, size: 152752)
2015-05-20
20:24
[1686997ef7] part of check-in [7f3943fb01] Fix a potential NULL pointer deference on a corrupt database schema. Cherrypick of [dc61b292d8ea]. (check-in: [7f3943fb01] user: dan branch: branch-3.8.6, size: 150315)
19:34
[e2a1f93860] 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: 150001)
2015-05-05
16:57
[3fb2ab3ab6] part of check-in [cc50883d67] Fix a minor coding inefficiency found during pre-release inspection. (check-in: [cc50883d67] user: drh branch: trunk, size: 152749)
2015-04-23
13:00
[4c05a28eeb] part of check-in [01c50cee37] Improvement to "ID" formatting on the ".selecttrace 0x1ff" debugging function. (check-in: [01c50cee37] user: drh branch: trunk, size: 152761)
2015-04-20
01:13
[5555f768c0] part of check-in [592c010478] Add an ALWAYS() around a new branch that was made unreachable by an even newer change. (check-in: [592c010478] user: drh branch: trunk, size: 152757)
2015-04-19
19:21
[25a732f30b] part of check-in [dc61b292d8] Fix a potential NULL pointer deference on a corrupt database schema. (check-in: [dc61b292d8] user: drh branch: trunk, size: 152749)
2015-04-17
19:41
[55e7ce8f7e] part of check-in [b67bb16c72] In the expression-tree comparison routine, do not compiler Expr.iColumn and Expr.iTable for TK_STRING expressions. (check-in: [b67bb16c72] user: drh branch: trunk, size: 152697)
2015-04-16
14:13
[f37d5eb44a] part of check-in [ec5a493ad2] Improvements to the way VALUES clauses are parsed. (check-in: [ec5a493ad2] user: drh branch: trunk, size: 152676)
2015-04-15
05:20
[8800584340] part of check-in [7c27310bdf] When adding the implied "LIMIT 1" to the end of a scalar subquery, make sure that subquery is not a VALUES-only query as such queries cannot deal with LIMIT clauses. (check-in: [7c27310bdf] user: drh branch: trunk, size: 152675)
04:20
[aba4f0547a] part of check-in [3872742591] Add a test case for what was formerly thought to be an unreachable condition: when the LHS of an OR operator contains an error and the RHS contains an IN operator. (check-in: [3872742591] user: drh branch: trunk, size: 152636)
2015-03-22
10:23
[d09dac67d5] part of check-in [8d27e3e16a] Fix a potential NULL pointer dereference following a syntax error. (check-in: [8d27e3e16a] user: drh branch: trunk, size: 152644)
2015-03-20
08:43
[eb4d795abc] 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: 152615)
2015-02-09
18:28
[3ef111b88a] part of check-in [24e78b8d65] Propagate COLLATE operators upward through function calls and CASE operations. And do not flatten an aggregate subquery into a query that uses other subqueries. Fixes for tickets [ca0d20b6cdddec5] and [2f7170d73bf9], respectively. (check-in: [24e78b8d65] user: drh branch: trunk, size: 152547)
16:09
[f40082f5d3] part of check-in [c053448a55] Propagate the COLLATE operator upward through function calls. Initial fix for ticket [ca0d20b6cdddec5e8]. (check-in: [c053448a55] user: drh branch: tkt-2f7170d7, size: 152192)
15:21
[3fbe5a2a0b] part of check-in [0b7d65e3fd] Disable the query flattener for aggregate subqueries if the parent query uses other subqueries in its result set or WHERE clause or ORDER BY clause. Preliminary fix for ticket [2f7170d73bf9abf8]. However it still contains a defect similar to the COLLATE problem of [ca0d20b6cddd]. (check-in: [0b7d65e3fd] user: drh branch: tkt-2f7170d7, size: 151282)
14:07
[d66424535d] part of check-in [4ef7ceced2] Rename the internal "EP_Constant" bitmask to a less misleading "EP_ConstFunc". (check-in: [4ef7ceced2] user: drh branch: trunk, size: 150969)
2015-01-27
13:17
[abe930897c] part of check-in [e098de6910] Fix a (almost always harmless) read past the end of a memory allocation that comes about because the Expr.pTab field is checked on an EXPR_REDUCEDSIZE Expr object before checking the Expr.op field to know that the Expr.pTab field is meaningless. (check-in: [e098de6910] user: drh branch: trunk, size: 150968)
2015-01-21
17:00
[33a4518b2c] part of check-in [5f592359d6] Fix an assert() that may fail following an OOM error. (check-in: [5f592359d6] user: dan branch: trunk, size: 150968)
2015-01-09
01:27
[7be80f7dc3] part of check-in [fe57886331] Fix three crash problems discovered by afl-fuzz. Ticket [a59ae93ee990a55]. (check-in: [fe57886331] user: drh branch: trunk, size: 150892)
2014-12-04
16:29
[6796707fe6] part of check-in [5a80957b04] If a table is the right operand of a LEFT JOIN, then any column of that table can be NULL even if that column has a NOT NULL constraint. Fix for ticket [6f2222d550f5b0ee7ed]. (check-in: [5a80957b04] user: drh branch: branch-3.8.7, size: 149931)
16:27
[00da3072f3] part of check-in [6f6fcbe473] If a table is the right operand of a LEFT JOIN, then any column of that table can be NULL even if that column has a NOT NULL constraint. Fix for ticket [6f2222d550f5b0ee7ed]. (check-in: [6f6fcbe473] user: drh branch: trunk, size: 150847)
2014-11-19
16:36
[73de4c0da2] part of check-in [6d00bcca6e] Add new requirements marks associated with the file format documentation. No changes to code. (check-in: [6d00bcca6e] user: drh branch: trunk, size: 150796)
2014-11-14
15:42
[1891cb5051] part of check-in [98457a57d6] Do not automatically remove the DISTINCT keyword from "a IN (SELECT DISTINCT ...)" expressions. Fix for [db87229497]. (check-in: [98457a57d6] user: drh branch: branch-3.8.7, size: 149880)
15:28
[a3ff05db57] part of check-in [55e453aadb] Do not automatically remove the DISTINCT keyword from "a IN (SELECT DISTINCT ...)" expressions. Fix for [db87229497]. (check-in: [55e453aadb] user: dan branch: trunk, size: 150653)
2014-10-24
19:28
[0391a657df] 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: 150696)
2014-10-01
13:17
[fc204d08af] part of check-in [07c89940c4] Show the TK_DOT operator in the TreeView debugging output. No changes to production code. (check-in: [07c89940c4] user: drh branch: trunk, size: 149923)
2014-09-30
12:33
[46a8ca9336] 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: 149876)
2014-09-29
18:47
[622ca88bb2] part of check-in [5e5d6e8680] Add the OPFLAG_MULTICOLUMN flag to the OP_Column opcode. Rearrange OP_Column instructions to take advantage of the new flag for a small performance increase (check-in: [5e5d6e8680] user: drh branch: faster-OP_Column, size: 150493)
2014-09-24
13:20
[f321192489] part of check-in [1ad2bc1ed4] Do not allow parameters in a DEFAULT clause of a CREATE TABLE statement. Ticket [78c0c8c3c9f7c1]. (check-in: [1ad2bc1ed4] user: drh branch: trunk, size: 150452)
2014-09-21
00:27
[4f101c8ddc] part of check-in [c0b61f7092] Improved ".selecttrace" output. (check-in: [c0b61f7092] user: drh branch: select-trace, size: 149255)
2014-09-20
20:24
[51dfaa60c0] part of check-in [f1ba68f131] Fix the SELECTTRACE_ENABLE macro so that it doesn't cause problems for testfixture. Add new SELECTTRACE() calls. (check-in: [f1ba68f131] user: drh branch: select-trace, size: 149306)
2014-09-12
17:41
[19392d98e0] part of check-in [320556233e] Simplify the way the column cache is managed around OP_Move instructions. (check-in: [320556233e] user: drh branch: trunk, size: 149212)
2014-09-06
16:39
[441a7e24e2] part of check-in [e62aab5e92] Fix typos in comments. No code changes. (check-in: [e62aab5e92] user: peter.d.reid branch: trunk, size: 149356)
2014-08-29
12:29
[e1691ab0fe] part of check-in [462f42af52] Contains a fault. Was: Avoid an unnecessary OP_Move operation for expression subqueries. (check-in: [462f42af52] user: drh branch: mistake, size: 149356)
11:24
[a4e6163338] part of check-in [8c57bcc327] Add the sqlite3VdbeChangeDest() routine that can be used to eliminate OP_Move opcodes. (check-in: [8c57bcc327] user: drh branch: experimental, size: 149399)
2014-08-25
20:11
[358634f4dd] part of check-in [91d8a8d0b7] Allow CAST expressions and unary "+" operators to be used in the DEFAULT argument of an ALTER TABLE ADD COLUMN and to be understand on the RHS of range constraints interpreted by STAT3/4. This involves a rewrite of the implementation of the CAST operator. (check-in: [91d8a8d0b7] user: drh branch: trunk, size: 149321)
2014-08-06
00:29
[f749009cf4] part of check-in [0ad1ed8ef0] A simpler fix for ticket [3a88d85f36704eebe1] - one that uses less code. The error message is not quite as good, but as this error has apparently not previously occurred in over 8 years of heavy use, that is not seen as a serious problem. (check-in: [0ad1ed8ef0] user: drh branch: trunk, size: 149933)
2014-08-05
21:31
[94d26c8e47] part of check-in [29ba812825] Ensure that aggregate functions are not used when evaluating a default value for a table column. Candidate fix for ticket [3a88d85f36704eebe134f7]. (check-in: [29ba812825] user: drh branch: trunk, size: 150073)
00:53
[ef474fc0e7] part of check-in [01f60027ad] Improved VdbeCoverage() macros. A few minor simplifications to generated VDBE code. (check-in: [01f60027ad] user: drh branch: IN-operator-improvements, size: 149915)
2014-08-04
18:50
[8ac2d0e8a0] part of check-in [7fdf26da1d] Further enhancements to IN-operator processing. (check-in: [7fdf26da1d] user: drh branch: IN-operator-improvements, size: 149839)
16:39
[8f5e763623] part of check-in [92ba282146] Refinements to the enhanced IN-operator logic. (check-in: [92ba282146] user: drh branch: IN-operator-improvements, size: 149649)
15:12
[850a67c016] 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: 146357)
2014-08-02
21:03
[89574df1ed] part of check-in [436e884215] Enhancements to the code generator for the IN operator that result in much faster queries in some cases, for example when the RHS of the IN operator changes for each row of a large table scan. (check-in: [436e884215] user: drh branch: IN-operator-improvements, size: 149671)
2014-08-01
21:12
[564c28f4f6] part of check-in [9bc1c730a3] A better comment on the generated code for the NULL-in-RHS-of-IN detection logic. (check-in: [9bc1c730a3] user: drh branch: trunk, size: 146345)
21:00
[ac35f4c83c] part of check-in [468e730036] Improved detection and handling of NULL values on the RHS of a IN operator. (check-in: [468e730036] user: drh branch: trunk, size: 146325)
18:00
[45da7f2dd6] part of check-in [c11e55fabb] Remove an unnecessary OP_Null in the IN-operator logic. Attempt to clarify comments explaining the IN-operator code, though it is not clear that the comments are correct even yet - more work to be done. (check-in: [c11e55fabb] user: drh branch: trunk, size: 146927)
15:34
[1f7fa7ddbd] part of check-in [e13175d357] The idea of coding IN operator with a short list on the RHS as an OR expression turns out to be helpful. If the list is of length 1 or 2, the OR expression is very slightly faster, but the ephemeral table approach is clearly better for all list lengths greater than 2. Better to keep the code simple. (check-in: [e13175d357] user: drh branch: IN-operator-improvements, size: 146754)
14:46
[7c52ea8b32] 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: 147246)
2014-07-31
22:59
[3be0e9f90b] 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: 146627)
20:16
[0e2a6c1cd3] part of check-in [1361450a9d] Omit a pointless OP_Null when processing a value-list RHS of an IN operator where the LHS is a rowid. (check-in: [1361450a9d] user: drh branch: trunk, size: 146630)
15:44
[77ca517a25] part of check-in [f4cb53651b] Deactivate the DISTINCT in a SELECT on the right-hand side of an IN operator, since it should not make any difference in the output but dues consume extra memory and CPU time. (check-in: [f4cb53651b] user: drh branch: trunk, size: 146616)
2014-07-23
14:52
[b989d07fc7] part of check-in [a5b383e077] Remove a surplus function prototype. #ifdef code that is not used when hex integers are omitted at compile time. (check-in: [a5b383e077] user: drh branch: hex-literal, size: 146504)
13:40
[b1ffac76b6] part of check-in [6c6f0de59b] Change the hex literal processing so that only the SQL parser understands hex literals. Casting and coercing string literals into numeric values does not understand hexadecimal integers. This preserves backwards compatibility. Also: Throw an error on any hex literal that is too big to fit into 64 bits. (check-in: [6c6f0de59b] user: drh branch: hex-literal, size: 146458)
2014-06-26
21:28
[40d06d1543] part of check-in [92f7ad43db] Revise the affinity returned for expressions flagged as 'generic'. Fix for [9a8b09f8e6]. (check-in: [92f7ad43db] user: mistachkin branch: trunk, size: 146355)
2014-05-19
15:16
[2a68a4ab60] 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: 146394)
2014-05-06
15:28
[78326e5d1f] 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: 147488)
2014-04-13
19:28
[4f9e497c66] 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: 146369)
2014-03-24
12:33
[671a2a43c1] part of check-in [0b95b7a874] Cancel column-cache entries that are involved in a comparison operator since the comparison might have forced an affinity change. Originally proposed as a fix for ticket [a8a0d2996a], but later determined to be incorrect. (check-in: [0b95b7a874] user: drh branch: tkt-a8a0d2996a, size: 146533)
2014-03-20
20:56
[da2b3cb410] part of check-in [eca35871c3] Merge trunk fixes for "x IN (?)" handling. (check-in: [eca35871c3] user: drh branch: orderby-planning, size: 146396)
19:04
[6e1e8bca46] part of check-in [d5a1530bdc] Remove a testcase() that is now always true due to the "x IN (?)" optimization. Add an ALWAYS() around a conditional in the parser that cannot be false. (check-in: [d5a1530bdc] user: drh branch: trunk, size: 146451)
17:03
[16ea9cefe7] part of check-in [2ea4a9f75f] The "x IN (?)" optimization in check-ins [2ff3b25f40] and [e68b427afb] is incorrect, as demonstrated by the in4-5.1 test case in this check-in. The "COLLATE binary" that was being added to the RHS of IN was overriding the implicit collating sequence of the LHS. This change defines the EP_Generic expression node property that blocks all affinity or collating sequence information in the expression subtree and adds that property to the expression taken from RHS of the IN operator. (check-in: [2ea4a9f75f] user: drh branch: trunk, size: 146491)
15:14
[b74939e793] part of check-in [b1435f26b0] Fix harmless compiler warnings. (check-in: [b1435f26b0] user: drh branch: trunk, size: 146394)
2014-03-19
14:10
[e33fa25d22] 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: 146196)
2014-02-26
19:05
[0b84f62d65] 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: 146293)
2014-02-18
03:07
[014b8087a1] part of check-in [b92d31a97d] Add VdbeCoverage() and VdbeCoverageIf() macros for improved VDBE coverage testing. (check-in: [b92d31a97d] user: drh branch: trunk, size: 146251)
01:07
[e908787e47] part of check-in [915f6f1c7a] Improvements to "NOT IN (SELECT ...)" processing. Only test for NULL values on the RHS on the first iteration, then remember the result. There has been logic to do this for year, but it didn't work right and ended up repeating the NULL test on every iteration. This inefficiency was found using the VDBE coverage testing tools. (check-in: [915f6f1c7a] user: drh branch: trunk, size: 146184)
2014-02-17
22:40
[d1a8ccbf7e] 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: 146275)
2014-02-16
01:55
[90bba0ca6e] part of check-in [aa2d8b0e81] Enhance the code generator for INSERT INTO ... SELECT so that the SELECT generates output directly in the registers that INSERT INTO will be using, in many cases, and OP_SCopy operations can thus be avoided. (check-in: [aa2d8b0e81] user: drh branch: insert-optimization, size: 145683)
2014-02-09
18:02
[9bea427f95] part of check-in [67bfd59d90] Use the WITH clause to help resolve names for SELECT statements on the left of a compound query. Proposed fix for ticket [31a19d11b97088296a]. (check-in: [67bfd59d90] user: drh branch: trunk, size: 145722)
2014-02-06
23:56
[fabda9e932] part of check-in [2f3376ebf1] Delete the OP_VerifySchema opcode. Enhance OP_Transaction to do the schema version checks that OP_VerifySchema used to do. (check-in: [2f3376ebf1] user: drh branch: trunk, size: 145746)
03:31
[fa9cd9b4bd] 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: 145181)
2014-02-05
19:10
[9bc9ed4fdc] part of check-in [61c34ba71b] Separate out the code generators for the RHS of an IN operator and for SELECT/EXISTS expressions. (check-in: [61c34ba71b] user: drh branch: subquery-codegen-refactor, size: 144887)
2014-02-04
23:45
[2c710c35a0] part of check-in [f2504089df] Do not mark the ephemeral tables used to hold the RHS of IN clauses as unordered because the NGQP will use those ephemeral tables to help order the output. This is not an issue for standard SQLite since ephemeral tables there are always ordered, regardless of the hint. It only affects systems that substitute an alternative storage engine. (check-in: [f2504089df] user: drh branch: trunk, size: 145747)
2014-01-29
01:46
[e3e09af908] part of check-in [5bb29b8210] Make sure that sqlite3SelectDup() initializes the nSelectRow of the duplicate Select object. (check-in: [5bb29b8210] user: drh branch: trunk, size: 145816)
2014-01-24
22:58
[96f00a2623] part of check-in [87bf60637e] Fixes for various clang warnings. (check-in: [87bf60637e] user: drh branch: trunk, size: 145780)
2014-01-22
18:31
[61f9105820] part of check-in [dea2ca6a15] Fix harmless compiler warnings. (check-in: [dea2ca6a15] user: drh branch: trunk, size: 145745)
2014-01-21
00:19
[1c954bc76b] part of check-in [cc1cb32178] Add support for the LEVEL pseudo-column in the recursive part of a common table expression. LEVEL has the value of 1 on the first iteration and successively larger integer values of subsequent iterations. It cannot have a table qualifier. Actual columns named "level" can still be accessed by including the table name qualifier. (check-in: [cc1cb32178] user: drh branch: level-pseudocolumn, size: 145919)
2014-01-18
15:22
[8c7e482bc8] part of check-in [2ad4583c0c] Add asserts() for a couple of unreachable conditions. Add the Mandelbrot Set query as a test case. (check-in: [2ad4583c0c] user: drh branch: trunk, size: 145790)
2014-01-16
18:34
[e239763d8b] 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: 145782)
10:58
[c09e34fa7c] part of check-in [6bfa387e82] Disable the flattening optimization if the parent query is the recursive part of a recursive CTE and the sub-query is a compound query. (check-in: [6bfa387e82] user: dan branch: common-table-expr, size: 145814)
2014-01-15
19:42
[36c313049a] part of check-in [3908e2ea2e] Fixes so that SQLITE_OMIT_CTE builds work. (check-in: [3908e2ea2e] user: dan branch: common-table-expr, size: 145832)
18:12
[fccff6c8cd] part of check-in [61be2da0ae] When resolving names, consider a reference to a recursive CTE column as equivalent to a reference to the outermost name-context. This ensures that correlated sub-queries are correctly identified as such. (check-in: [61be2da0ae] user: dan branch: common-table-expr, size: 145771)
14:40
[46ad3b4161] part of check-in [860aa93663] Don't try to verify the schema of transient table (such as generated inside a WITH clause) when generating code for "IN table" operators. (check-in: [860aa93663] user: drh branch: common-table-expr, size: 145720)
14:17
[2277282d89] part of check-in [9472f6d820] Disable the flattening optimization if the sub-query is a recursive CTE. (check-in: [9472f6d820] user: dan branch: common-table-expr, size: 145683)
2014-01-14
20:14
[fee4b54fdc] part of check-in [a5c2a54a07] Add code to handle recursive CTEs. (check-in: [a5c2a54a07] user: dan branch: common-table-expr, size: 145479)
2014-01-13
15:12
[de86bf987c] part of check-in [a26f399ba4] Add code to handle non-recursive CTEs in the same way as SQL views. (check-in: [a26f399ba4] user: dan branch: common-table-expr, size: 145447)
2014-01-04
20:00
[4115ad6708] part of check-in [f461e2b397] Fix an typo that breaks the build when SQLITE_ENABLE_TREE_EXPLAIN is defined. (check-in: [f461e2b397] user: drh branch: trunk, size: 144911)
15:17
[15a86b7632] part of check-in [4e725f5313] Improvements to the column-cache for nested AND/OR operators. (check-in: [4e725f5313] user: drh branch: trunk, size: 144914)
2014-01-02
17:57
[ca0959386f] part of check-in [b7e39851a7] Be more aggressive in optimizing constant conditional expressions. (check-in: [b7e39851a7] user: drh branch: trunk, size: 144763)
2013-12-20
15:59
[ffe4bc79c6] part of check-in [2ae22dc0cb] Combine adjacent single-register OP_Copy instructions into a single multi-register OP_Copy, where possible. Fix the Synopsis comment for multi-register OP_Copy instructions to show the correct register ranges. (check-in: [2ae22dc0cb] user: drh branch: trunk, size: 144142)
2013-12-18
15:11
[962c29881b] part of check-in [4c6a659c43] Show changes to the column cache when PRAGMA vdbe_addoptrace=ON is set. (check-in: [4c6a659c43] user: drh branch: column-cache-debug, size: 143877)
2013-12-07
23:35
[cdfc50b604] 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: 143919)
2013-11-21
21:23
[31a2b65339] part of check-in [487f20366c] Do not reuse factored constants that might have had their encodings changed. (check-in: [487f20366c] user: drh branch: trunk, size: 143513)
20:48
[afc039ecfe] part of check-in [882622662d] Fix the code generator to honor turning off constant expression factoring. (check-in: [882622662d] user: drh branch: trunk, size: 143149)
16:08
[3c629b4b20] part of check-in [50d350abbc] When one or more arguments to a function are constants, try to factor out just those arguments into initialization code. (check-in: [50d350abbc] user: drh branch: trunk, size: 143190)
14:44
[98800f5a54] part of check-in [9b4217f055] Remove the obsolete TK_CONST_FUNC token type. (check-in: [9b4217f055] user: drh branch: trunk, size: 142215)
14:33
[c3a87def4d] part of check-in [1b0f779e19] Add the ability to factor constant functions out of inner loops. But do not factor out non-constant functions, like random(). (check-in: [1b0f779e19] user: drh branch: trunk, size: 142335)
2013-11-20
02:53
[d81090a3f3] part of check-in [5562cd343d] Simplifications to the VdbeCursor object. (check-in: [5562cd343d] user: drh branch: trunk, size: 142231)
2013-11-15
20:06
[1a295d8b0a] part of check-in [cee835fe90] Add ALWAYS and NEVER macros to currently unreachable but important branches in sqlite3ExprCompare(). (check-in: [cee835fe90] user: drh branch: expr-codegen-enhancement, size: 142220)
18:15
[016e9dccac] 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: 142197)
15:52
[eb7eb7fa78] part of check-in [835be656bb] Improvements to the Expr comparison routine to make it more general. Improvements to unary-minus code generation so that it can make use of a global constant register with a zero value. (check-in: [835be656bb] user: drh branch: expr-codegen-enhancement, size: 142426)
01:10
[b54ac7b5a7] 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: 142330)
2013-11-06
19:59
[e7bbe3c691] 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: 145969)
2013-11-05
13:33
[b77efad242] part of check-in [54b2219297] Standardize the error messages generated by constraint failures to a format of "$TYPE constraint failed: $DETAIL". This involves many changes to the expected output of test cases. (check-in: [54b2219297] user: drh branch: omit-rowid, size: 145983)
2013-10-31
20:34
[ecc2b98eb7] part of check-in [9b6d9e106a] Fix the Synopsis on OP_Concat. Added test_addop_breakpoint() during SQLITE_DEBUG. Enhanced sqlite3VdbeChangeToNoop() to omit the instruction if it is the most recent added. Continue to fix problems with UPDATE and WITHOUT ROWID. (check-in: [9b6d9e106a] user: drh branch: omit-rowid, size: 145980)
17:38
[179b164b6e] 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: 145952)
2013-10-23
13:30
[3180b63320] part of check-in [b21d831b2a] Some inserts and queries working for multi-column primary keys and WITHOUT ROWID. (check-in: [b21d831b2a] user: drh branch: omit-rowid, size: 145836)
2013-10-22
18:01
[040c0d340c] 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: 145833)
2013-10-21
23:55
[fd2060b79e] part of check-in [4e69dd5f9b] Minor refactoring of the PRIMARY KEY parsing logic to facilitate enhancements. (check-in: [4e69dd5f9b] user: drh branch: omit-rowid, size: 147479)
2013-10-04
15:30
[e7338ccffd] part of check-in [07462bb605] Improved estimates of the relative speed of index scans based on declared datatypes of columns in the table. Add "r" column to PRAGMA index_info, showing the estimated relative scan rate. (check-in: [07462bb605] user: drh branch: index-scan-rate, size: 145828)
2013-09-13
18:15
[1017f48221] part of check-in [86ad358b5a] Remove one unreachable branch and add asserts() to dupedExprStructSize(). New asserts verify that removed branch is unused and that constants that are ORed together in the output do not overlap. (check-in: [86ad358b5a] user: drh branch: trunk, size: 145819)
2013-09-12
23:42
[58ffffbb83] part of check-in [695aee46e9] Refactor the ExprSetIrreducible() macro into ExprSetVVAProperty(*,EP_NoReduce). This is a naming change only. The logic is the same. (check-in: [695aee46e9] user: drh branch: unlikely-func, size: 145716)
17:29
[3104c01672] 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: 145677)
16:50
[7f93e51fd7] part of check-in [579a512538] Increase the number of bits available in Expr.flags. Other tweaks aimed at making expression processing more robust. (check-in: [579a512538] user: drh branch: expr-tuning, size: 145029)
2013-09-06
15:23
[d0ed048b3b] 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: 145501)
13:10
[33ae44812d] part of check-in [97b10e66e9] Combine the FuncDef.iPrefEnc and FuncDef.flags fields into a single new FuncDef.funcFlags field. (check-in: [97b10e66e9] user: drh branch: trunk, size: 144999)
2013-08-28
01:54
[4d89bd03a0] 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: 144907)
2013-08-21
12:04
[6bab61c757] part of check-in [781592f32c] Candidate fix for [d666d600a6]. (check-in: [781592f32c] user: dan branch: trunk, size: 144903)
2013-08-19
18:17
[42d8235af4] part of check-in [1c63e9515b] Add some extra assert() statements to silence a few clang warnings. (check-in: [1c63e9515b] user: dan branch: trunk, size: 144889)
2013-08-06
17:24
[0bbb44462a] part of check-in [d43dcbc488] Add a testcase() macro to verify OOM coverage. (check-in: [d43dcbc488] user: drh branch: trunk, size: 144855)
16:56
[cd4fb5acb6] part of check-in [9103c27ceb] Remove unreachable branches in expr.c, replacing them with assert() and testcase() statements. (check-in: [9103c27ceb] user: drh branch: trunk, size: 144771)
2013-08-05
19:11
[7e55edefb8] part of check-in [7301bedd94] Factor all KeyInfo object allocations into a single function: sqlite3KeyInfoAlloc(). Always allocate enough space so that sqlite3VdbeRecordCompare() can avoid checking boundaries and hence run faster. (check-in: [7301bedd94] user: drh branch: trunk, size: 144668)
2013-08-02
20:11
[2068a7c17e] part of check-in [c5c0a8ab6c] Add NEVER() and ALWAYS() macros on some unreachable yet prudent branches. (check-in: [c5c0a8ab6c] user: drh branch: trunk, size: 144728)
2013-08-01
15:09
[b873f60585] part of check-in [0c8cfdfae2] More test cases and corresponding bug fixes. (check-in: [0c8cfdfae2] user: drh branch: partial-indices, size: 144721)
13:04
[27a451dc75] part of check-in [8e07aa2ad5] Fill out an initial implementation of the sqlite3ExprImpliesExpr() function. (check-in: [8e07aa2ad5] user: drh branch: partial-indices, size: 144495)
01:14
[299f1de324] 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: 143515)
2013-07-31
23:22
[8a5e78f47c] 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: 143381)
2013-06-26
00:34
[2b47ae9da6] part of check-in [19ab4811d5] Fix an uninitialized variable detected by valgrind. Unclear whether or not this should apply to trunk. (check-in: [19ab4811d5] user: drh branch: nextgen-query-plan-exp, size: 142573)
2013-06-18
20:06
[3286e703ad] part of check-in [4fbb0c4d26] Adjustments to testcase() macros for improved testability. (check-in: [4fbb0c4d26] user: drh branch: nextgen-query-plan-exp, size: 142527)
2013-06-11
13:30
[9cc9e4c851] 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: 142527)
2013-05-28
12:11
[ac9d259eea] part of check-in [a0d5cc9315] Many small harmless comment changes. Removal of obsolete comments and fixing misspelled words. No changes to code. (check-in: [a0d5cc9315] user: drh branch: trunk, size: 142546)
2013-05-15
17:47
[e40d198a71] part of check-in [867b3e3b29] The sqlite3ExprCollSeq() function can no longer be called while parse the schema, so remove the code path inside of sqlite3ExprCollSeq() that dealt with that case. (check-in: [867b3e3b29] user: drh branch: trunk, size: 142546)
2013-04-25
00:57
[437c03d5bb] part of check-in [39b4e6ff93] Make sure the affinity and datatype of sub-subqueries are initialized prior to subqueries as the latter relies on the former. (check-in: [39b4e6ff93] user: drh branch: trunk, size: 142726)
2013-03-21
21:20
[48048fca95] part of check-in [6f6e2d5094] Many spelling fixes in comments. No changes to code. (check-in: [6f6e2d5094] user: mistachkin branch: trunk, size: 142695)
2013-03-12
20:38
[d488bb60e5] 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: 142695)
2013-03-01
01:07
[a23b4aac2a] part of check-in [d73435587b] Always use strncmp() rather than memcmp() when comparing strings where one or other string might be less than the length parameter, since optimized versions of memcmp() might read past the first difference and in so doing generate an access violation. (check-in: [d73435587b] user: drh branch: trunk, size: 142510)
2013-02-09
15:37
[f6c20285bd] part of check-in [3f67437536] Rename SQLITE_CONSTRAINT_RAISE to SQLITE_CONSTRAINT_TRIGGER. Put the extended constraint error codes in alphabetical order. Add many test cases for the extended constraint error codes. (check-in: [3f67437536] user: drh branch: constraint-error-codes, size: 142514)
13:58
[44714c8f0e] part of check-in [5461104668] Add extended error codes for constraint errors. (check-in: [5461104668] user: drh branch: constraint-error-codes, size: 142512)
2013-01-03
00:45
[4dff0b04ea] part of check-in [4cf5ed7ea1] Now supports result sets of the form "TABLE.*" with nested FROM clauses. (check-in: [4cf5ed7ea1] user: drh branch: name-resolution-fix, size: 142457)
2012-12-08
21:36
[0e41d66d86] 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: 142245)
03:34
[f4c7d2040f] part of check-in [7b96115e81] Veryquick passes all tests now. (check-in: [7b96115e81] user: drh branch: ticket-71e333e7, size: 142120)
00:52
[7b3659c3dc] part of check-in [f66c1db296] Recognize TK_COLLATE operators that have been transformed into TK_REGISTER. Skip both TK_COLLATE and TK_AS operators when looking for the top of an expression. (check-in: [f66c1db296] user: drh branch: ticket-71e333e7, size: 142073)
2012-12-07
22:54
[6b50dcc885] part of check-in [e313edca04] Do not report missing collating functions while parsing the schema. Also remove a stray comment. (check-in: [e313edca04] user: drh branch: ticket-71e333e7, size: 141967)
20:31
[9102d69c2d] 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: 141787)
18:38
[92d9ab5a1e] part of check-in [972443b4eb] Some errors in veryquick resolved. Many more to go. (check-in: [972443b4eb] user: drh branch: ticket-71e333e7, size: 141630)
14:02
[f4bb756c02] 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: 141026)
2012-12-06
21:16
[696c9e664a] 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: 141107)
20:19
[96d029a9b7] 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: 128496)
2012-11-02
18:48
[3b25a95f3d] part of check-in [18ae030dad] Proposed fix for ticket [bfbf38e5e9]. (check-in: [18ae030dad] user: drh branch: ticket-bfbf38e5e9, size: 141155)
18:24
[eec289bcac] part of check-in [10cc12b16b] Fix an out-of-date comment. No changes to code. (check-in: [10cc12b16b] user: drh branch: trunk, size: 141111)
2012-10-30
00:29
[152ba793a8] 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: 141090)
2012-10-26
13:34
[763fce5957] part of check-in [325364a984] Backport the shared-cache-fix branch. (check-in: [325364a984] user: drh branch: branch-3.7.14, size: 140818)
2012-10-05
18:35
[92a2d01903] part of check-in [ac81ae493f] Backport fixes to shared-cache mode, from the shared-cache-fix branch, to version 3.7.9 (check-in: [ac81ae493f] user: drh branch: branch-3.7.9, size: 128258)
2012-10-04
19:33
[57fb8e7a05] part of check-in [2b370dea70] Shared-cache mode fixes for views and virtual tables. (check-in: [2b370dea70] user: dan branch: shared-cache-fix, size: 141037)
2012-09-27
15:05
[4de967b85f] 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: 140994)
2012-09-21
00:04
[4d1cef0fae] part of check-in [79e922f7ae] Consolidate more of the DISTINCT processing logic into a single spot in the code. Reduce the number of OP_Column operations needed to perform a WHERE_DISTINCT_ORDERED. (check-in: [79e922f7ae] user: drh branch: trunk, size: 140971)
2012-09-18
19:29
[bfed2f8ad9] part of check-in [5ded9b6838] Enhance IN processing to allow efficient use of indices with numeric affinities. Add test cases for IN processing that would have spotted the error in the [2be661a48023f4] check-in. (check-in: [5ded9b6838] user: drh branch: trunk, size: 141267)
17:08
[f0fc010187] part of check-in [b1a4c39499] Enhancements to the comments on sqlite3FindInIndex(). No code changes. (check-in: [b1a4c39499] user: drh branch: trunk, size: 141309)
2012-09-17
17:16
[70ded09d6a] part of check-in [45793f0b84] Make sure the KeyInfo.aSortOrder array is always allocated so that we never have to test for KeyInfo.aSortOrder==0 in performance-critical loops. (check-in: [45793f0b84] user: drh branch: trunk, size: 140923)
2012-08-24
01:07
[217840a107] part of check-in [d4cd6017c9] Merge the nested aggregate query enhancements into trunk. (check-in: [d4cd6017c9] user: drh branch: trunk, size: 140775)
2012-08-23
19:46
[94bac8cc55] part of check-in [00b1dc71be] Add test cases and fix bugs associated with the previous check-in enhancements to nested aggregate subquery processing. (check-in: [00b1dc71be] user: drh branch: nested-agg, size: 140439)
16:18
[e03a5509b5] part of check-in [3c3ffa901f] Further improvements to the processing of nested aggregate queries. (check-in: [3c3ffa901f] user: drh branch: nested-agg, size: 141024)
2012-07-23
21:43
[e2927abf9c] part of check-in [b589f1efb3] Refactor field names in the SelectDest object to make them distinct and easier to grep for. (check-in: [b589f1efb3] user: drh branch: trunk, size: 139904)
2012-05-21
21:20
[06a7733d19] part of check-in [bdc01fd0fa] Mark and always-true conditional as such. Add the fuzz-oss1.test test module. (check-in: [bdc01fd0fa] user: drh branch: nested-agg, size: 139899)
20:13
[e2d55b411e] part of check-in [f3dd1fafd4] Candidate fix for the nested aggregate query problem of ticket [c2ad16f997ee9c8e]. (check-in: [f3dd1fafd4] user: drh branch: nested-agg, size: 139892)
2012-04-19
15:49
[eefabaa4a3] part of check-in [2d43562084] Fix harmless compiler warnings (unused parameter warnings) in the aggregate query analyzer. (check-in: [2d43562084] user: drh branch: trunk, size: 139845)
2012-04-17
16:38
[1b2383adc4] part of check-in [430bb59d79] Improved handling of aggregate subqueries within an aggregate query. (check-in: [430bb59d79] user: drh branch: trunk, size: 139787)
2012-03-31
02:34
[ebb0e2b213] part of check-in [f9a7e179cb] Do more aggressive optimization of the AND operator where one side or the other is always false. (check-in: [f9a7e179cb] user: drh branch: trunk, size: 138873)
2012-03-30
00:00
[7e40ea9f68] part of check-in [b451c0f97f] Fix compiler warnings on GCC and MSVC and fix a C89-ism that broke the build for MSVC. (check-in: [b451c0f97f] user: drh branch: trunk, size: 137633)
2012-03-28
02:43
[1c351f3859] part of check-in [bc18215a8a] Fix the typeof() and length() optimization so that it works for aggregates as well as scalar queries. (check-in: [bc18215a8a] user: drh branch: faster-typeof-and-length, size: 137617)
01:34
[86711d201e] 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: 137560)
2012-02-02
03:38
[00675123e0] part of check-in [25df2a7458] Simplified array allocation in the IdList and AggInfo objects. (check-in: [25df2a7458] user: drh branch: trunk, size: 136998)
01:58
[d644aac340] part of check-in [5963de303a] Remove the nAlloc field from the ExprList object. (check-in: [5963de303a] user: drh branch: trunk, size: 136897)
2011-12-10
23:18
[537591e95e] part of check-in [5061d85ff9] Minor cleanups of the compound-subquery flattening logic. New test cases added for joins the compound subquery. (check-in: [5061d85ff9] user: drh branch: trunk, size: 136890)
15:55
[a68c194c77] part of check-in [bcbc7152d4] Import the experimental parse-tree explainer, with fixes, from the tree-explain branch. Disabled by default. Use SQLITE_ENABLE_TREE_EXPLAIN to turn it on. (check-in: [bcbc7152d4] user: drh branch: trunk, size: 136876)
14:44
[d3a969a223] part of check-in [1a360da0f8] Merge the latest trunk changes into tree-explain branch. (check-in: [1a360da0f8] user: drh branch: tree-explain, size: 136834)
2011-12-09
16:21
[b5920f108d] part of check-in [521d72bdf6] Make no assumptions about the initial state of VDBE registers. (check-in: [521d72bdf6] user: drh branch: uninit-vdbe-mem, size: 128695)
13:24
[672c6e5fa3] 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: 128586)
2011-12-07
15:33
[59a530af61] part of check-in [0eb3f8b1e3] More compact notation for the parse-tree view. (check-in: [0eb3f8b1e3] user: drh branch: tree-explain, size: 136596)
01:55
[9ac5831769] part of check-in [7fc535090c] Cherrypick the [7e5b56b1c6] fix for the sqlite3SelectDup() routine into trunk. (check-in: [7fc535090c] user: drh branch: trunk, size: 128457)
01:47
[3d800a2280] part of check-in [7e5b56b1c6] Bug fix in sqlite3SelectDup(). Make sure the pNext pointer is valid. (check-in: [7e5b56b1c6] user: drh branch: tree-explain, size: 136958)
01:23
[62f6ad2a1d] part of check-in [0aa7d3d234] Improvements to the data-structure explain subsystem. Most queries now give a reasonably detailed graph of their parse tree. (check-in: [0aa7d3d234] user: drh branch: tree-explain, size: 136884)
2011-12-06
19:44
[942171222a] part of check-in [79ae51c5b1] Begin adding the data-structure explaining subsystem. All is contained within (check-in: [79ae51c5b1] user: drh branch: tree-explain, size: 129637)
13:24
[319db0ad9f] part of check-in [092d53315e] Do not reuse temp registers originally allocated to a subroutine within the main body of the program logic, since if the subroutine is called while the reused temp registers are in use, their values will get clobbered. Candidate fix for ticket [3a77c9714e63330] (check-in: [092d53315e] user: drh branch: trunk, size: 128383)
2011-10-25
20:36
[9c8147b9c2] part of check-in [14bc58ca70] Cherrypick changes [53f5cfe115] and [1f7ef0af8d] in order to fix an issue with DISTINCT (check-in: [14bc58ca70] user: drh branch: branch-3.7.2, size: 126325)
2011-10-14
21:49
[fbf116f90c] 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: 128215)
2011-10-13
15:35
[1a7970a0c5] part of check-in [e43da426e6] Make sure the query optimizer for aggregate queries knows that expressions (x='a') and (x='A') are different. Ticket [fa7bf5ec94801e7e] (check-in: [e43da426e6] user: drh branch: trunk, size: 127737)
2011-09-16
22:10
[f4dcaeb825] part of check-in [96be3f7b59] Fix a problem with SQLITE_OMIT_TRACE that was introduced by the recent OP_Once change. (check-in: [96be3f7b59] user: drh branch: trunk, size: 127745)
01:34
[fd54c51786] 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: 127830)
2011-09-15
23:58
[109de1d4a5] part of check-in [4b8357ee3c] Materialize subqueries using a subroutine and invoke that subroutine prior to each use of the materialization. Fix for ticket [002caede898aee4] (check-in: [4b8357ee3c] user: drh branch: tkt-002caede898, size: 127938)
2011-09-02
10:31
[cbcd8c2f15] part of check-in [7769fb988d] Instead of a temporary b-tree, use a linked-list and merge-sort to sort records in main memory in vdbesort.c. (check-in: [7769fb988d] user: dan branch: merge-sort, size: 127891)
2011-07-12
14:48
[c0d7088c13] 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: 128294)
2011-07-08
16:10
[4bbdfaf66b] 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: 127887)
2011-06-01
19:16
[ab46ab0f0c] part of check-in [e704e8690a] Avoid unnecessary duplication of SQL parameter names. (check-in: [e704e8690a] user: drh branch: trunk, size: 127834)
18:15
[c33584bcf4] part of check-in [b3aaf715b6] Refactor the SQL parameter processing so that parameter names for values that are optimized out of the prepare statement are not forgotten. (check-in: [b3aaf715b6] user: drh branch: trunk, size: 127701)
2011-04-05
12:25
[e3cf0957c6] part of check-in [bf664b206b] Fix the P4_TRANSIENT constant so that it works correct - so that it really makes a copy of the string for the P4 argument. Use P4_TRANSIENT wherever appropriate. Change P4_STATICs of schema names to P4_TRANSIENT. (check-in: [bf664b206b] user: drh branch: trunk, size: 127658)
2011-03-08
02:38
[00817c672a] part of check-in [2d5800bd8c] Fix additional cases of possible signed integer overflow, especially with regard to negation. (check-in: [2d5800bd8c] user: drh branch: trunk, size: 127647)
2011-03-05
20:59
[66c9383e5e] part of check-in [abf2139412] Fix all known instances of signed-integer overflow. Within SQL expressions, integer overflow now forces coercion to floating point. The shift operators work with any integer right-hand operand with negative values reversing the direction of the shift. (check-in: [abf2139412] user: drh branch: trunk, size: 127671)
13:54
[0afd6a93d9] part of check-in [04abab71ec] Fix an instance of signed arithmetic overflow and an one bit-shift overflow. Mark six other signed arithmetic overflow locations that need fixing. (check-in: [04abab71ec] user: drh branch: trunk, size: 127659)
2011-02-17
15:58
[8e2c607b3b] part of check-in [7af66d1bd5] Remove a no-op code path from sqlite3ExprIsInteger(). Replace it with an assert() that proves it always does nothing. (check-in: [7af66d1bd5] user: drh branch: trunk, size: 127647)
2011-02-10
17:46
[400e27db54] 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: 127503)
2011-02-09
19:55
[9b02a6dc3c] part of check-in [7cc515edc9] Make sure code *compiles* with each OMIT and ENABLE option. Mostly changes to test modules. (check-in: [7cc515edc9] user: shaneh branch: trunk, size: 127513)
2010-12-06
21:06
[1810f3056b] part of check-in [ad8bc68197] Add the ability to disable constant factoring using sqlite3_test_control(). Add a TCL interface to this new capability and add tests cases to the TCL test scripts to actually use the new capability. (check-in: [ad8bc68197] user: drh branch: trunk, size: 127439)
18:59
[325f49c99d] part of check-in [fa9eef865f] Back out part of the previous change that was not really necessary in order to fix [80ba201079ea60], and which in fact serves no useful purpose. (check-in: [fa9eef865f] user: drh branch: trunk, size: 126755)
18:50
[c5e0aeea65] part of check-in [c5c53152d6] Initialize all constants at the very beginning of a prepared statement. Do not allow constant initialization to occur once control flow has a chance to diverge, to avoid the possibility of having uninitialized registers. Ticket [80ba201079ea60807]. (check-in: [c5c53152d6] user: drh branch: trunk, size: 127133)
2010-11-09
14:49
[4b05c74061] part of check-in [73c93f5a2a] Further enhancements and fixes for explain query plan. (check-in: [73c93f5a2a] user: dan branch: experimental, size: 126658)
2010-10-28
11:31
[ee36af9aa5] part of check-in [2625eee0cb] Enforce the MAX_EXPR_DEPTH limit while building expression trees during SQL parsing. (check-in: [2625eee0cb] user: dan branch: trunk, size: 126330)
2010-10-27
19:23
[4a40b07a53] part of check-in [7324c7f2f8] Add tail recursion to the sqlite3ExprDelete() routine in order to keep down stack space usage for really, really large expressions. Later: The tail recursion is dangerous since the recursion might happen after the expression has been freed. (check-in: [7324c7f2f8] user: drh branch: mistake, size: 126327)
2010-09-30
16:51
[c5749e4557] part of check-in [43fef1cab6] Changes to remove sqlite3FitsIn64Bits(). (check-in: [43fef1cab6] user: shaneh branch: experimental, size: 126266)
00:50
[05dbb04833] part of check-in [14eed3a0e0] Rework the text to numeric conversion routines so that they work with either UTF8 or UTF16 and do not require a NULL terminator. This allowed text to numeric conversion without reallocating the string. (check-in: [14eed3a0e0] user: drh branch: experimental, size: 126375)
2010-09-28
07:11
[1caa723c3a] part of check-in [88b84bf18a] Replace some unreachable branch instructions with assert() statements. (check-in: [88b84bf18a] user: drh branch: bug-b351d95f9c, size: 126272)
06:00
[0525659674] part of check-in [ff49a5f00b] Tweaks to help facilitate structural test coverage. (check-in: [ff49a5f00b] user: drh branch: bug-b351d95f9c, size: 126295)
04:14
[7b45c50fc2] part of check-in [57789cfe67] Test case and fix for the specific failure of ticket [b351d95f9cd5ef17e9d9dbae]. (check-in: [57789cfe67] user: drh branch: bug-b351d95f9c, size: 126279)
00:25
[e211e57c96] part of check-in [d0342f4bb9] Continuing work toward detecting and fixing shallow-copy misuse. (check-in: [d0342f4bb9] user: drh branch: bug-b351d95f9c, size: 125998)
2010-09-27
18:14
[d2ffe8ed8e] part of check-in [53f5cfe115] Simplifications to the expression code generator. Remove about 80 lines of older and obsolete code. (check-in: [53f5cfe115] user: drh branch: trunk, size: 125864)
2010-08-30
22:15
[21ad2494bd] part of check-in [4fead8e714] Provide hints to the btree layer during the creation of transient tables for when it is possible for those tables to use a hash rather than a binary tree. No use is currently made of those hints, though assert() statement verify their accuracy. (check-in: [4fead8e714] user: drh branch: trunk, size: 128241)
2010-08-18
02:28
[9ee507c3dc] part of check-in [1f5662b7db] Fix some compiler warnings in the MSVC build. (check-in: [1f5662b7db] user: shaneh branch: trunk, size: 128014)
2010-08-17
23:13
[6bb1f6a721] 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: 126800)
19:34
[9532d71de5] part of check-in [fc9014be0f] Return an error when parsing "?NNN" if NNN is so large it cannot be stored as a 32-bit int. (check-in: [fc9014be0f] user: dan branch: trunk, size: 128009)
2010-08-04
12:13
[96bda57428] part of check-in [3f367fe00e] Backport fix [267492d3a7eff7b] for the performance regression caused by automatic indexing and reported by ticket [8011086c85c6c4040]. (check-in: [3f367fe00e] user: drh branch: branch-3.7.0, size: 127767)
2010-07-28
02:53
[a0fd9c5e24] part of check-in [267492d3a7] Do not allow automatic indices for the RHS of IN expressions which are not correlated subqueries. Ticket [8011086c85c6c404014c9] (check-in: [267492d3a7] user: drh branch: trunk, size: 127980)
2010-07-22
17:49
[7490fc3b16] 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: 127786)
2010-07-14
20:23
[b2b0534295] 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: 127573)
18:24
[92ff9389ab] part of check-in [c288ac644d] Make the result of an IN or NOT IN expression with an empty set on the right-hand side always either false or true, respectively, even if the left-hand side is NULL. Ticket [80e031a00f45dc] (check-in: [c288ac644d] user: drh branch: trunk, size: 127565)
2010-05-14
19:24
[7b1df28226] part of check-in [636f86095e] Make sure the value of an INTEGER PRIMARY KEY column supplied to triggers and especially to FK constraints really contains the ROWID and not the NULL that is stored in the column itself. Ticket [dd08e5a988d00dec]. (check-in: [636f86095e] user: drh branch: trunk, size: 127110)
2010-05-12
13:50
[110e5eddc8] part of check-in [7838163d08] Remove the OP_Variable optimization of check-in [48b77b04935d894] since it can lead to malfunctions as described in ticket [26ff0c82d1e90]. (check-in: [7838163d08] user: drh branch: trunk, size: 126629)
2010-04-26
19:17
[286f62b242] part of check-in [ca9d86baf7] Optimization: Convert an ORDER BY clause into a no-op if the query also contains a GROUP BY clause that will force the same output order. (check-in: [ca9d86baf7] user: drh branch: trunk, size: 127168)
2010-03-05
16:32
[6baed2a044] part of check-in [8858042fa1] Modify the vdbe so that the comparison operator opcodes do not modify the data type of operands. Fix for [aa92c76cd4]. (check-in: [8858042fa1] user: dan branch: trunk, size: 126587)
2010-02-25
14:44
[d2046feae5] part of check-in [a255059786] Add some technically unnecessary variable initializations to silence compiler warnings. (check-in: [a255059786] user: dan branch: branch-3.6.1, size: 117825)
2010-01-13
04:22
[d0a345e1d8] part of check-in [dfc6595d34] Comment out unused code when SQLITE_OMIT_FLOATING_POINT is selected. Added testcase() macros to boundary conditions in util.c routines. (check-in: [dfc6595d34] user: drh branch: trunk, size: 126744)
2010-01-12
17:04
[e6f042e88b] part of check-in [66bab85619] Use #ifdefs to disable unused code when SQLITE_OMIT_FLOATING_POINT is defined. (check-in: [66bab85619] user: drh branch: trunk, size: 126702)
2010-01-07
15:17
[b186cb2a2b] part of check-in [44bb1bfe5d] Fix the expression comparison logic to take the COLLATE operator into account. Ticket [360c6073e197] (check-in: [44bb1bfe5d] user: drh branch: trunk, size: 126405)
2009-12-30
14:12
[d695300ba8] 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: 126138)
01:13
[bdbf871437] part of check-in [1f890efb78] Remove some code in the column cache that is no longer used. Replace it with an assert(). (check-in: [1f890efb78] user: drh branch: trunk, size: 125991)
00:12
[0fdd547d28] part of check-in [84058be0be] Remove obsolete comment text from expr.c. No functional code changes. (check-in: [84058be0be] user: drh branch: trunk, size: 125662)
2009-12-24
16:00
[6d138c3616] 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: 125969)
2009-11-23
14:39
[50385ed51f] part of check-in [a4380ab326] Change so that deleting an Expr structure requires only one frame per level in the expression tree, not two. (check-in: [a4380ab326] user: dan branch: trunk, size: 126970)
2009-11-19
15:44
[bd248461bf] part of check-in [598727e6da] Remove an unreachable branch from the OP_Affinity suppression logic. (check-in: [598727e6da] user: drh branch: trunk, size: 127169)
14:48
[be7f3db3e3] part of check-in [4bd4330709] Fix a bug introduced with recent optimizations: The unary minus operator is TK_UMINUS, not TK_MINUS. (check-in: [4bd4330709] user: drh branch: trunk, size: 127114)
2009-11-18
01:25
[ba653dafb2] part of check-in [bf6c0bd1c5] Suppress more instances of unnecessary OP_IsNull and OP_Affinity opcodes. (check-in: [bf6c0bd1c5] user: drh branch: trunk, size: 127112)
2009-11-17
18:31
[cc086099c3] 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: 126264)
2009-11-13
10:04
[94f3086a34] part of check-in [f0599d28fa] Changes to test_intarray.c so that it build with SQLITE_OMIT_VIRTUALTABLE. Added testcase() macros to expr.c. (check-in: [f0599d28fa] user: drh branch: trunk, size: 124396)
2009-11-12
19:59
[33c08bb506] 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: 124297)
17:52
[98925d79ea] part of check-in [fcff5b7e2d] Factor out the IN operator code generation into a subroutine. Use this subroutine to implement both logic and branching versions of the IN operator. (check-in: [fcff5b7e2d] user: drh branch: trunk, size: 124600)
13:32
[64330769c2] part of check-in [5735f60b23] Factor out the code generator for BETWEEN into a subroutine. (check-in: [5735f60b23] user: drh branch: trunk, size: 122194)
2009-11-11
00:24
[be605c60ff] part of check-in [30055b257c] Generate VDBE code for the built-in COALESCE() and IFNULL() functions. This allows unused arguments to never be evaluated, which is a performance win when the unused argument is a subquery. (check-in: [30055b257c] user: drh branch: trunk, size: 121962)
2009-11-04
13:17
[11c163003b] part of check-in [24a4d520d5] Create a new datatype "ynVar" to hold "nVar" (number of variable) values. This is normally 16-bits can can be 32-bits if SQLITE_MAX_VARIABLE_NUMBER is large enough. (check-in: [24a4d520d5] user: drh branch: trunk, size: 121198)
2009-11-03
19:42
[501269f759] part of check-in [01c4b5b84e] Fix compiler warnings on MSVC build. (check-in: [01c4b5b84e] user: shane branch: trunk, size: 121445)
2009-10-30
13:25
[26dc693216] part of check-in [7253f8fad1] Avoid storing the result register for EXISTS and SELECT in any field of the Expr object - simply return the register number as the return value of the function that codes those expressions. (check-in: [7253f8fad1] user: drh branch: trunk, size: 121173)
2009-10-29
18:38
[6c5775cf0f] part of check-in [65a1f1334d] Fix a 16-bit integer overflow that might occur in statements that use both an EXISTS clause and IN operator with a RHS holding in excess of 32K entries. (check-in: [65a1f1334d] user: drh branch: branch_3_6_16, size: 117143)
13:48
[658002e35d] part of check-in [e7984ad2f7] Reduce the memory required by prepared statements that use the IN operator with a list on the right and an INTEGER PRIMARY KEY on the left. (check-in: [e7984ad2f7] user: drh branch: trunk, size: 120947)
2009-10-15
18:35
[f14ffa54e4] part of check-in [9bd6f3d886] Add the experimental sqlite3_reoptimize() API. (check-in: [9bd6f3d886] user: dan branch: experimental, size: 120683)
2009-09-23
14:45
[c7f3f718bd] part of check-in [e3b73394bf] Change the version number to 3.6.19. Fix a couple of incorrect testcase() macros associated with the new IS and IS NOT operators in expr.c. (check-in: [e3b73394bf] user: drh branch: trunk, size: 120648)
02:29
[8a663240f3] part of check-in [98853f6104] Generalize the IS and IS NOT operators so that their right-hand side can be an arbitrary expression and not simple the constant NULL. They work like = and <> except that NULL values compare equal to one another an unequal to everything else. (check-in: [98853f6104] user: drh branch: trunk, size: 120634)
2009-09-08
19:15
[638b599ada] part of check-in [aec9dbd8d2] Combine the OP_Statement and OP_Transaction opcodes. (check-in: [aec9dbd8d2] user: dan branch: trunk, size: 119198)
2009-09-03
01:18
[2605f0f161] part of check-in [f22e388727] Do not reuse function parameters in subsequent expressions since the function call might have triggered a text encoding change. Fix for ticket [2ea2425d34be]. (check-in: [f22e388727] user: drh branch: trunk, size: 119054)
2009-09-01
12:16
[cadf65591f] part of check-in [38a9327bad] More fixes and comment updates. (check-in: [38a9327bad] user: dan branch: trunk, size: 118918)
2009-08-31
15:27
[d95a040f06] part of check-in [85d9f23be1] More fixes for test cases. (check-in: [85d9f23be1] user: dan branch: trunk, size: 117372)
08:22
[ac30c21eef] part of check-in [8a746fbfd5] Fix some authorization callback problems. (check-in: [8a746fbfd5] user: dan branch: trunk, size: 117182)
2009-08-30
11:42
[09ef2a7266] part of check-in [9eb91efda5] Fixes for new triggers scheme. (check-in: [9eb91efda5] user: dan branch: trunk, size: 117177)
2009-08-28
18:53
[24a8f8088d] part of check-in [9b9c192115] Changes to support recursive triggers. (check-in: [9b9c192115] user: dan branch: trunk, size: 117111)
2009-08-21
13:22
[adb61b7de6] 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: 117002)
2009-08-19
17:17
[335d300841] part of check-in [71ea9d0e14] Change the way an Expr that has been converted to TK_REGISTER stores its original opcode. The previous method, overloading Expr.iColumn, did not work in all cases. (check-in: [71ea9d0e14] user: dan branch: trunk, size: 117029)
14:42
[1dac211523] part of check-in [6c8a0e2b37] Merge with 709e16145e. (check-in: [6c8a0e2b37] user: dan branch: trunk, size: 117033)
2009-08-18
16:05
[73b6780232] part of check-in [093917d7fd] Unknown functions in the DEFAULT clause of a table cause an error when the DEFAULT value is needed. Ticket [2d401a94287b5]. (check-in: [093917d7fd] user: drh branch: trunk, size: 117001)
2009-08-17
17:06
[ea04de0bf4] part of check-in [dd96bda2a8] First version of sqlite_stat2 (schema forces exactly 10 samples). (check-in: [dd96bda2a8] user: dan branch: trunk, size: 117007)
2009-07-27
10:05
[d069ba1e06] part of check-in [3616766a6f] When extracting values from a record to use in an UPDATEd version of that record, apply OP_RealAffinity if required. Fix for #3992. (CVS 6945) (check-in: [3616766a6f] user: danielk1977 branch: trunk, size: 116975)
2009-07-16
12:41
[f6f21604c1] part of check-in [17c05aefd6] Remove an unused variable from sqlite3ExprListDup(). Ticket #3973. (CVS 6898) (check-in: [17c05aefd6] user: drh branch: trunk, size: 117117)
2009-06-19
18:32
[de80e2d6c2] part of check-in [4bb96db6b4] Fix the comment on the sqlite3PExpr() subroutine. Ticket #3924. (CVS 6789) (check-in: [4bb96db6b4] user: drh branch: trunk, size: 117148)
2009-06-01
16:53
[1d580a7b2e] part of check-in [0791588520] Fix compiler warnings with MSVC build. (CVS 6699) (check-in: [0791588520] user: shane branch: trunk, size: 117109)
2009-05-30
23:35
[ac7ebc4143] part of check-in [164adf261d] Fix typo reported by ticket #3888. Other minor edits to facilitate coverage testing. (CVS 6695) (check-in: [164adf261d] user: drh branch: trunk, size: 117080)
20:49
[f0b46b992f] part of check-in [f760bb7a03] Simplifications to the expr.c source module resulting from structural testing. (CVS 6694) (check-in: [f760bb7a03] user: drh branch: trunk, size: 116673)
14:16
[0851fab95d] part of check-in [00e7250f11] Fix for ticket #3887. Other unrelated bits of code cleanup in the expr.c source module. (CVS 6693) (check-in: [00e7250f11] user: drh branch: trunk, size: 116429)
2009-05-29
19:00
[b844f5f63b] part of check-in [ede06dacdf] Enhance the sqlite3VdbeGetOp() routine so that it always returns a pointer to VdbeOp, even following an OOM fault. This simplifies error handling in callers. Cleanup to the column cache logic and the expr.c source module. (CVS 6691) (check-in: [ede06dacdf] user: drh branch: trunk, size: 116470)
14:39
[ba5ba6a633] part of check-in [bd89f2c29b] Refinements in expression handling logic that have resulted from recent structural testing. (CVS 6690) (check-in: [bd89f2c29b] user: drh branch: trunk, size: 116567)
2009-05-28
21:04
[9d25d72297] part of check-in [6ae4ad6ebe] Remove references to deleted function sqlite3ExprRegister(). Changes to the expr.c source module to promote better testing. (CVS 6686) (check-in: [6ae4ad6ebe] user: drh branch: trunk, size: 115417)
01:00
[2f8b6e5c3c] 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: 114915)
2009-05-27
10:31
[cdddb81c68] 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: 111428)
2009-05-25
12:02
[024b568936] part of check-in [d2fdae8ed1] Port the fix for ticket #3879 (check-in (6676)) to the 3.6.14 branch. (CVS 6677) (check-in: [d2fdae8ed1] user: drh branch: branch_3_6_14, size: 112305)
11:46
[af19096689] part of check-in [5f358e6371] When pinning a temp register after it is reused by the column cache, make sure all instances of that register in the cache are pinned so that the register is never reused for a different purpose. Ticket #3879. (CVS 6676) (check-in: [5f358e6371] user: drh branch: trunk, size: 112281)
2009-05-21
20:41
[a6d3c71508] part of check-in [309adb5e22] Simplifications to expr.c in support of full coverage testing. (CVS 6665) (check-in: [309adb5e22] user: drh branch: trunk, size: 111852)
2009-05-11
20:53
[79f1cb9352] part of check-in [33cf83591e] Rework the logic that generates a schema for tables created using "CREATE TABLE ... AS SELECT ...". Instead of trying to copy the raw datatype string from the right-hand side, just make the type one of TEXT, INT, REAL, NUM, or nothing. This is much simpler than trying to parse and quote datatype strings. Other minor implifications to build.c are bundled with this change. (CVS 6626) (check-in: [33cf83591e] user: drh branch: trunk, size: 111893)
2009-05-09
00:18
[d229742072] part of check-in [567ccc68cc] Changes to the trigger.c module that facilitate full coverage testing. (CVS 6621) (check-in: [567ccc68cc] user: drh branch: trunk, size: 111905)
2009-05-06
18:57
[8426ef8b80] part of check-in [df599237e1] Changes to silence compiler warnings under MSVC. (CVS 6613) (check-in: [df599237e1] user: shane branch: trunk, size: 111874)
2009-05-01
21:13
[40b3516713] 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: 111834)
2009-04-28
12:08
[dd763d6dc8] part of check-in [e096f90a57] Another fix to the same assert as in (6555). It can also fail after a malloc error. (CVS 6556) (check-in: [e096f90a57] user: danielk1977 branch: trunk, size: 112403)
11:10
[1ff13874af] part of check-in [a37d1174eb] Fix an assert that could fail after a parse error in expr.c. (CVS 6555) (check-in: [a37d1174eb] user: danielk1977 branch: trunk, size: 112371)
2009-04-23
13:22
[015bdfc73a] 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: 112345)
2009-04-22
17:15
[51ec16f868] 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: 110346)
2009-04-08
13:51
[ccc5b5fa3b] part of check-in [44ded2ea67] Minor refactoring of the expression-compaction logic for clarity of presentation. New comments added. The EXPRDUP_DISTINCTSPAN flag is removed as obsolete. (CVS 6470) (check-in: [44ded2ea67] user: drh branch: trunk, size: 110403)
2009-04-02
17:23
[b7ce173d17] part of check-in [058a2f2093] Ensure the required VerifyCookie/Transaction/TableLock opcodes are added for "x IN (SELECT c FROM t)" expressions. Ticket #3771. (CVS 6439) (check-in: [058a2f2093] user: danielk1977 branch: trunk, size: 109992)
2009-03-25
16:51
[14853cd561] 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: 109586)
2009-03-24
15:31
[f30a43302c] part of check-in [cf3d84ab73] New assert()s added to verify that the Expr.token value is used correctly. Ticket #3743. (CVS 6378) (check-in: [cf3d84ab73] user: drh branch: trunk, size: 109607)
15:08
[614a60615f] part of check-in [ea74d8dc62] Changes to insure that lookaside memory allocations are never used to hold schema content. Ticket #3743. (CVS 6377) (check-in: [ea74d8dc62] user: drh branch: trunk, size: 109474)
2009-03-23
04:33
[ca5d176acc] part of check-in [db1d4d2f50] Use the ROUND8() macro to round an integer up to the nearest multiple of 8 and ROUNDDOWN8() macro to round down to the nearest multiple of 8. This is a cosmetic change. (CVS 6372) (check-in: [db1d4d2f50] user: danielk1977 branch: trunk, size: 109617)
2009-03-18
10:36
[7252b38f64] part of check-in [05d8607d44] Add comments and testcase() macros to the fix for shared-cache schema default value problem of check-in (6353). (CVS 6356) (check-in: [05d8607d44] user: drh branch: trunk, size: 109608)
2009-03-17
17:49
[cd95e2dd88] part of check-in [afadddc34e] Fix a problem that could cause a crash when a shared-cache schema contains column default values. (CVS 6353) (check-in: [afadddc34e] user: danielk1977 branch: trunk, size: 109092)
2009-03-05
14:53
[09a3a1d649] part of check-in [d0b2015f1c] Comment out a recently added assert statement that is failing. (CVS 6340) (check-in: [d0b2015f1c] user: danielk1977 branch: trunk, size: 108834)
03:48
[b9273cdd52] part of check-in [5477833ec7] Removed compiler warnings from MSVC builds. Ticket #3701. (CVS 6335) (check-in: [5477833ec7] user: shane branch: trunk, size: 108698)
2009-02-24
10:14
[46e24f9a71] part of check-in [0e7c369c23] Reverse commit (6315) for now. (CVS 6317) (check-in: [0e7c369c23] user: danielk1977 branch: trunk, size: 108659)
2009-02-23
17:33
[97545fa405] 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: 108706)
2009-02-20
10:58
[e22112c8db] 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: 108659)
03:55
[92e6dfcd55] part of check-in [48b77b0493] Add a count parameter to the OP_Variable opcode and use it to simplify prepared statements that copy consecutive unnamed parameters into consecutive registers (a common case). (CVS 6309) (check-in: [48b77b0493] user: drh branch: trunk, size: 108719)
2009-02-19
14:39
[2e62c2621c] 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: 108117)
2009-02-04
03:59
[e60f69f624] 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: 100432)
2009-01-20
16:53
[76dc3dc83b] part of check-in [1041abd678] When not compiling for an EBCDIC system, use built-in alternatives to the tolowe r(), toupper() and other ctype.h library functions. Ticket #3597. (CVS 6196) (check-in: [1041abd678] user: danielk1977 branch: trunk, size: 100486)
2009-01-10
13:24
[8d19c0597b] part of check-in [2cbea64fb0] Remove some unused code from expr.c in order to increase test coverage. (CVS 6156) (check-in: [2cbea64fb0] user: drh branch: trunk, size: 100483)
2008-12-15
15:27
[a385202af5] part of check-in [ea9b747efb] Convert the "~" and "NOT" operators to be two-address instructions. Ticket #3541. (CVS 6028) (check-in: [ea9b747efb] user: drh branch: trunk, size: 101191)
2008-12-10
21:19
[f13ad55634] part of check-in [ea01d43788] Additional work at eliminating silly compiler warnings. (CVS 6010) (check-in: [ea01d43788] user: drh branch: trunk, size: 101294)
2008-12-08
13:42
[ee295129a9] part of check-in [490138a201] Fix a segfault associated with the column cache that occurs on nested VIEWs. Ticket #3527. (CVS 5989) (check-in: [490138a201] user: drh branch: trunk, size: 101237)
2008-12-05
15:24
[9ce4f25853] 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: 100973)
2008-11-19
16:52
[01b1cf0783] part of check-in [d1abe8a1c9] Fix some compiler warnings that show up when building the amalgamation only. (CVS 5927) (check-in: [d1abe8a1c9] user: danielk1977 branch: trunk, size: 100943)
09:05
[fafae5a459] part of check-in [88134322c3] Changes to avoid "unused parameter" compiler warnings. (CVS 5921) (check-in: [88134322c3] user: danielk1977 branch: trunk, size: 100916)
2008-11-12
08:07
[0a23a7f580] part of check-in [b8ceaa0050] Make sure affinities and implicit collation sequences are correctly used by comparison expressions in the select-list or having clause of an aggregate query. Ticket #3493. (CVS 5889) (check-in: [b8ceaa0050] user: danielk1977 branch: trunk, size: 100887)
2008-11-06
15:33
[d48ae32513] part of check-in [1b6a514044] Fix a bug in the CAST operator associated with the column cache. (CVS 5866) (check-in: [1b6a514044] user: drh branch: trunk, size: 100831)
2008-10-25
15:03
[2b1945314f] 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: 100717)
2008-10-11
16:47
[f84e7606f4] 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: 100532)
2008-10-07
19:53
[0ceafeff3a] part of check-in [79df72ee83] Raise the hard upper bound on SQLITE_MAX_FUNCTION_ARG to 1000 from 100. The default upper bound is still 100, but it can now be raised as high as 1000 at compile-time. (CVS 5780) (check-in: [79df72ee83] user: drh branch: trunk, size: 100351)
2008-10-06
05:32
[30973b017b] 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: 100320)
2008-10-02
16:42
[efa8272436] part of check-in [33b59a3db0] Change to reduce the number of OP_Null opcodes in "WHERE <rowid> IN (x,y,z)" queries. (CVS 5763) (check-in: [33b59a3db0] user: danielk1977 branch: trunk, size: 100168)
13:50
[61f5afca42] part of check-in [803a1736d5] Optimize queries that contain "WHERE rowid IN (x, y, z...)" by using an intkey btree to store the (x, y, z...) set instead of an index btree. (CVS 5760) (check-in: [803a1736d5] user: danielk1977 branch: trunk, size: 100172)
2008-09-17
00:13
[04822d5c7a] part of check-in [f8b759f197] Fix for tickets #3378 and #3381 that preserves the aliasing optimization. And yet, this fix feels uncomfortable. Seeking an alternative... (CVS 5712) (check-in: [f8b759f197] user: drh branch: trunk, size: 99332)
2008-09-16
18:02
[e439afc46c] part of check-in [a67da9dd2f] Add test cases for ticket #3378 and #3381. Add a temporary hack to get those to problems fixed. The hack causes failures in alias.test, but those are much less serious than the aforementioned tickets. This is a stop-gap until we can figure out a proper fix. (CVS 5711) (check-in: [a67da9dd2f] user: drh branch: trunk, size: 99406)
2008-08-29
02:14
[6413795aa1] part of check-in [ab0292caa5] Avoid reevaluating WHERE and ORDER BY expressions that alias terms in the result set. Ticket #3343. Note that aliased GROUP BY expressions are still evaluated twice. (CVS 5637) (check-in: [ab0292caa5] user: drh branch: trunk, size: 99334)
2008-08-22
17:34
[622c8d8e3c] part of check-in [6de9c084fc] Remove dead code. (CVS 5601) (check-in: [6de9c084fc] user: drh branch: trunk, size: 97652)
16:29
[9033d8efb2] part of check-in [cc36b4e016] Enhanced test coverage. (CVS 5598) (check-in: [cc36b4e016] user: drh branch: trunk, size: 97756)
2008-08-20
16:35
[4651d08422] part of check-in [daf730d1de] Refactor the name resolution procedures in the code generator. (CVS 5569) (check-in: [daf730d1de] user: drh branch: trunk, size: 97820)
2008-08-07
13:05
[278d3950f5] part of check-in [732657c6a6] Improved clarity of presentation in the tokenizer. (CVS 5545) (check-in: [732657c6a6] user: drh branch: trunk, size: 117508)
2008-07-28
19:34
[4f52211973] 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: 117825)
2008-07-18
17:03
[18d04f1c15] part of check-in [17a9984e76] Make sure expression spans are set correctly for "x.*" expressions in the result set of a SELECT. Ticket #3229. (CVS 5438) (check-in: [17a9984e76] user: drh branch: trunk, size: 117609)
2008-07-09
01:39
[17f7deae5c] part of check-in [c6cf08477c] Additional test coverage in select.c and expr.c. (CVS 5381) (check-in: [c6cf08477c] user: drh branch: trunk, size: 117634)
2008-07-08
23:40
[6343c50c2b] part of check-in [cbd3c1585b] Remove obsolete code from select.c, including the "affinity" parameter to the sqlite3Select() module. (CVS 5380) (check-in: [cbd3c1585b] user: drh branch: trunk, size: 117614)
2008-07-04
09:41
[8f2caa888a] part of check-in [212d05d38c] Remove redundant code from sqlite3GetTempReg(). (CVS 5342) (check-in: [212d05d38c] user: danielk1977 branch: trunk, size: 117628)
09:15
[88737070ca] part of check-in [f099d6773a] Remove references to temporary registers from the compiler column-cache when such registers are released. Fix for #3201. (CVS 5341) (check-in: [f099d6773a] user: danielk1977 branch: trunk, size: 117895)
2008-06-27
00:52
[0e65125e99] part of check-in [0b01ec5cf7] Remove unused variable. Fix a compiler warning. (CVS 5319) (check-in: [0b01ec5cf7] user: drh branch: trunk, size: 117834)
00:47
[f166ce09a2] part of check-in [a400578269] Tweaks to the IN expression code generator. Fix an an unrelated bug in the compound SELECT code generator. (CVS 5318) (check-in: [a400578269] user: drh branch: trunk, size: 117838)
2008-06-26
21:45
[3bb6d63230] part of check-in [1043a605e2] Fix a bug introduced by check-in (5316). Add some VDBE comments to the IN expression code generator. (CVS 5317) (check-in: [1043a605e2] user: drh branch: trunk, size: 117874)
20:06
[557faa5ac7] part of check-in [ec80474b1c] Avoid generating unnecessary SCopy instructions with the RHS of an IN operator is a list of values. (CVS 5316) (check-in: [ec80474b1c] user: drh branch: trunk, size: 117766)
18:04
[edcc8a3045] 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: 117752)
2008-06-24
12:46
[1a8fbd3dfc] part of check-in [95037e6dbf] Fix a problem in sqlite3ExprIsInteger() causing failures on select1-4.9.2. Other bug fixes in compound-merge. The compound-merge is still disabled in this check-in using "#if 0" due to additional bugs. (CVS 5295) (check-in: [95037e6dbf] user: drh branch: trunk, size: 114041)
00:32
[18af707c43] part of check-in [e2ba324cbc] The compound-select merge optimization is mostly working with this check-in. But there are still a few problems and so the optimization is disabled by and "#if 0". This check-in is to synchronize with the other changes happening in parallel. (CVS 5291) (check-in: [e2ba324cbc] user: drh branch: trunk, size: 114028)
2008-06-22
12:37
[bb0b5ff5fa] part of check-in [663a590e30] Fix a bug in the KEYINFO handling within select.c. Change the OP_Move opcode to take a count and to move multiple registers. Initial code for the compound-select merge optimization is added but is incomplete and is commented out. (CVS 5272) (check-in: [663a590e30] user: drh branch: trunk, size: 113480)
2008-06-05
16:47
[ecb3b23d35] part of check-in [16d4c53a8e] Reorganize some of the code that detects expression trees with a depth greater than EXPR_MAX_DEPTH so that they are detected earlier. This further reduces the opportunities for stack overflow. (CVS 5189) (check-in: [16d4c53a8e] user: danielk1977 branch: trunk, size: 113404)
2008-05-28
13:49
[52fbb644cf] part of check-in [5ceef40e39] Allow the SQLITE_MAX_EXPR_DEPTH compile-time parameter to be set to 0 in order to disable expression depth checking. Ticket #3143. (CVS 5166) (check-in: [5ceef40e39] user: drh branch: trunk, size: 112795)
2008-05-01
17:16
[89f192b22b] part of check-in [59568844e7] Fix more compiler warnings. (CVS 5074) (check-in: [59568844e7] user: drh branch: trunk, size: 112601)
2008-04-29
00:15
[a896d1be67] part of check-in [9b07e59e51] Always convert IEEE NaN into NULL. Ticket #3060. Add test cases to verify that this is happening. (CVS 5066) (check-in: [9b07e59e51] user: drh branch: trunk, size: 112650)
2008-04-25
00:08
[6a6f370059] part of check-in [f6313311dd] Candidate fix for ticket #3082. Test cases needed. (CVS 5047) (check-in: [f6313311dd] user: drh branch: trunk, size: 112550)
2008-04-24
12:36
[d5733edd98] part of check-in [85eedad186] Fix a crash that can follow a malloc() failure in malloc7.test. (CVS 5042) (check-in: [85eedad186] user: danielk1977 branch: trunk, size: 111197)
2008-04-15
12:14
[7aecda0fb4] part of check-in [d04246a463] Fix a code generator bug caused by the new CSE optimization. Add test cases to prevent a recurrence. (CVS 5011) (check-in: [d04246a463] user: drh branch: trunk, size: 111137)
2008-04-11
15:36
[4b6cc24969] part of check-in [38746c5438] Additional reductions in the use of memset(). (CVS 4988) (check-in: [38746c5438] user: drh branch: trunk, size: 110519)
2008-04-01
18:04
[acc695135d] part of check-in [e84ff57b62] Avoid factoring single-instruction constants that end up getting replaced by an SCopy instruction. (CVS 4952) (check-in: [e84ff57b62] user: drh branch: trunk, size: 110470)
15:06
[bc7ab980ab] part of check-in [492490f9c8] Add the testcase() macro. Additional CSE test coverage. (CVS 4951) (check-in: [492490f9c8] user: drh branch: trunk, size: 108012)
12:24
[64843f848a] part of check-in [e25939fb25] Fix a problem with CASTs and the new CSE mechanism. (CVS 4950) (check-in: [e25939fb25] user: drh branch: trunk, size: 104238)
05:07
[11e9a05c4e] 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: 104182)
03:27
[86aeb607d4] part of check-in [7e8156129d] More test cases and bug fixes with CSE. (CVS 4948) (check-in: [7e8156129d] user: drh branch: trunk, size: 102933)
01:42
[35cccadd28] part of check-in [e5aff09ac6] Initial test cases and bug fixes in the CSE logic. (CVS 4946) (check-in: [e5aff09ac6] user: drh branch: trunk, size: 102724)
2008-03-31
23:48
[787f5fd4ee] 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: 101840)
18:19
[d005510999] part of check-in [2126db3985] Factor constant subexpressions out of loops. (CVS 4942) (check-in: [2126db3985] user: drh branch: trunk, size: 97848)
2008-03-25
09:47
[7e56d2a24a] 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: 96757)
2008-03-20
16:30
[8758d120f0] part of check-in [4c4be4c3c8] Reinstate test cases for the limit tests. The sqlite3_limit() API is now tested and working. (CVS 4899) (check-in: [4c4be4c3c8] user: drh branch: trunk, size: 96813)
14:03
[11e00cafa3] part of check-in [60c77882b2] Initial implementation of per-connection limits and the sqlite3_limit() API. The sqllimits1.test script crashes. SQLITE_LIMIT_PAGE_COUNT and SQLITE_LIMIT_VDBE_OP are currently ignored. (CVS 4897) (check-in: [60c77882b2] user: drh branch: trunk, size: 96779)
2008-03-12
10:39
[242f2f57a3] part of check-in [3f9f81e908] Do not segfault after a parse error in a sub-select in a statement of the form "DELETE WHERE ... IN(sub-select)". Ticket #2991. (CVS 4854) (check-in: [3f9f81e908] user: danielk1977 branch: trunk, size: 96796)
2008-03-10
14:12
[4531fb111f] part of check-in [d4ab14b974] Add explicit !=0 tests in order to suppress warning messages in Borland-C. Ticket #2985 (CVS 4850) (check-in: [d4ab14b974] user: drh branch: trunk, size: 96800)
2008-01-23
14:51
[e6fb42c6e5] part of check-in [45c59802f6] Testing coverage enhancements to sqlite3_get_table() and to the SELECT code generator. (CVS 4746) (check-in: [45c59802f6] user: drh branch: trunk, size: 96797)
2008-01-19
23:50
[07318c7e5e] part of check-in [010f7b780c] Additional test coverage improvements. Test coverage now stands at 98.73%. (CVS 4731) (check-in: [010f7b780c] user: drh branch: trunk, size: 97008)
2008-01-18
14:08
[9ac9177466] part of check-in [0e50c0200a] Remove the OP_HexBlob instruction and code OP_Blob directly. Reduce the amount of memory allocation required to encode blob literals. Remove the "out2" instruction type. Other minor optimizations. (CVS 4726) (check-in: [0e50c0200a] user: drh branch: trunk, size: 97314)
02:31
[3162c112a3] part of check-in [251c78a982] Fix a bug in the test scripts that was preventing many scripts from running with all.test. Lots of hidden failures now come to light. (CVS 4723) (check-in: [251c78a982] user: drh branch: trunk, size: 97122)
2008-01-17
17:15
[f13ad688f6] part of check-in [5ba4e5adf6] Reuse registers better in the inner loop of a SELECT statement. (CVS 4719) (check-in: [5ba4e5adf6] user: drh branch: trunk, size: 97329)
16:22
[217ba4f47f] 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: 97324)
02:36
[00ee6555e3] part of check-in [b3a141b2b0] Registerification of the WHERE clause logic. (CVS 4716) (check-in: [b3a141b2b0] user: drh branch: trunk, size: 97396)
2008-01-13
19:02
[be1018f291] part of check-in [23181f8689] Fix some issues with out-of-memory recovery. (CVS 4710) (check-in: [23181f8689] user: drh branch: trunk, size: 97396)
2008-01-12
19:03
[14130c27fb] 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: 97324)
12:48
[68bcc07517] part of check-in [a6dddebcc5] Continuing work toward converting the VM into a register machine. (CVS 4707) (check-in: [a6dddebcc5] user: drh branch: trunk, size: 94358)
2008-01-10
23:50
[560fbd4aff] part of check-in [8cbd46517f] More work toward converting the VM into a register-based machine. (CVS 4704) (check-in: [8cbd46517f] user: drh branch: trunk, size: 94506)
03:46
[522ba17fa6] part of check-in [173698c963] Continuing work toward registerizing the code generator. (CVS 4703) (check-in: [173698c963] user: drh branch: trunk, size: 94104)
2008-01-09
23:04
[2797102971] 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: 93177)
02:15
[f1bee4f35f] part of check-in [92deff07bb] Continued work toward converting to a register-based VM. (CVS 4698) (check-in: [92deff07bb] user: drh branch: trunk, size: 93144)
2008-01-08
23:54
[26b29dabea] part of check-in [8862ce9cee] Registerify the comparison opcodes. (CVS 4697) (check-in: [8862ce9cee] user: drh branch: trunk, size: 92951)
02:57
[6f2a852227] part of check-in [b9bf509e39] Progress toward registerification of the constraint checking logic for INSERT and UPDATE. (CVS 4693) (check-in: [b9bf509e39] user: drh branch: trunk, size: 92322)
2008-01-07
19:20
[f84b4901df] 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: 93070)
2008-01-06
00:25
[99efbe91c1] part of check-in [8201f71729] Registerify the SRT_Subroutine destination for SELECT results. (CVS 4690) (check-in: [8201f71729] user: drh branch: trunk, size: 93171)
2008-01-05
16:29
[cb8b65c3ad] part of check-in [66396d2f02] Registerify binary operators. Add register tracing to debugging output. (CVS 4686) (check-in: [66396d2f02] user: drh branch: trunk, size: 93142)
06:51
[991ae77f4e] part of check-in [6c78d2a49a] Expression code generator takes advantage of recent opcode changes. (CVS 4685) (check-in: [6c78d2a49a] user: drh branch: trunk, size: 92952)
05:20
[743e8f1da2] part of check-in [3e8a07dd3c] Register-ify the OP_AddImm and all casting opcodes. Omit the OP_MemIncr opcode. (CVS 4683) (check-in: [3e8a07dd3c] user: drh branch: trunk, size: 92494)
04:06
[d317c8081a] 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: 92491)
2008-01-04
22:01
[57f7c39724] part of check-in [fe057a88d0] Implement the out2-prerelease opcode design pattern. (CVS 4681) (check-in: [fe057a88d0] user: drh branch: trunk, size: 92558)
2008-01-03
23:44
[e60ee4f481] 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: 92557)
18:44
[97c622402e] part of check-in [4f3967073d] Update OP_Rowid, OP_Column and related opcodes to use registers. (CVS 4671) (check-in: [4f3967073d] user: drh branch: trunk, size: 92629)
18:03
[4e6bd19563] 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: 92021)
07:54
[24202e79a9] 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: 92029)
00:01
[4bfb33eeef] 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: 92068)
2008-01-02
16:27
[c5c784ffdd] part of check-in [86dcdfe6d7] Combine the eDest and iParm arguments to sqlite3Select() into a single type - "SelectDest". (CVS 4657) (check-in: [86dcdfe6d7] user: danielk1977 branch: trunk, size: 91920)
14:28
[9f46128496] part of check-in [4c7f35da77] Add opcodes OP_ResultRow and OP_RegMakeRec which are register-based equivalents to OP_Callback and OP_MakeRecord. Use the new opcodes. (CVS 4656) (check-in: [4c7f35da77] user: drh branch: trunk, size: 91837)
00:34
[c3fb939d68] 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: 91825)
2008-01-01
19:02
[d0969aa79a] part of check-in [e08a33ed72] Optimize trigger compilation to avoid populating the OLD.* and NEW.* pseudo-tables with data that will never be used. Some testing to come. (CVS 4651) (check-in: [e08a33ed72] user: danielk1977 branch: trunk, size: 91202)
2007-12-14
15:12
[43807e139e] part of check-in [b821b6ed17] Fix an out-of-memory NULL pointer defer in the code generator. Ticket #2843. (CVS 4630) (check-in: [b821b6ed17] user: drh branch: trunk, size: 90961)
2007-12-13
21:54
[045ba74471] part of check-in [4e91a267fe] Change all instances of "it's" in comments to either "its" or "it is", as appropriate, in case the comments are ever again read by a pedantic grammarian. Ticket #2840. (CVS 4629) (check-in: [4e91a267fe] user: drh branch: trunk, size: 90923)
2007-12-10
05:03
[7c8e3295dd] part of check-in [0b34a18651] Fix compilation/testing with OMIT_SUBQUERY defined. Ticket #2828. (CVS 4603) (check-in: [0b34a18651] user: danielk1977 branch: trunk, size: 90933)
2007-11-29
17:05
[8c32309ded] part of check-in [56d0e32677] Optimisations for expressions of the form "<value> IN (SELECT <column> FROM )". (CVS 4579)
(check-in: [56d0e32677] user: danielk1977 branch: trunk, size: 90897)
2007-11-12
09:50
[7977bb9680] part of check-in [06749ac7af] Allow collation sequence names to be quoted. Ticket #2744. (CVS 4537) (check-in: [06749ac7af] user: danielk1977 branch: trunk, size: 85512)
2007-10-23
18:55
[23fac37490] part of check-in [c085d6dfc0] Add comments, assertions, and test cases to demonstrate that the problem described in ticket #2742 is not a real problem. (CVS 4510) (check-in: [c085d6dfc0] user: drh branch: trunk, size: 85363)
15:39
[650f30eba6] part of check-in [7e30fd6a09] Floating point and 64-bit integer constants store in the virtual machine opcodes in binary, not as text. Performance improvement. Ticket #2733. (CVS 4507) (check-in: [7e30fd6a09] user: drh branch: trunk, size: 84951)
2007-09-18
15:55
[20a45339a6] part of check-in [b2d605a271] Remove unneeded pSchema field from the Expr structure. (CVS 4434) (check-in: [b2d605a271] user: drh branch: trunk, size: 84182)
2007-09-01
18:24
[7853a8161e] part of check-in [02b751fb9d] Fix a bug in jrnlTruncate(). And other coverage improvements. (CVS 4367) (check-in: [02b751fb9d] user: danielk1977 branch: trunk, size: 84135)
2007-08-31
17:42
[95f3674736] part of check-in [d119427314] Allow sqllimits1.test to be run from a regular build of testfixture. Add the 'amalgamation-testfixture' target to main.mk - to build testfixture via sqlite3.c. (CVS 4354) (check-in: [d119427314] user: danielk1977 branch: trunk, size: 84202)
2007-08-29
14:06
[e0e393df86] part of check-in [c790c234c3] Use the DbMalloc() and DbRealloc() functions more consistently. (CVS 4323) (check-in: [c790c234c3] user: danielk1977 branch: trunk, size: 84130)
12:31
[70660e0c5f] 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: 84149)
2007-08-22
20:18
[978afdceb2] part of check-in [db818430e9] The malloc.test script now passes all tests with no errors. (CVS 4271) (check-in: [db818430e9] user: drh branch: trunk, size: 84061)
2007-08-16
12:24
[3ea108a9e4] part of check-in [ba80ee59a7] Combine sqlite3DbOfVdbe() and sqlite3VdbeDb() into a single function. (CVS 4236) (check-in: [ba80ee59a7] user: drh branch: trunk, size: 84113)
11:36
[a304c22073] part of check-in [5e2795d0eb] Fix some more small problems introduced by recent refactoring. (CVS 4235) (check-in: [5e2795d0eb] user: danielk1977 branch: trunk, size: 84123)
10:09
[beb6b40974] 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: 84101)
04:30
[0022660663] 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: 83988)
2007-08-07
17:13
[9bc05ed44f] part of check-in [7550dd1d59] Remove all tabs from source code files. Ticket #2556. (CVS 4198) (check-in: [7550dd1d59] user: drh branch: trunk, size: 82734)
17:04
[ef4af51136] part of check-in [73db545289] Revise the amalgamation so that all symbols have file scope except those that begin with "sqlite3_". Ticket #2554. (CVS 4197) (check-in: [73db545289] user: drh branch: trunk, size: 82720)
2007-07-23
22:51
[d39d87cf15] part of check-in [de000280c6] Detect nested aggregate functions even if the inner aggregate function is aliased using an AS clause. Ticket #2526. (CVS 4179) (check-in: [de000280c6] user: drh branch: trunk, size: 82720)
2007-06-25
16:29
[de9f55b1ba] part of check-in [044ca1c72a] Fix for #2445. A bug in the lookupName() logic that could cause a crash when a WHERE clause used an alias to refer to an expression in the result-set of the SELECT, and that expression was itself a reference to a table column. (CVS 4122) (check-in: [044ca1c72a] user: danielk1977 branch: trunk, size: 82489)
2007-06-20
16:13
[763ca2b39f] part of check-in [99a20f6a42] A column name preceded by a unary "+" operator is considered to be a column name when computing the collating sequence to be used by a comparison operator or ORDER BY clause. (CVS 4104) (check-in: [99a20f6a42] user: drh branch: trunk, size: 82459)
2007-06-15
16:37
[b68f1b208b] part of check-in [d4ab94288b] Fix an obscure memory leak in the SQL compiler.. (CVS 4070) (check-in: [d4ab94288b] user: danielk1977 branch: trunk, size: 82424)
2007-06-08
00:20
[97819d6a4f] 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: 82282)
2007-05-30
10:36
[fb386ee800] part of check-in [7522d2fb32] Add some extra tests for malloc failure during expression parsing and execution using fuzzily generated SQL. (CVS 4043) (check-in: [7522d2fb32] user: danielk1977 branch: trunk, size: 81657)
2007-05-29
12:11
[7243b6c01b] 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: 81586)
2007-05-15
07:00
[436f1d3e5a] part of check-in [da0c1ab4de] A fix for queries that used correlated, compound sub-queries in the HAVING clause. Also update fuzz.test some more. (CVS 4001) (check-in: [da0c1ab4de] user: danielk1977 branch: trunk, size: 81472)
2007-05-14
11:34
[bad06f783d] part of check-in [5627ff74be] Remove terms with operator TK_AS from the expression tree. Ticket #2356. (CVS 3991) (check-in: [5627ff74be] user: drh branch: trunk, size: 81397)
2007-05-12
06:11
[2283be0ae4] part of check-in [2e80736d57] Bugfixes for assert() failures found by fuzz.test. (CVS 3986) (check-in: [2e80736d57] user: danielk1977 branch: trunk, size: 81355)
2007-05-11
01:44
[d890a38c2f] part of check-in [d12a8924c6] Additional parsing bugs fixed. (CVS 3981) (check-in: [d12a8924c6] user: drh branch: trunk, size: 81328)
00:20
[482db85065] part of check-in [d146f01a02] Make sure that the REGISTER token generates a valid Expr. REGISTER will cause the tokenizer to abort, but the parser might do several reduce actions prior to that abort and those reduce actions sometimes need a valid Expr. (CVS 3980) (check-in: [d146f01a02] user: drh branch: trunk, size: 81393)
2007-05-10
10:46
[65b8a3dff2] part of check-in [2c9c94a24d] Add code to enforce the MAX_EXPR_DEPTH limit. (CVS 3968) (check-in: [2c9c94a24d] user: danielk1977 branch: trunk, size: 81308)
2007-05-09
11:37
[1f3c365fc5] part of check-in [9bf2c594a4] Add further test cases for compile time limits. (CVS 3963) (check-in: [9bf2c594a4] user: danielk1977 branch: trunk, size: 78943)
2007-05-08
18:04
[eb91a54d0c] part of check-in [251ba1981e] Fix a null-pointer dereference that follows a malloc() failure introduced in (3954). (CVS 3956) (check-in: [251ba1981e] user: danielk1977 branch: trunk, size: 78818)
17:54
[d593bbac8e] part of check-in [eeee6b71e5] Add a few more tests to sqllimit1.test. (CVS 3954) (check-in: [eeee6b71e5] user: danielk1977 branch: trunk, size: 78808)
2007-04-18
17:07
[2f0f9f89ef] part of check-in [7f9f0444ed] Fix a && where & was intended. This is a real problem, but it would be very difficult to devise a test case where it might lead to an unexpected result. Ticket #2306. (CVS 3856) (check-in: [7f9f0444ed] user: drh branch: trunk, size: 78478)
2007-04-13
16:06
[2c32c54600] part of check-in [cfc6f933dc] Match ORDER BY terms to columns using names in compound queries. Make sure this works for subqueries, especially in the right-hand side of an IN operator. Ticket #2296. (CVS 3842) (check-in: [cfc6f933dc] user: drh branch: trunk, size: 78480)
2007-03-27
13:36
[a8740c24af] 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: 78416)
2007-03-26
22:05
[971dd206ec] 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: 78268)
2007-03-12
23:48
[b5c65202c7] part of check-in [e20e76f6d8] Clarify the use of loop variables in a expr.c. (CVS 3683) (check-in: [e20e76f6d8] user: drh branch: trunk, size: 78292)
2007-02-24
15:29
[824f026e74] part of check-in [fba0a1e508] Add comments to sqlite3ExprCompare() to clarify its operation. Ticket #2216. (CVS 3663) (check-in: [fba0a1e508] user: drh branch: trunk, size: 78273)
13:53
[3fc187bc43] part of check-in [8309858143] Additional tests and some improvements to the INSERT transfer optimization. More testing is needed. (CVS 3661) (check-in: [8309858143] user: drh branch: trunk, size: 77669)
11:52
[7815bdb271] part of check-in [e11bbf174c] Make sure that integer values are converted to real when pulled from a REAL table column by GROUP BY. Ticket #2251. Also make sure default values are correctly expanded. There may be other places in the code where this issue comes up - we need to look further. (CVS 3659) (check-in: [e11bbf174c] user: drh branch: trunk, size: 77648)
2007-02-23
03:00
[24d52bd600] part of check-in [da81725ca1] Clarify the documentation on how comparisons occur in an IN operator. Fix the comparison operators when both sides of an IN operator are expressions (ticket #2248). Changes to main.mk for adding FTS2 into the standard build also got mixed in with this check-in by mistake. (CVS 3656) (check-in: [da81725ca1] user: drh branch: trunk, size: 77339)
2007-02-14
09:19
[a7c2369b2b] part of check-in [cb78f7cb0f] Use OP_VColumn instead of OP_Column when querying virtual tables for values to save in aggregate context records. #2230. (CVS 3644) (check-in: [cb78f7cb0f] user: danielk1977 branch: trunk, size: 77350)
2007-02-07
13:09
[dfd25ae8f8] part of check-in [3638823a62] Explicit collations always override implicit collations. This is backwards compatible since SQLite has not previously supported explicit collations. Need to add tests of this new behavior. (CVS 3633) (check-in: [3638823a62] user: drh branch: trunk, size: 77302)
2007-02-02
12:44
[8cf28815fd] part of check-in [9740aa95a3] Minor tweaks to collating sequences. We'll hold of making major changes until 3.4.0, since we'll likely end up with some minor technical imcompatibilities. (CVS 3626) (check-in: [9740aa95a3] user: drh branch: trunk, size: 77040)
2007-02-01
23:02
[4ece4d575f] part of check-in [85cca7cd25] First cut at adding the COLLATE operator. Regression tests pass (or at least the quick set does) and a few new tests have been added. But many more tests are needed. Rules for combining collations need to be worked out. (CVS 3624) (check-in: [85cca7cd25] user: drh branch: trunk, size: 76618)
01:40
[ec0b5d9dd6] part of check-in [505dce8f4e] Allow up to 64 tables in a join (the number of bits in a long long int). The old limit was 32 tables. (CVS 3622) (check-in: [505dce8f4e] user: drh branch: trunk, size: 76049)
2007-01-04
01:20
[3d2cf15fd9] part of check-in [70f5f3b85f] Fix for ticket #2141. (CVS 3552) (check-in: [70f5f3b85f] user: drh branch: trunk, size: 76038)
2006-12-16
16:25
[82603dc288] 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: 76014)
2006-11-23
11:59
[03420f3139] part of check-in [3dea7fbefd] Fix a typo in the OMIT_AUTORIZATION in expr.c. (CVS 3518) (check-in: [3dea7fbefd] user: drh branch: trunk, size: 75930)
2006-08-24
15:18
[0546cc60f0] part of check-in [e029637e54] Documentation updates for the new SQLITE_FUNCTION authorization. (CVS 3366) (check-in: [e029637e54] user: drh branch: trunk, size: 75927)
14:59
[fb53fb9ddb] part of check-in [4547c81f7d] Enhance the sqlite3_set_authorizer() callback so that it provides callbacks on each SQL function that is invoked. (CVS 3365) (check-in: [4547c81f7d] user: drh branch: trunk, size: 75889)
2006-07-11
13:15
[715734d868] part of check-in [b1f326e695] Prevent memory leak and possible NULL pointer deference after malloc failure. Ticket #1886. (CVS 3329) (check-in: [b1f326e695] user: drh branch: trunk, size: 75424)
2006-07-08
18:41
[f2c7af5591] part of check-in [30dfb9bf21] Better comment to describe the confusing operand reversal for infix functions. (CVS 3325) (check-in: [30dfb9bf21] user: drh branch: trunk, size: 75073)
18:35
[3bd41e5aa9] part of check-in [6e98373ca1] For infix functions (LIKE, GLOB, REGEXP, and MATCH) treat the left operand as the first argument for the purposes of virtual table function overloading, even though the left operand is really the the second argument. (CVS 3324) (check-in: [6e98373ca1] user: drh branch: trunk, size: 74884)
17:06
[acfc181c47] part of check-in [12cc7af4b6] Allow virtual table implementations to overload function that use a column of the virtual table as their first argument. Untested. (CVS 3322) (check-in: [12cc7af4b6] user: drh branch: trunk, size: 74270)
2006-06-14
19:00
[78b521337d] 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: 74125)
2006-06-13
04:11
[8c873e0543] part of check-in [f9ea970475] Bugfixes: Fix a segfault introduced as part of the new vtab code, deallocate memory in the Destroy() method of the echo module. (CVS 3221) (check-in: [f9ea970475] user: danielk1977 branch: trunk, size: 74133)
01:04
[896f642936] 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: 74088)
2006-06-11
23:41
[3ea9b26c6c] 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: 73967)
2006-05-23
23:22
[f1ad18d0b7] part of check-in [6e5a497621] Fix type coercion rules for the IN operator. Ticket #1821. (CVS 3188) (check-in: [6e5a497621] user: drh branch: trunk, size: 73963)
2006-03-17
13:56
[c85d7bee7d] part of check-in [8f60139f68] Miscellaneous code cleanup. (CVS 3143) (check-in: [8f60139f68] user: drh branch: trunk, size: 73966)
2006-03-06
20:55
[105e8e17ba] part of check-in [e510e6dd9d] Code changes resulting from Coverity analysis. http://scan.coverity.com/ Found 1 potential segfault in sqlite3_mprintf(). Also 2 failures to fclose() following a malloc() failure. And lots of cases where unnecessary conditionals could be removed from the code. (CVS 3126) (check-in: [e510e6dd9d] user: drh branch: trunk, size: 74074)
2006-03-02
04:44
[2d72534daa] part of check-in [a286e54e26] Allow WHERE clause terms on the left table of a LEFT OUTER JOIN to contain aggregate subqueries. Ticket #1697. (CVS 3117) (check-in: [a286e54e26] user: drh branch: trunk, size: 74052)
2006-02-10
07:07
[9c957fabf9] part of check-in [5e8611e13d] Fix the origin APIs so that they correctly handle views and subqueries that cannot be flattened. (CVS 3072) (check-in: [5e8611e13d] user: danielk1977 branch: trunk, size: 74019)
2006-01-30
14:36
[1149c3380b] part of check-in [944df310ce] Fix bug with CHECK constraints contain an IN operator. Ticket #1645. (CVS 3035) (check-in: [944df310ce] user: drh branch: trunk, size: 73960)
2006-01-24
12:09
[cda707cc5e] 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: 73892)
2006-01-23
05:50
[62f044ebff] part of check-in [cc2e8e87cf] Improve coverage of expr.c and btree.c slightly. (CVS 2992) (check-in: [cc2e8e87cf] user: danielk1977 branch: trunk, size: 73839)
2006-01-18
16:51
[c541c56990] 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: 73902)
2006-01-13
06:33
[f885cfe73f] 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: 74002)
2006-01-11
21:41
[3b6acdb4e2] 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: 73995)
2006-01-10
17:58
[b90fa835a2] 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: 73951)
2006-01-09
16:12
[426717b11c] part of check-in [3e75d3d5ef] Fix some errors to do with attached databases and text encodings in shared-cache mode. (CVS 2895) (check-in: [3e75d3d5ef] user: danielk1977 branch: trunk, size: 73795)
06:29
[3bf54eca0b] part of check-in [82b81f69c7] Rename DbSchema to "Schema" and SqliteTsd to "ThreadData". (CVS 2893) (check-in: [82b81f69c7] user: danielk1977 branch: trunk, size: 73795)
2006-01-05
11:34
[ed2a272c7a] 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: 73760)
2006-01-03
15:16
[714a06707f] part of check-in [837dc77ff9] Always case 0 to (char*) on varargs functions. Otherwise there are problems on 64-bit machines. (CVS 2854) (check-in: [837dc77ff9] user: drh branch: trunk, size: 73675)
2005-12-09
20:02
[abdd201215] part of check-in [83a5915155] Clean up annoying (and pointless) compiler warnings about differing signedness. (CVS 2810) (check-in: [83a5915155] user: drh branch: trunk, size: 73661)
2005-12-06
12:52
[540ed7eb44] 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: 73538)
2005-11-29
03:13
[80ceb8c7d1] part of check-in [058f317538] Make the OsFile structure opaque with its internal structure known only to the appropriate os_*.c implementation. Omit the os_unix.h and os_win.h include files. The crash tests are broken by this patch. (CVS 2791) (check-in: [058f317538] user: drh branch: trunk, size: 73505)
2005-11-28
12:36
[b18a7dc6eb] part of check-in [1b4f2d89bb] Replace a call to sprintf() with sqlite3MPrintf() since on some embedded platforms, sprintf() is busted. Need to go through and do similar replacements elsewhere in the code. (CVS 2790) (check-in: [1b4f2d89bb] user: drh branch: trunk, size: 73383)
2005-11-16
12:53
[3b1a24aab6] part of check-in [bb866ed880] Do not allow aggregate functions in a WHERE clause. Ticket #1514. (CVS 2769) (check-in: [bb866ed880] user: drh branch: trunk, size: 73413)
2005-11-14
22:29
[fa22a2ed9d] part of check-in [ce06c123d0] Create separate affinities for INTEGER and REAL. (CVS 2766) (check-in: [ce06c123d0] user: drh branch: trunk, size: 73282)
2005-11-05
15:07
[696434cee4] part of check-in [e66289b52f] Remove a C++-ism that slipped into the code during the recent CHECK enhancements. Ticket #1513. (CVS 2762) (check-in: [e66289b52f] user: drh branch: trunk, size: 72844)
2005-11-03
12:33
[a1ca133870] part of check-in [bb94ef64b2] Prohibit parameters in CHECK constraint expressions. (CVS 2758) (check-in: [bb94ef64b2] user: drh branch: trunk, size: 72844)
02:03
[14466b2270] part of check-in [db27afc4cd] Disallow subqueries in CHECK constraints. (CVS 2756) (check-in: [db27afc4cd] user: drh branch: trunk, size: 72643)
00:41
[e74e9c265c] part of check-in [2313d912ba] First cut at supporting CHECK constraints. Everything appears to work, but much more testing is needed as well as documentation. (CVS 2754) (check-in: [2313d912ba] user: drh branch: trunk, size: 72492)
2005-11-01
15:48
[acf80a3ce4] part of check-in [e0d6f61c7d] Omit the SQLITE_AFF_INTEGER type affinity. All numeric values are now of type real, though an integer representation is still sometimes used internally for efficiency. (CVS 2753) (check-in: [e0d6f61c7d] user: drh branch: trunk, size: 71828)
2005-10-06
16:53
[6881c8dfe3] part of check-in [edca8913ca] More efficient handling of the LIMIT clause. Scalar subqueries and EXISTS on compound SELECT statements now working properly. Ticket #1473. (CVS 2747) (check-in: [edca8913ca] user: drh branch: trunk, size: 72136)
2005-09-23
21:11
[bb2cf5d5b0] part of check-in [352cc9f53b] Fix an uninitialized structure member that was causing a malfunction when you used deeply nested and very complex views. Ticket #1449. (CVS 2733) (check-in: [352cc9f53b] user: drh branch: trunk, size: 71988)
2005-09-20
17:42
[b549a39a3c] 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: 71937)
2005-09-16
02:38
[b8dbd5a30e] 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: 72100)
2005-09-09
01:33
[208f8258d5] part of check-in [4d62e36fe3] Infrastructure for the DISTINCT keyword in aggregate functions. But it does not work yet. If you try to use it you get an error message. (CVS 2680) (check-in: [4d62e36fe3] user: drh branch: trunk, size: 72079)
2005-09-07
22:48
[38f1e135aa] part of check-in [7e85a162d0] More bug fixes. But there are still tests that fail. (CVS 2664) (check-in: [7e85a162d0] user: drh branch: trunk, size: 71843)
21:22
[e0a3f27558] part of check-in [17039ec3ff] Rewrite the aggregate handling logic so that it runs in O(1) space. This is the first cut at the code. Many regression tests fail. (CVS 2662) (check-in: [17039ec3ff] user: drh branch: trunk, size: 71808)
2005-09-05
20:06
[8a72157fa6] part of check-in [7b56763a8b] Fix bugs introduced by checkin (2656) and do some modest code enhancements. (CVS 2657) (check-in: [7b56763a8b] user: drh branch: trunk, size: 68872)
2005-09-01
03:07
[e9d0401bed] part of check-in [09db0a2424] Sorting is now done using a sorting index rather than loading the entire result set into memory and doing a merge sort. The old merge sort technique was a carry-over from SQLite version 1. The new method uses a bounded amount of memory and scales to much larger result sets. There are still errors: some 39 regression tests fail. (CVS 2653) (check-in: [09db0a2424] user: drh branch: trunk, size: 68879)
2005-08-30
00:54
[aef4a3901a] part of check-in [4ab994a87e] Minor code enhancements. (CVS 2642) (check-in: [4ab994a87e] user: drh branch: trunk, size: 68792)
2005-08-25
12:45
[1916cb22c5] part of check-in [fc9e04609b] When the left-hand side of an IN operator is constant and the right-hand side is a SELECT, recognize that the IN operator is not constant. Ticket #1380. (CVS 2624) (check-in: [fc9e04609b] user: drh branch: trunk, size: 68260)
2005-08-24
16:54
[e05fa8448a] part of check-in [aa7dd3f2c7] Remove a stray C++ style comment causing problems for some compilers. (CVS 2621) (check-in: [aa7dd3f2c7] user: drh branch: trunk, size: 68099)
2005-08-23
11:17
[43d49f124b] part of check-in [5cada745ac] Handle empty blob constants correctly. Ticket #1373. (CVS 2615) (check-in: [5cada745ac] user: drh branch: trunk, size: 68139)
2005-08-19
03:03
[b01e5c46b7] part of check-in [4281a838f2] Additional tests for better coverage. (CVS 2602) (check-in: [4281a838f2] user: drh branch: trunk, size: 68011)
2005-08-14
20:47
[24eda6c050] part of check-in [98338abf9e] General code cleanup resulting in smaller footprint. (CVS 2595) (check-in: [98338abf9e] user: drh branch: trunk, size: 68083)
2005-08-12
22:58
[cad7f91975] part of check-in [3c00f5982a] Improved error message when a #NNN parameter appears on user input. Additional coverage testing. (CVS 2582) (check-in: [3c00f5982a] user: drh branch: trunk, size: 68124)
22:56
[9c319b9f9f] 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: 68124)
2005-07-29
15:10
[c71265b78d] 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: 67699)
2005-07-21
18:23
[0e158f7cc8] 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: 67700)
03:15
[cf5146e8a0] 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: 67727)
2005-07-08
18:25
[94dce12d52] part of check-in [ba56478dd8] Allow the IN operator to take a list of arbitrary expressions on its right-hand side. The expressions no longer need to be constant. The current implementation seems to work but needs more testing and optimization. (CVS 2542) (check-in: [ba56478dd8] user: drh branch: trunk, size: 67668)
17:13
[daf3515d33] 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: 67028)
2005-06-30
17:04
[fdc8b82bab] part of check-in [d273766ef2] Allow the DEFAULT value of a column to be obtained by calling a function that has constant arguments, such as julianday('now'). (CVS 2534) (check-in: [d273766ef2] user: drh branch: trunk, size: 67019)
2005-06-25
18:42
[8d4f5e3d06] part of check-in [17631785f9] Remove the blob(), text() and numeric() functions added in (2524) and replace them with the standard CAST operator. Ticket #1287. (CVS 2527) (check-in: [17631785f9] user: drh branch: trunk, size: 66372)
2005-06-22
08:48
[4d6e26da20] part of check-in [f3427a139c] Allow parameters to be introduced by characters ':', '$' and '#'. This is an experimental change. (CVS 2523) (check-in: [f3427a139c] user: drh branch: trunk, size: 65656)
2005-06-12
21:35
[6d7058944c] 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: 65811)
2005-06-06
21:19
[e7245e9c3b] part of check-in [e73d25c741] Reference count Table structures so that they are not deallocated too soon. Ticket #1210. (CVS 2498) (check-in: [e73d25c741] user: drh branch: trunk, size: 65911)
17:11
[e2aec43eda] part of check-in [6a51bdeeff] Avoid ambiguous column name errors when the column name is in the USING clause of a join. Ticket #743. (CVS 2495) (check-in: [6a51bdeeff] user: drh branch: trunk, size: 65916)
16:59
[3a8dae4bfa] part of check-in [265fb6079c] Naming the join columns in the result set of a natural join does not result in an "ambiguous column name" error. Ticket #1217. (CVS 2494) (check-in: [265fb6079c] user: drh branch: trunk, size: 65379)
2005-05-24
20:19
[54a4c18d34] part of check-in [3e64f1ab41] Remove the config.h file from the build. Ticket #1224. (CVS 2480) (check-in: [3e64f1ab41] user: drh branch: trunk, size: 65125)
12:01
[62cfa7d8b3] part of check-in [5fadb464eb] Move a few things around to make building without the parser easier. (CVS 2479) (check-in: [5fadb464eb] user: danielk1977 branch: trunk, size: 65143)
2005-05-23
17:26
[d0fbb951fd] part of check-in [42a626ace1] The REGEXP operator is recognized. It tries to invoke a function named regexp() which does not exist in the native build. But users who want to can add an appropriate regexp() function using sqlite3_create_function(). (CVS 2478) (check-in: [42a626ace1] user: drh branch: trunk, size: 68981)
15:06
[f2ff12d997] part of check-in [ef4059e3af] Make sure that the use of a double-quoted string literal does not trick the optimizer into using a correlated subquery when a static subquery would suffice. (CVS 2477) (check-in: [ef4059e3af] user: drh branch: trunk, size: 70092)
2005-04-22
02:38
[bef1589dbd] 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: 69705)
2005-03-21
03:53
[bf7253cd2d] part of check-in [e7844a01c2] Assorted fixes to the handling of various malloc() failures. (CVS 2413) (check-in: [e7844a01c2] user: danielk1977 branch: trunk, size: 69733)
2005-03-16
12:15
[53f8544954] 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: 69733)
2005-03-09
12:26
[8901081a12] part of check-in [9d5abc1ddf] Support for a future ALTER TABLE command to add columns with default values. (CVS 2367) (check-in: [9d5abc1ddf] user: danielk1977 branch: trunk, size: 69554)
2005-02-12
08:59
[e160aabb59] part of check-in [f7858d8830] Fix a problem with sub-queries and the flattening optimization. Also handle an extra case of database corruption. (CVS 2324) (check-in: [f7858d8830] user: danielk1977 branch: trunk, size: 69509)
2005-02-08
07:50
[b9ffd249ce] part of check-in [f0d3ca10c5] Fix for correlated subqueries where the parent is an aggregate. Ticket #1105. (CVS 2318) (check-in: [f0d3ca10c5] user: danielk1977 branch: trunk, size: 69406)
2005-02-05
12:48
[1b6b6b16bc] part of check-in [515e5033a5] Allow expressions (including variables) in LIMIT and OFFSET clauses. Ticket #1096. (CVS 2316) (check-in: [515e5033a5] user: danielk1977 branch: trunk, size: 68136)
2005-02-04
04:07
[2ed29dc4f8] part of check-in [2eb9087055] Remove code for SQL cursors. (CVS 2312) (check-in: [2eb9087055] user: danielk1977 branch: trunk, size: 68104)
2005-01-30
09:17
[06b7ab3d09] 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: 68136)
2005-01-29
08:32
[9965ce8a6f] part of check-in [b1b50f3158] Modify sub-query handling. Tickets #1083 and #1084. (CVS 2286) (check-in: [b1b50f3158] user: danielk1977 branch: trunk, size: 68093)
2005-01-23
22:41
[abadaf7b85] part of check-in [4daf1d1f9d] Minor changes to avoid warnings on some compilers. (CVS 2267) (check-in: [4daf1d1f9d] user: danielk1977 branch: trunk, size: 69409)
2005-01-21
08:13
[bf0875b105] part of check-in [c6fc49e610] Exclude a few more lines of code using OMIT macros. (CVS 2253) (check-in: [c6fc49e610] user: danielk1977 branch: trunk, size: 69407)
2005-01-20
22:48
[ebddbcf204] part of check-in [38401dfbd5] Bug fixes and enhancements entered while on jury recess. (CVS 2246) (check-in: [38401dfbd5] user: drh branch: trunk, size: 68910)
13:36
[12b37893ab] part of check-in [d30fdf0f2c] Added the SQLITE_OMIT_SUBQUERY compile-time option and the EXISTS operator. Regression tests are currently failing with an assertion fault. (CVS 2245) (check-in: [d30fdf0f2c] user: drh branch: trunk, size: 68778)
13:03
[09022cbd4f] part of check-in [417bbba93a] Remove a few more lines of code when SQLITE_OMIT_** macros are defined. (CVS 2244) (check-in: [417bbba93a] user: danielk1977 branch: trunk, size: 68298)
01:51
[8f8efe75a5] part of check-in [39cf97a902] Expression generator bug fix. (CVS 2239) (check-in: [39cf97a902] user: drh branch: trunk, size: 68301)
2005-01-19
23:24
[7e26c70d6e] 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: 68220)
2005-01-18
17:20
[fdacfb27a5] part of check-in [b1d4c42d2b] CREATE TABLE ... AS ... uses short names for columns. Ticket #1036. (CVS 2232) (check-in: [b1d4c42d2b] user: drh branch: trunk, size: 66703)
04:00
[fa983460a0] part of check-in [0142ae6f00] Refinements to the name resolution logic. Change the name of the keywordhash.c file to keywordhash.h. (CVS 2229) (check-in: [0142ae6f00] user: drh branch: trunk, size: 66692)
2005-01-17
22:08
[2a9485be4e] 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: 66030)
2005-01-15
01:52
[22bc51e18b] part of check-in [92f9d2b2f4] Test coverage improvements. (CVS 2215) (check-in: [92f9d2b2f4] user: drh branch: trunk, size: 65204)
2005-01-13
02:14
[ecfc8fd972] part of check-in [8378455f32] Fixes to 'configure' build system. Also extra coverage for main.c. (CVS 2204) (check-in: [8378455f32] user: danielk1977 branch: trunk, size: 65494)
2004-12-18
18:40
[d718509e56] 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: 65429)
2004-12-07
15:41
[d61efc5264] part of check-in [4852186aca] Only evaluate expressions once for UPDATE and INSERT statements that have BEFORE triggers. Fix for ticket #980. (CVS 2158) (check-in: [4852186aca] user: drh branch: trunk, size: 64706)
2004-11-23
01:47
[7987e5f50c] 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: 63817)
2004-11-22
19:12
[b985b42a3b] 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: 63811)
2004-11-20
20:44
[511c27a885] part of check-in [d10560c752] Avoid excess heap usage when copying expressions. Ticket #979. (CVS 2127) (check-in: [d10560c752] user: drh branch: trunk, size: 63812)
20:42
[6bb3961c03] part of check-in [0f444c032d] Avoid excess heap usage when copying expressions. Ticket #979. (CVS 2126) (check-in: [0f444c032d] user: drh branch: version_2, size: 51178)
18:13
[90f440e1fe] part of check-in [368774487e] Fix segfaults that might occur after a malloc failure. (CVS 2119) (check-in: [368774487e] user: drh branch: trunk, size: 63799)
2004-11-12
03:56
[4ee3e47358] part of check-in [8fde833c81] Autoincrement code installed. Simple smoke-testing only. No regression tests developed yet. (CVS 2091) (check-in: [8fde833c81] user: drh branch: trunk, size: 63746)
2004-11-09
12:44
[5f9afecf27] part of check-in [0d27c8ff48] Port the "DEFAULT CURRENT_TIME" etc. functionality from an earlier fork of sqlite. (CVS 2082) (check-in: [0d27c8ff48] user: danielk1977 branch: trunk, size: 63613)
2004-11-05
05:10
[be18081d29] part of check-in [ac2d5a605c] More use of sqlite3NestedParse. This version of the code does not work. (CVS 2060) (check-in: [ac2d5a605c] user: drh branch: trunk, size: 62957)
2004-10-31
02:22
[3a43e508a3] part of check-in [be661acfa8] Insert #ifdefs that can optionally remove features at compiletime resulting in a database engine with a smaller footprint. (CVS 2034) (check-in: [be661acfa8] user: drh branch: trunk, size: 61881)
2004-10-04
13:19
[2f492bf532] part of check-in [4c817e3f29] Save about 800 bytes of code space by aligning TK_ and OP_ constants so that we do not have to translate between them. (CVS 1998) (check-in: [4c817e3f29] user: drh branch: trunk, size: 61810)
2004-09-25
13:12
[f255c5c56c] part of check-in [cb631a135d] Code simplifications and size reductions. (CVS 1983) (check-in: [cb631a135d] user: drh branch: trunk, size: 60940)
2004-09-24
12:24
[16ccea21ff] part of check-in [9001e2220d] Fix for tickets #912 and #922. Problem introduced by check-in (1973). (CVS 1975) (check-in: [9001e2220d] user: drh branch: trunk, size: 61339)
2004-09-19
02:15
[4a674ed1c9] 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: 61361)
00:50
[a6d95632ef] part of check-in [eb9b501ad8] Merge the ListPush and ListPop VDBE opcodes into ContextPush and ContextPop. (CVS 1972) (check-in: [eb9b501ad8] user: drh branch: trunk, size: 61132)
2004-09-07
16:19
[9130794d8c] part of check-in [435b3f301f] Wildcards with the same name map into the same variable number. New api sqlite3_bind_parameter_index() added to map wildcard names into wildcard index numbers. Support for "?nnn" wildcards. (CVS 1945) (check-in: [435b3f301f] user: drh branch: trunk, size: 61080)
2004-09-06
17:24
[5b6881a229] 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: 58706)
2004-09-01
03:06
[d618305952] part of check-in [9c411c3c8d] Optimizations on the SELECT code generator. (CVS 1926) (check-in: [9c411c3c8d] user: drh branch: trunk, size: 58705)
2004-08-31
13:45
[3c3dd119fd] part of check-in [8fd65e7048] Simplifications and optimizations. Also: disable the corrupt.test for now. (CVS 1924) (check-in: [8fd65e7048] user: drh branch: trunk, size: 58384)
2004-08-21
17:54
[3694386726] part of check-in [bd6649c5aa] Optimizations to the code generator. (CVS 1899) (check-in: [bd6649c5aa] user: drh branch: trunk, size: 58492)
2004-08-20
16:02
[39ef5c1414] part of check-in [d3be0b7c5a] Add support for named wildcards in SQL statements. (CVS 1897) (check-in: [d3be0b7c5a] user: drh branch: trunk, size: 57727)
2004-08-08
23:39
[f11a1e5c48] part of check-in [81d91d14cf] Fix problems in the handling of malloc failures. (CVS 1882) (check-in: [81d91d14cf] user: drh branch: trunk, size: 57621)
20:22
[f4a883c00f] part of check-in [b065973898] Make sure the argument to ctype.h macros is always an unsigned character. Ticket #839. (CVS 1881) (check-in: [b065973898] user: drh branch: trunk, size: 57668)
2004-07-26
00:31
[0b8c89324d] part of check-in [1186e3ce0b] Various size optimizations. (CVS 1867) (check-in: [1186e3ce0b] user: drh branch: trunk, size: 57665)
2004-07-22
17:10
[7518270467] part of check-in [49c2ad8a75] Another attempt at fixing the memory allocation problem in sqliteExprListDup(). (CVS 1855) (check-in: [49c2ad8a75] user: drh branch: version_2, size: 51165)
16:32
[b73ba23d00] part of check-in [09494cab4f] Bug fix in allocation of expression lists after a malloc() failure. (CVS 1854) (check-in: [09494cab4f] user: drh branch: version_2, size: 51143)
2004-07-21
02:53
[a4e8ac69c8] part of check-in [65c3af74c1] Minor coding enhancements. (CVS 1839) (check-in: [65c3af74c1] user: drh branch: trunk, size: 58232)
2004-07-20
02:05
[4ac85257de] part of check-in [5c77b332bd] Fix an obscure memory leak in the expression list allocator. (CVS 1835) (check-in: [5c77b332bd] user: drh branch: version_2, size: 51116)
2004-07-19
00:39
[df21bde644] part of check-in [88a4e400f9] When comparing two expressions do not apply affinity to either operand. Ticket #805. (CVS 1810) (check-in: [88a4e400f9] user: drh branch: trunk, size: 58381)
2004-06-28
01:11
[d8ee92a9c1] part of check-in [fae7c6e004] Fix a bunch of harmless warnings. (CVS 1749) (check-in: [fae7c6e004] user: danielk1977 branch: trunk, size: 58349)
2004-06-23
12:35
[db0e1fdcf9] part of check-in [f31c84a64f] Fix a bug in the previous checkin. (CVS 1677) (check-in: [f31c84a64f] user: danielk1977 branch: trunk, size: 58337)
12:15
[31e48dd1d9] part of check-in [db6bab5748] Add some tests for user functions that prefer various text encodings. (CVS 1676) (check-in: [db6bab5748] user: danielk1977 branch: trunk, size: 58360)
2004-06-21
09:06
[a0372aa8d2] part of check-in [bbd3e93348] Add the OP_Concat8 opcode, similar in concept to OP_String8. (CVS 1648) (check-in: [bbd3e93348] user: danielk1977 branch: trunk, size: 58337)
07:36
[c5c875be66] part of check-in [ee9dffd986] Update sqlite3_column_decltype() to return NULL as the declartion type for an expression that is not a column reference. (CVS 1646) (check-in: [ee9dffd986] user: danielk1977 branch: trunk, size: 58336)
2004-06-19
14:49
[9ae0e55a23] part of check-in [99d0436e0e] Omit the sqlite3VdbeCode() routine. Use sqlite3NameFromToken() more to reduce the amount of code. (CVS 1639) (check-in: [99d0436e0e] user: drh branch: trunk, size: 59329)
2004-06-17
07:53
[01cdf6a632] part of check-in [a71a9ff114] Remove redundant opcodes OP_MakeKey and OP_MakeIdxKey. (CVS 1612) (check-in: [a71a9ff114] user: danielk1977 branch: trunk, size: 59672)
2004-06-16
12:00
[657ca11f63] part of check-in [6001c5e1ce] Trivial modifications to prevent compiler warnings. (CVS 1606) (check-in: [6001c5e1ce] user: danielk1977 branch: trunk, size: 59663)
2004-06-15
16:51
[7c19fbc449] part of check-in [07b90f3690] Assorted memory leak fixes. (CVS 1600) (check-in: [07b90f3690] user: danielk1977 branch: trunk, size: 59655)
2004-06-12
09:25
[f9eafe3482] part of check-in [5903f53828] (1) Modifications to the user-function interface and (2) Internal changes to automatically created indices. (CVS 1575) (check-in: [5903f53828] user: danielk1977 branch: trunk, size: 59666)
00:42
[03ab3de389] part of check-in [9b84f2f488] Use the SQLITE_UTF* symbols instead of the old internal TEXT_Utf* symbols. (CVS 1572) (check-in: [9b84f2f488] user: danielk1977 branch: trunk, size: 58871)
2004-06-11
10:51
[97f3dd76c7] part of check-in [66835ee670] Fix various collation sequence issues. (CVS 1568) (check-in: [66835ee670] user: danielk1977 branch: trunk, size: 58865)
2004-06-10
10:50
[34e63e960a] part of check-in [edf069b9f4] Add the sqlite3_collation_needed() API and fix some error handling cases involving unknown collation sequences. (CVS 1562) (check-in: [edf069b9f4] user: danielk1977 branch: trunk, size: 58541)
2004-06-09
09:55
[3aea8faac1] part of check-in [c634e71f19] Some progress on user-defined collation sequences. (CVS 1544) (check-in: [c634e71f19] user: danielk1977 branch: trunk, size: 58317)
2004-06-06
12:41
[2b18dd4ed1] part of check-in [30b81507fc] Performance improvements for LIKE. It is still too slow though. (CVS 1535) (check-in: [30b81507fc] user: danielk1977 branch: trunk, size: 55608)
09:44
[f05a559467] part of check-in [92337d8f79] Enhance user function API to support association of meta-data with constant arguments and the specification of text encoding preference. The LIKE operator takes advantage of both. (CVS 1534) (check-in: [92337d8f79] user: danielk1977 branch: trunk, size: 55576)
2004-06-05
10:22
[c55461f27a] part of check-in [c2899b4373] Add the sqlite3_set_auxdata() and sqlite3_get_auxdata() APIs. (CVS 1532) (check-in: [c2899b4373] user: danielk1977 branch: trunk, size: 54241)
2004-05-30
01:38
[5145de7d25] part of check-in [fcd84ebabc] Do not include the P3 parameter on OP_Integer opcodes if the integer will fit in 32 bits. The P3 conversion is slow. (CVS 1494) (check-in: [fcd84ebabc] user: drh branch: trunk, size: 54133)
2004-05-29
11:24
[416e8970fd] 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: 54096)
2004-05-28
08:21
[1f7b853b09] part of check-in [ebd564d10b] Tables and indices use the same record format. (CVS 1481) (check-in: [ebd564d10b] user: drh branch: trunk, size: 54083)
2004-05-27
09:28
[3f43cae2c8] part of check-in [67a140cf78] Various bugfixes. 68 Test cases still fail. (CVS 1471) (check-in: [67a140cf78] user: danielk1977 branch: trunk, size: 54028)
03:12
[70d6c955c0] part of check-in [f33d15d95f] Fixes to the MEM changes. The library now links. (CVS 1470) (check-in: [f33d15d95f] user: drh branch: trunk, size: 53790)
2004-05-26
16:54
[90573f18f9] part of check-in [36e0316259] Remove dataType and includeTypes flags from function definitions. Added new P3_FUNCDEF type for P3 arguments on opcodes. Fixes to several user functions. 28 tests fail now. (CVS 1464) (check-in: [36e0316259] user: drh branch: trunk, size: 53998)
2004-05-21
13:39
[5b283e68bd] part of check-in [5524075ec0] Remove the OP_SetFound opcode and its cousins. (CVS 1430) (check-in: [5524075ec0] user: drh branch: trunk, size: 54447)
02:14
[fb92ef7e71] part of check-in [3b55095e03] Most sorting problems are fixed. Dead code has been removed. 3 test failures remain but will be fixed by the new function API once it gets implemented. (CVS 1425) (check-in: [3b55095e03] user: drh branch: trunk, size: 54929)
2004-05-20
22:16
[cba2b8c089] 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: 54887)
13:54
[22ee818d11] part of check-in [5c1e47a252] sqlite3MemCompare now takes a CollSeq* argument. (CVS 1419) (check-in: [5c1e47a252] user: drh branch: trunk, size: 56773)
2004-05-19
20:41
[34fceec0ae] part of check-in [34f03ba6a9] Correctly handle 64-bit integers in SQL statements. (CVS 1408) (check-in: [34f03ba6a9] user: drh branch: trunk, size: 56427)
2004-05-18
10:06
[de3d86e98d] part of check-in [ad4a964158] Fix many problems with manifest types and column affinity. Most things are working now. (CVS 1393) (check-in: [ad4a964158] user: danielk1977 branch: trunk, size: 56421)
2004-05-17
10:48
[d39afb30c7] 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: 56377)
2004-05-16
22:55
[05fbd5df27] part of check-in [9321e74263] Fix a bug meant real numbers with a negative sign were being stored as strings by default (instead of IEEE floats). (CVS 1388) (check-in: [9321e74263] user: danielk1977 branch: trunk, size: 53027)
11:57
[28095b5617] part of check-in [5cba8a510c] Fix two bugs that were causing lots of tests to fail. (CVS 1386) (check-in: [5cba8a510c] user: danielk1977 branch: trunk, size: 53029)
11:15
[d2d1ddc0ee] 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: 53004)
2004-05-11
07:11
[a3aed7057b] part of check-in [dfde112116] Remove code dealing with old file formats. (CVS 1354) (check-in: [dfde112116] user: danielk1977 branch: trunk, size: 51366)
2004-05-10
10:34
[7667e214b1] part of check-in [ba2ba24263] Change the names of external symbols from sqlite_XXX to sqlite3_XXX. (CVS 1337) (check-in: [ba2ba24263] user: danielk1977 branch: trunk, size: 51456)
2004-05-08
08:23
[efd9daf504] 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: 51454)
2004-04-23
17:04
[8c3f5603c3] part of check-in [7ace576215] Get the temp_store and default_temp_store pragmas working. Update the documentation. Also fix a malloc problem that popped up during the regression testing. (CVS 1302) (check-in: [7ace576215] user: drh branch: trunk, size: 51173)
2004-03-17
23:32
[938e4d341c] part of check-in [fc7a7975b0] Fix a VDBE stack overflow that occurs when the left-hand side of an IN expression is NULL and the result is stored on the stack rather than used to control a jump. Ticket #668. (CVS 1299) (check-in: [fc7a7975b0] user: drh branch: trunk, size: 51005)
2004-02-25
13:47
[95ea5d47d1] part of check-in [adbe31adf1] Min() and max() functions honor the distinction between TEXT and NUMERIC data. Ticket #623. typeof() is now a user function. Some tests are now failing due to ticket #521. (CVS 1272) (check-in: [adbe31adf1] user: drh branch: trunk, size: 51005)
2004-02-22
20:05
[61b71ce2e9] part of check-in [51f1e8f753] Use sqliteVdbeOp3 instead of sqliteVdbeChangeP3 where applicable. (CVS 1266) (check-in: [51f1e8f753] user: drh branch: trunk, size: 50590)
18:40
[86eaf80e4d] part of check-in [69aac043af] Use sqliteErrorMsg instead of sqliteSetString whereever practical. (CVS 1264) (check-in: [69aac043af] user: drh branch: trunk, size: 50677)
2004-02-21
19:17
[7bb3a1ffbf] part of check-in [7d5ede5b6e] Fix a long-standing memory leak that the new last_insert_rowid() tests brought to light. (CVS 1259) (check-in: [7d5ede5b6e] user: drh branch: trunk, size: 50808)
2004-02-11
10:35
[fdd57e18cf] part of check-in [1673bf7c7b] Fix an uninitialized variable in expr.c. Ticket #604. (CVS 1225) (check-in: [1673bf7c7b] user: drh branch: trunk, size: 50800)
2004-01-25
22:44
[3928893e8a] part of check-in [d3648034b4] Modularize the column name resolution code so that it is smaller, faster, and ready for some enhancements that will fix long-standing name resolutions problems. (CVS 1198) (check-in: [d3648034b4] user: drh branch: trunk, size: 50795)
2004-01-16
16:42
[e6a05bec1c] part of check-in [92e7f78057] More compaction of expr.c. (CVS 1184) (check-in: [92e7f78057] user: drh branch: trunk, size: 49507)
15:55
[5ecbce47b7] part of check-in [d292ba5148] Incremental code compaction in expr.c. Now about 4% smaller. Lots more work to do. (CVS 1183) (check-in: [d292ba5148] user: drh branch: trunk, size: 50379)
2004-01-14
03:12
[866a6d7aac] part of check-in [ea1ad4653e] Remove an incomplete comment that somehow snuck into the sources. (CVS 1172) (check-in: [ea1ad4653e] user: drh branch: trunk, size: 50200)
2004-01-06
01:13
[abb40922fa] part of check-in [b8381d9fe9] Fix problem in the code generator were incorrect code was being created if the SQL source contained a negative integer that was too large to fit in a 32-bit signed integer variable. Ticket #552. (CVS 1157) (check-in: [b8381d9fe9] user: drh branch: trunk, size: 50211)
2003-12-10
03:13
[a14401a54e] part of check-in [d654995440] Fix a bulk-memory initialization problem in the expression list logic. (CVS 1130) (check-in: [d654995440] user: drh branch: trunk, size: 50096)
2003-09-23
10:25
[d4d8eca636] part of check-in [4bb256ee3e] A failed malloc() could have resulted in a segfault. Fixed by this check-in. (CVS 1102) (check-in: [4bb256ee3e] user: drh branch: trunk, size: 50073)
2003-09-06
22:18
[8acdc2f7b2] part of check-in [990bb11898] Update Makefile.in for the new vdbeaux.c file. Remove the experimental "sqlite_instantiate()" routine and replace it with "sqlite_bind()" which is more like ODBC and JDBC. (CVS 1095) (check-in: [990bb11898] user: drh branch: trunk, size: 50059)
01:10
[0c10a35c15] part of check-in [912f47c72d] The beginnings of changes to support pre-compiled SQL. Mostly untested, though all regression tests to pass. (CVS 1093) (check-in: [912f47c72d] user: drh branch: trunk, size: 50069)
2003-07-30
12:34
[03c321ac66] part of check-in [da62732554] The {quote: SrcList} object was not being expanded correctly by a call to sqliteSrcListAppend() if the {quote: SrcList} had previously been duplicated by a call to sqliteSrcListDup(). Ticket #416. This check-in fixes that problem by keeping a separate nAlloc field on {quote: SrcList}. A similar change is made to {quote: IdList} and {quote: ExprList} to avoid future problems. (CVS 1067) (check-in: [da62732554] user: drh branch: trunk, size: 49914)
2003-07-20
01:16
[3c07e7b537] part of check-in [543479e3ae] Fix the LIMIT clause so that it applies to the entire query in a compound query. Prior to this change LIMITs on compound queries did not work at all. Ticket #393. (CVS 1058) (check-in: [543479e3ae] user: drh branch: trunk, size: 49817)
2003-05-31
16:21
[ebdb0f3ee0] part of check-in [7202d4f1a8] Tighter binding of views, triggers, and indices to their respective databases. Ticket #323. Much more testing needs to be done to the sqliteFix...() routines in attach.c. (CVS 990) (check-in: [7202d4f1a8] user: drh branch: trunk, size: 49774)
2003-05-02
14:32
[a666ef5220] 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: 49714)
2003-04-22
20:30
[46e2bb93ab] part of check-in [c675a55041] Update the authorizer API so that it reports the database that table and indices belong to and so that it reports when actions are taken in response to a trigger. (CVS 928) (check-in: [c675a55041] user: drh branch: trunk, size: 49683)
2003-04-19
17:27
[3c0ff6b7b3] part of check-in [767f1af236] Modify the optimizer so that it does not assume that functions are constant. (CVS 920) (check-in: [767f1af236] user: drh branch: trunk, size: 49294)
2003-04-15
19:22
[942f535c89] part of check-in [0b996959b8] Get triggers working on tables with INTEGER PRIMARY KEYs. Ticket #291. This may also fix #159. Still need to add tests so both bugs remain open for the time being. (CVS 908) (check-in: [0b996959b8] user: drh branch: trunk, size: 49254)
2003-03-31
02:12
[b8daee83f8] part of check-in [1d3fc97721] Add the sqliteErrorMsg() function and use it to generate error message text during parsing and code generation. This simplifies the code somewhat and makes it easier to handle names with a database prefix. (CVS 891) (check-in: [1d3fc97721] user: drh branch: trunk, size: 49312)
2003-03-27
12:51
[eae205a27e] 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: 49675)
2003-03-20
01:16
[8af430cdbc] part of check-in [a5d8fc95ee] Record the database name in addition to the table name for DELETE, INSERT, and UPDATE statements. (CVS 879) (check-in: [a5d8fc95ee] user: drh branch: trunk, size: 48981)
2003-01-31
17:16
[bd690b3a61] part of check-in [187d9c4058] Allow double-quoted strings as string constants in the IN operator. As a side-efffect, allow the GROUP BY clause to refer to columns by their integer column number. Ticket #237. (CVS 856) (check-in: [187d9c4058] user: drh branch: trunk, size: 49002)
2003-01-29
18:46
[359ae28321] part of check-in [ccc82f1ab4] Better error messages on constraint violations. Additional tests and bug fixes for the callback-free API. (CVS 854) (check-in: [ccc82f1ab4] user: drh branch: trunk, size: 49036)
2003-01-18
20:11
[382839b92c] part of check-in [71cc292dce] Fix datatype reporting and collating sequence selection so that it works correctly on views and with the UNION, EXCEPT, and INTERCEPT operators. (CVS 839) (check-in: [71cc292dce] user: drh branch: trunk, size: 49037)
2003-01-14
02:49
[19f315a6c2] part of check-in [cc2ae781ac] More tests of the sqlite_set_authorizer() API together with fixes for bugs that the new tests uncovered. (CVS 832) (check-in: [cc2ae781ac] user: drh branch: trunk, size: 49034)
2003-01-12
18:02
[d8b319f253] part of check-in [52d5007f64] Initial check-in of the code for the new sqlite_set_authorizer() API function. The code is mostly untested at this point. (CVS 827) (check-in: [52d5007f64] user: drh branch: trunk, size: 49076)
2002-10-31
00:09
[9427b4d1d0] part of check-in [8ad018944c] Fix an assert that might fail if malloc() fails. (CVS 774) (check-in: [8ad018944c] user: drh branch: trunk, size: 48884)
2002-10-22
23:38
[108017b986] part of check-in [3b68aa25c4] Correctly handle column names and string constants in parentheses. Fix for ticket #179. (CVS 770) (check-in: [3b68aa25c4] user: drh branch: trunk, size: 48847)
2002-09-08
00:04
[e1327eb020] part of check-in [eb54d455b0] Modify the build process so that the VDBE opcode numbers and the table that contains the opcode names are both automatically generated. This makes it much easier to create new VDBE opcodes. (CVS 746) (check-in: [eb54d455b0] user: drh branch: trunk, size: 49561)
2002-08-24
18:24
[ee027b908a] part of check-in [22d8726e61] Change the way token memory is allocated in an effort to fix ticket #136. There is now a memory leak when using views of views. (CVS 725) (check-in: [22d8726e61] user: drh branch: trunk, size: 49311)
2002-07-18
00:34
[8a6b669ba5] part of check-in [20d152fcdd] Fix for ticket #107: Fix a design defect in indices that was causing queries to fail when using an index on a column containing an empty string. This fix is an incompatible file-format change. (CVS 681) (check-in: [20d152fcdd] user: drh branch: trunk, size: 48533)
2002-07-16
02:05
[5c3b241a68] part of check-in [93710f7ed7] Fix for ticket #100: Correctly handle ON and USING clauses of JOINs within a VIEW. (CVS 679) (check-in: [93710f7ed7] user: drh branch: trunk, size: 48533)
2002-07-02
13:05
[4b25ee5e65] part of check-in [85793a4f03] Fix for ticket #92: Correct the sqliteExprCompare() function so that is takes into account the iTable and iColumn fields of the Expr structure. Otherwise, "min(a)" and "min(b)" will compare equal to each other in views. (CVS 658) (check-in: [85793a4f03] user: drh branch: trunk, size: 48239)
2002-06-29
02:20
[ecd8267f70] part of check-in [91c0db66c8] Add a few more tests and fix a few bugs that the tests uncovered. (CVS 652) (check-in: [91c0db66c8] user: drh branch: trunk, size: 48170)
2002-06-28
12:18
[c5b8ee4d51] 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: 48177)
2002-06-26
02:45
[d49737db0c] part of check-in [bdb006b809] The datatype of the i-th column in the result set is given by the azColName(argc+1+i) parameter to the callback. (CVS 647) (check-in: [bdb006b809] user: drh branch: trunk, size: 48294)
2002-06-20
11:36
[cb50a72c49] part of check-in [cbbc858d97] This patch contains the beginnings of the data-typing infrastructure. The new build-in TypeOf() function is added. New opcodes for doing pure text comparisons are added. Most changes are disabled pending the 2.6.0 release. (CVS 632) (check-in: [cbbc858d97] user: drh branch: trunk, size: 47890)
2002-06-17
17:07
[ec0689af4e] part of check-in [05783a9db5] Add preliminary logic for the eventual move to having separate TEXT and NUMTEXT datatypes. Also change the version number to 2.5.0 in preparation for an interim release. (CVS 625) (check-in: [05783a9db5] user: drh branch: trunk, size: 43989)
2002-06-11
02:25
[2dcfcd0b03] part of check-in [d4a2fb1006] Add RAISE() function, which allows more advanced flow-control in trigger programs (ticket #55) (CVS 614) (check-in: [d4a2fb1006] user: danielk1977 branch: trunk, size: 43965)
2002-06-09
01:16
[cd2e3311c8] part of check-in [ad9624798e] Fix for ticket #65: If an integer value is too big to be represented as a 32-bit integer, then treat it as a string. (CVS 611) (check-in: [ad9624798e] user: drh branch: trunk, size: 43220)
2002-06-02
18:22
[8ce9c22655] part of check-in [637ee587b5] Fix a compiler warning. (CVS 604) (check-in: [637ee587b5] user: drh branch: trunk, size: 42850)
18:19
[4c1b3b3dd0] part of check-in [6fdcee3c99] Add the ability to parse FOREIGN KEYs. Foreign keys are still ignored, but at least they now do not cause a syntax error. (CVS 603) (check-in: [6fdcee3c99] user: drh branch: trunk, size: 42841)
16:09
[4ee07b5361] part of check-in [7acbf84b49] Enhance the ORDER BY clause so that an integer term means to sort by the corresponding column. (CVS 602) (check-in: [7acbf84b49] user: drh branch: trunk, size: 42823)
2002-05-31
15:51
[6bb74762c3] part of check-in [da61aa1d23] Refinements to NULL processing: NULLs are indistinct for DISTINCT and UNION. Multiplying a NULL by zero yields zero. In a CASE expression, a NULL comparison is considered false, not NULL. With these changes, NULLs in SQLite now work the same as in PostgreSQL and in Oracle. (CVS 600) (check-in: [da61aa1d23] user: drh branch: trunk, size: 42028)
2002-05-30
02:35
[86f0c6f26f] part of check-in [4debc8db92] Bug fix: bad code was generated for when the first operand of a CASE was NULL. (CVS 598) (check-in: [4debc8db92] user: drh branch: trunk, size: 42621)
2002-05-26
20:54
[1a7a2f5f2b] 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: 42555)
2002-05-24
02:04
[818a702ba9] 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: 41366)
2002-05-23
02:09
[535c2468cf] part of check-in [01ad352c3c] Fix some places where a malloc() failure would lead to a segfault. (CVS 580) (check-in: [01ad352c3c] user: drh branch: trunk, size: 40837)
2002-05-21
13:43
[01e1e39539] part of check-in [55e7d65496] Double-quoted strings resolve to column names if possible. Single-quoted strings continue to be interpreted as string literals. (CVS 576) (check-in: [55e7d65496] user: drh branch: trunk, size: 40779)
2002-05-19
23:43
[2c7535ba01] 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: 40222)
2002-05-15
08:30
[6888e37e4e] part of check-in [794bf67b6b] Added FOR EACH ROW triggers functionality (CVS 562) (check-in: [794bf67b6b] user: danielk1977 branch: trunk, size: 40144)
2002-04-20
14:24
[cf8d2ea17e] part of check-in [51572bf717] Fix for ticket #1: Implement the GLOB and LIKE operators as functions that can be overridden. This way, a developer can change the LIKE operator to be case sensitive, for example. (CVS 537) (check-in: [51572bf717] user: drh branch: trunk, size: 39344)
2002-03-24
13:13
[e7a1e22bc2] part of check-in [836b59d057] Added support for CASE expressions - patches from Dan Kennedy. (CVS 437) (check-in: [836b59d057] user: drh branch: trunk, size: 39885)
2002-03-13
18:54
[0752b45ac5] part of check-in [c0e3f1c592] Fix bug in anonymous subquery in a join. Parser requires a semicolon or end-of-input before executing. (CVS 429) (check-in: [c0e3f1c592] user: drh branch: trunk, size: 38424)
2002-03-06
03:08
[d2adad05dc] part of check-in [b7a7dae919] Optimizations to the processing of integer comparisons. (CVS 420) (check-in: [b7a7dae919] user: drh branch: trunk, size: 38413)
2002-03-03
18:59
[e12ca55053] part of check-in [6121e5ab93] VIEWs are bound to tables when they are used, not when they are first entered. This works around the problem of what to do if a table is deleted that a view refers to. (CVS 415) (check-in: [6121e5ab93] user: drh branch: trunk, size: 38139)
03:42
[178248fd48] part of check-in [dfe431c9b7] Fix a memory leak in expression processing. (CVS 414) (check-in: [dfe431c9b7] user: drh branch: trunk, size: 38075)
2002-03-02
17:04
[17e3db6f11] 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: 38090)
2002-02-28
03:04
[b70bedaffd] part of check-in [b00cf110b1] The new function code passes regression tests. (CVS 403) (check-in: [b00cf110b1] user: drh branch: trunk, size: 39083)
01:46
[173965f4d1] part of check-in [6af10cc53a] Fix the coredump. There are still problems in the test suite though. (CVS 402) (check-in: [6af10cc53a] user: drh branch: trunk, size: 39048)
00:41
[32a2b5826b] part of check-in [50797fee50] Completely remove the old SQL function system and replace it with the new user functions. The code currently compiles but it coredumps on the test suite. Do not use in its present state. (CVS 400) (check-in: [50797fee50] user: drh branch: trunk, size: 39016)
2002-02-27
19:00
[ea2209a6bd] part of check-in [633951f0fa] Revise the API for user-defined functions. (CVS 398) (check-in: [633951f0fa] user: drh branch: trunk, size: 43684)
01:53
[92ff4a2d87] part of check-in [085b0d671a] The user-defined function routines failed to detect a malloc() failure. (CVS 397) (check-in: [085b0d671a] user: drh branch: trunk, size: 43709)
01:47
[4716119eea] part of check-in [668ef6380e] Bug fixes in the VIEW implementation. (CVS 396) (check-in: [668ef6380e] user: drh branch: trunk, size: 43686)
2002-02-26
23:55
[ad07b7932a] part of check-in [63b87f2ea6] Comment changes only. (CVS 395) (check-in: [63b87f2ea6] user: drh branch: trunk, size: 40954)
2002-02-24
03:25
[5ed59aed47] part of check-in [1e037eb303] Code for user-defined aggregates added. Legacy tests all pass but there has been no testing of the new user-defined aggregate code. (CVS 392) (check-in: [1e037eb303] user: drh branch: trunk, size: 40950)
2002-02-23
23:45
[4f9db24c4e] part of check-in [c490a1ff95] Added support for user-defined normal functions. Support for user-defined aggregates is pending. (CVS 390) (check-in: [c490a1ff95] user: drh branch: trunk, size: 40707)
02:32
[6b641c4394] 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: 37689)
2002-02-14
21:42
[7aff65ea07] part of check-in [e17a858c9e] All identifiers to be quoted in square brackets, for compatibility with MS-Access. (CVS 370) (check-in: [e17a858c9e] user: drh branch: trunk, size: 32575)
2002-01-30
04:32
[a2a87dbd41] part of check-in [9bbddb8e01] Better testing of the ON CONFLICT logic. (CVS 358) (check-in: [9bbddb8e01] user: drh branch: trunk, size: 32551)
2002-01-22
14:11
[4cae8bf44d] part of check-in [035984a5b0] Constant ORDER BY or GROUP BY expressions are an error. (CVS 352) (check-in: [035984a5b0] user: drh branch: trunk, size: 32693)
03:13
[3c4359f9a0] part of check-in [3684beab0f] The right-hand side of an AS in a SELECT can be used within expressions of the WHERE, ORDER BY, GROUP BY, and/or HAVING clauses. (CVS 350) (check-in: [3684beab0f] user: drh branch: trunk, size: 32510)
2002-01-06
17:07
[8169261ac5] 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: 31032)
2002-01-04
03:09
[fcdb7416e5] 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: 30628)
2001-12-21
14:30
[ef1c365c5d] part of check-in [236a54d289] Added support for the INTEGER PRIMARY KEY column type. (CVS 333) (check-in: [236a54d289] user: drh branch: trunk, size: 30628)
2001-11-24
00:31
[6b25c5bb1e] part of check-in [fc2aae0457] Fix comparison functions so that they are consistent with the order of elements in indices. Fix the handling of large integers. (CVS 317) (check-in: [fc2aae0457] user: drh branch: trunk, size: 30266)
2001-11-08
00:45
[53515a7ba7] 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: 30361)
2001-10-22
02:58
[2dd0252ced] part of check-in [f8328a5f11] More changes for 2.0.7. (CVS 293) (check-in: [f8328a5f11] user: drh branch: trunk, size: 31025)
2001-10-13
02:59
[c1381b8229] part of check-in [75e90cf09b] 2.0.3 (CVS 287) (check-in: [75e90cf09b] user: drh branch: trunk, size: 31031)
01:06
[5aa5db4d42] 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: 29795)
2001-10-06
16:33
[2f68829d98] part of check-in [b63b3f3684] Adding table column query capability to support ODBC. (CVS 278) (check-in: [b63b3f3684] user: drh branch: trunk, size: 30055)
2001-09-16
00:13
[343a515a4a] part of check-in [4e926efe2b] Disclaimed copyright. Preparing for release 2.0. (CVS 250) (check-in: [4e926efe2b] user: drh branch: trunk, size: 30053)
2001-09-14
03:24
[bcd91d0487] part of check-in [e7b65e37fd] All tests now pass. But there are still issues. For example, inserts are way too slow. And additional tests are needed for new features. (CVS 243) (check-in: [e7b65e37fd] user: drh branch: trunk, size: 30598)
2001-09-13
14:46
[83b6a7ed4c] 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: 30600)
2001-07-23
14:33
[f64760004a] part of check-in [029e3a3a5d] Add ability to quote table and column names in expression. (CVS 235) (check-in: [029e3a3a5d] user: drh branch: trunk, size: 30594)
2001-04-11
14:28
[c4c24c3af1] part of check-in [86b30cd097] better handling of out-of-memory errors (CVS 207) (check-in: [86b30cd097] user: drh branch: trunk, size: 30537)
2001-04-04
21:22
[745383609b] part of check-in [490d08a8c1] Clean up some compiler warnings (CVS 200) (check-in: [490d08a8c1] user: drh branch: trunk, size: 30339)
11:48
[cdf54a3b8a] part of check-in [35a8feed0d] Added transaction support (CVS 196) (check-in: [35a8feed0d] user: drh branch: trunk, size: 30402)
2001-01-15
22:51
[49bc261fdc] part of check-in [c6ffb7ec6a] continued progress toward version 2.0 (CVS 177) (check-in: [c6ffb7ec6a] user: drh branch: trunk, size: 29558)
2000-11-28
20:47
[7d7646afd5] part of check-in [5518e012bf] Comment changes only (CVS 166) (check-in: [5518e012bf] user: drh branch: trunk, size: 29555)
2000-08-28
15:51
[e8e350d7ba] part of check-in [0eef538f3d] Added length() and substr() functions (CVS 143) (check-in: [0eef538f3d] user: drh branch: trunk, size: 29553)
2000-06-21
13:59
[2fa63f0867] part of check-in [e1bf96a467] :-) (CVS 104) (check-in: [e1bf96a467] user: drh branch: trunk, size: 28672)
2000-06-17
13:12
[88ff9ea12a] part of check-in [6ed35a1d47] :-) (CVS 101) (check-in: [6ed35a1d47] user: drh branch: trunk, size: 28639)
2000-06-16
20:51
[a6797a4bd0] part of check-in [1d4fe5599e] :-) (CVS 100) (check-in: [1d4fe5599e] user: drh branch: trunk, size: 28578)
2000-06-11
23:50
[81512e0ae5] part of check-in [0f93c27cdd] added the fcnt() function for testing (CVS 92) (check-in: [0f93c27cdd] user: drh branch: trunk, size: 28399)
2000-06-08
15:10
[5790665132] part of check-in [61c381e7e6] :-) (CVS 81) (check-in: [61c381e7e6] user: drh branch: trunk, size: 27746)
13:36
[8c79de4d19] part of check-in [bf98cf82a7] remove all memory leaks (CVS 80) (check-in: [bf98cf82a7] user: drh branch: trunk, size: 27692)
11:25
[ab419c2f09] part of check-in [305b043f4f] :-) (CVS 79) (check-in: [305b043f4f] user: drh branch: trunk, size: 27262)
2000-06-07
23:51
[baa8a4229b] part of check-in [2ffeb8509c] :-) (CVS 74) (check-in: [2ffeb8509c] user: drh branch: trunk, size: 27266)
2000-06-06
17:27
[d350fe393e] part of check-in [db88a0c2d4] GROUP BY and HAVING installed (CVS 58) (check-in: [db88a0c2d4] user: drh branch: trunk, size: 27344)
13:54
[1bedf5f426] part of check-in [54d198189b] added IN and BETWEEN operators (CVS 57) (check-in: [54d198189b] user: drh branch: trunk, size: 22852)
03:31
[278ff688ac] part of check-in [b52dd82fe3] :-) (CVS 56) (check-in: [b52dd82fe3] user: drh branch: trunk, size: 21737)
01:50
[b309517f59] part of check-in [bd8b2645cc] :-) (CVS 55) (check-in: [bd8b2645cc] user: drh branch: trunk, size: 21544)
2000-06-05
18:54
[7e87558f88] part of check-in [c02268bdf4] :-) (CVS 52) (check-in: [c02268bdf4] user: drh branch: trunk, size: 16257)
2000-06-04
12:58
[793c15de4c] part of check-in [6ea5cebf05] rework the VDBE engine. NULL is now distinct from "" (CVS 49) (check-in: [6ea5cebf05] user: drh branch: trunk, size: 15751)
2000-06-03
19:19
[6df33b3a42] part of check-in [729d6586b8] :-) (CVS 47) (check-in: [729d6586b8] user: drh branch: trunk, size: 15754)
18:06
[baab49f0db] part of check-in [27c0678623] added default values (CVS 46) (check-in: [27c0678623] user: drh branch: trunk, size: 15753)
2000-06-02
13:27
[fb0972a54c] part of check-in [2b55f9b790] :-) (CVS 37) (check-in: [2b55f9b790] user: drh branch: trunk, size: 15743)
2000-05-31
15:34
Added: [91970700e3] part of check-in [dee7a8be88] added aggregate functions like count(*) (CVS 21) (check-in: [dee7a8be88] user: drh branch: trunk, size: 15784)