Commit Graph

79 Commits

Author SHA1 Message Date
drh 0c36fca004 Fix a post-OOM crash in updateRangeAffinityStr(). Add several ALWAYS()
macros on unreachable branches.

FossilOrigin-Name: 87d40195ae5cc2abd9bae45073a615db81263285
2016-08-26 18:17:08 +00:00
dan b7ca2177d7 Fix a problem with affinity changes and vector range comparisons.
FossilOrigin-Name: b34413ac7e34369b4420e57b0132249dca68a7b0
2016-08-26 17:54:46 +00:00
dan 7887d7f24d Fix a buffer overrun in the code for handling IN(...) operators when the LHS of the operator contains indexed columns or expressions.
FossilOrigin-Name: f41a0391b732a8c4ad188163f34a0f4a22237bb5
2016-08-24 12:22:17 +00:00
drh ac6b47d164 The previous OOM fix was bad. Back it out and replace it with a better one.
FossilOrigin-Name: 1e3bc3698a4b779e6af8e3c727929c4dbddf3edb
2016-08-24 00:51:48 +00:00
drh fc7f27b9d2 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.

FossilOrigin-Name: d8feea7dcde83179bff303072426561cfe825e58
2016-08-20 00:07:01 +00:00
drh 4602b8e89d Fix an obsolete comment on codeEqualityTerm(). No changes to code.
FossilOrigin-Name: d07be5afb0a915769382dfd815403f8832cb3eec
2016-08-19 18:28:00 +00:00
drh 03181c8c27 Fix a SQL NULL handling bug in the vector IN operator code generation.
FossilOrigin-Name: 936146b12e27784f15a68fe65732c6d92c3a12f3
2016-08-18 19:04:57 +00:00
dan 6256c1c242 Fix some cases involving row values and virtual tables.
FossilOrigin-Name: 156a41f30a0afd9a70e6c26470dcc468a11bd402
2016-08-08 20:15:41 +00:00
dan 1d9bc9b7a0 Fix the EXPLAIN QUERY PLAN output for row value range constaints that use an index.
FossilOrigin-Name: bb60651163553c5e46bf7b2805490570cea647b8
2016-08-08 18:42:08 +00:00
dan f9b2e05c75 Fix SQLITE_OMIT_SUBQUERY builds.
FossilOrigin-Name: 339f85f414a484e44d2502d1ff7281caf9b7c838
2016-08-02 17:45:00 +00:00
dan 553168c706 Fix a problem with vector range constraints involving the rowid column. And other issues.
FossilOrigin-Name: 3ef75d45ebcd8ede91596d69e55fe7d685008a60
2016-08-01 20:14:31 +00:00
dan 625015e0c9 Remove the EP_Vector expression flag.
FossilOrigin-Name: e9d9c6d46b46160fad6aa6e3441a65a09157515f
2016-07-30 16:39:28 +00:00
dan 19ff12dd76 Fix some issues with vector range constraints and the column cache. Also vector range constraints and rowid columns.
FossilOrigin-Name: 42607366bfc2dceb1013797a973b3b8df75dcb4d
2016-07-29 20:58:19 +00:00
dan 145b4ea519 Change the way "(a, b) = (SELECT *)" expressions are handled in where.c if there is an index on one of the columns only.
FossilOrigin-Name: 4dfebff2924f46284d5b9cda69175f79b29d6028
2016-07-29 18:12:12 +00:00
dan d9ed09d47b Merge latest trunk changes into this branch.
FossilOrigin-Name: d4f3d52c5a11fc7ad7e8cad76361edbcef13a12f
2016-07-26 18:15:35 +00:00
dan 8da209b169 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.
FossilOrigin-Name: 061b8006034f06a0311b4304c8b14d2c8b0153df
2016-07-26 18:06:08 +00:00
drh 426f4ab009 Make sure affinity is applied correctly on lower-bound range constraints
in the min() optimization.  Fix for ticket [a0bac8b3c3d1bb].

FossilOrigin-Name: b819bace9c2a0b0159122b26db96a8f50a6f0eac
2016-07-26 04:31:14 +00:00
dan ba00e30a3a 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).
FossilOrigin-Name: e2fd6f49b1b145bec09c581cc982b89429643ae9
2016-07-23 20:24:06 +00:00
mistachkin 709947a315 Merge comment typo fixes from trunk.
FossilOrigin-Name: 728c5aa436a5f55c86b019c415a2b71d1b0a8fd6
2016-07-10 19:35:45 +00:00
mistachkin e234cfd11f Fix typos in comments. No changes to code.
FossilOrigin-Name: 77c692a6704cd877ba35d0afb774ab9b46364d59
2016-07-10 19:35:10 +00:00
dan 71c57db099 Add some support for using row value constructors in certain parts of SQL expressions. There are many bugs on this branch.
FossilOrigin-Name: b2204215b231202aef7a218411cc2ddaecf28f35
2016-07-09 20:23:55 +00:00
dan 2b693d63e4 Allow LIKE operators that appear in a WHERE clause to be included in the cursor-hint for a cursor on the rhs of a LEFT JOIN.
FossilOrigin-Name: 7455d932f5079ffe40462a8c119fc22b8a9bcbcc
2016-06-20 17:22:06 +00:00
dan e6912fd819 Include WHERE terms in the cursor-hint passed to a cursor opened for the rhs of a LEFT JOIN iff we can be sure that those terms will not evaluate to true if the LEFT JOIN generates a row of NULLs.
FossilOrigin-Name: 998095aba01b75f685ed981b377e1dfe650d9bbf
2016-06-17 19:27:13 +00:00
dan b324cf756e If a table is on the rhs of a LEFT JOIN, include only terms from the joins ON(...) clause in the cursor-hint passed via OP_CursorHint.
FossilOrigin-Name: 2a2346b04235c6d0b7a8e64c92ee31018285c29f
2016-06-17 14:33:32 +00:00
drh eeb9565a3e Add a new OP_SeekRowid opcode, that combines the functions of OP_MustBeInt
and OP_NotExists.  This makes the code slightly smaller and faster.

FossilOrigin-Name: ffe80a1bfa014943a614fc6993c1749b9bfec4c1
2016-05-26 20:56:38 +00:00
drh ce943bc834 Clean up the WHERE_* macros used for the wctrlFlags parameter on the
sqlite3WhereBegin() interface, freeing up some bits to be used for other things.

FossilOrigin-Name: d01305841da94b2d47e32744802f69525bf590df
2016-05-19 18:56:33 +00:00
drh a72a15e45a Omit the unnecessary WHERE_REOPEN_IDX flag in the WHERE interface.
FossilOrigin-Name: da94a6e0ebacad8f235dcd653a25474327f26137
2016-05-09 19:58:56 +00:00
drh f09c48233a Simplification to the logic used to decide between OP_Seek and OP_NotExists.
Use OP_NotExists for both DELETE and UPDATE.

FossilOrigin-Name: 3a695263183303e3f64eb2320752d0fdef53eaf2
2016-05-06 20:23:12 +00:00
drh bcf6884afd In the WHERE generator, when building code for a DELETE operation, make sure
that seeks to the main table are not deferred.
This is a better fix for the [16c9801ceba49] bug than the previous.

FossilOrigin-Name: 150dd09ebd7b17234a79e1811a0fae8b0a7a40d5
2016-05-06 16:06:59 +00:00
drh 44aebff246 Improvements to the way the LIKE optimization is implemented, resulting in
slightly smaller and faster code that is easier to test.

FossilOrigin-Name: 54c63b329288729031f45b7778752552cd90e226
2016-05-02 10:25:42 +00:00
drh ba26faa33f Fix a problem in the code generator for joins on virtual tables where the
outer loop of the join uses the IN operator.

FossilOrigin-Name: 6c56b3a04778bc62ca50307ad838dd301cd91ac2
2016-04-09 18:04:28 +00:00
drh 599d576456 Add a NEVER() to the code generator. Change the parameter name "mExtra"
to "mPrereq" in the query planner, to more closely reflect its meaning.

FossilOrigin-Name: 721ae51e443647291f3a8f7f2128aa410fee2682
2016-03-08 01:11:51 +00:00
drh fb826b8c13 Changes so that some assert()s in the virtual table query planner are
correct even following an OOM error.

FossilOrigin-Name: 9805f6f85211dcb5a0ab3ceca204e6f2e48530ea
2016-03-08 00:39:58 +00:00
drh 237b2b7111 Avoid a NULL pointer dereference following an OOM while generating code
for IN operators on virtual tables.

FossilOrigin-Name: c924008692e35f1f5144830af08d6de051dd21dd
2016-03-07 19:08:27 +00:00
drh dbc49161c0 Allow the left-hand side of IN operators on virtual tables to have the
aConstraintUsage[].omit flag clear.

FossilOrigin-Name: 1622623cbbfc4325c53d731aba78ca9c382ec612
2016-03-02 03:28:07 +00:00
drh 0bf2ad6a18 Clearer presentation of the logic. No functional changes.
FossilOrigin-Name: a3dcf6db76cc09bdfedb1bbeba3b359b77762cbe
2016-02-22 21:19:54 +00:00
drh a6d2f8eb1e Avoid an unnecessary seek operation on some corner-case skip-scans.
FossilOrigin-Name: 38e837e605076124b73235e1fd832838d9545cb2
2016-02-22 20:52:26 +00:00
drh 4df86af329 Remove unnecessary sets of db->mallocFailed.
FossilOrigin-Name: b787165b25a240fd5b4a5c7f73b395f30213a1d7
2016-02-04 11:48:00 +00:00
dan cddb6ba03b Fix a problem causing the OR/covering-index optimization to be disabled if compile time parameter SQLITE_MAX_ATTACHED were set to greater than 30.
FossilOrigin-Name: a17712bf8d98dd485560f434a5350e6381cf1411
2016-02-01 13:58:56 +00:00
drh 784c1b93fb Merge the implementation of OP_IdxRowid and OP_Seek so that OP_Seek no longer
requires the rowid register and a separate OP_IdxRowid call.  Shorter and
faster prepared statements result.

FossilOrigin-Name: 9bec50a1e7796a6e038db9b1cc7cc1e7e350bf74
2016-01-30 16:59:56 +00:00
drh 5f4a686f8c Simplification and size reduction to the printf logic. Remove the bFlags
parameter from sqlite3VXPrintf() and sqlite3XPrintf().  Use sqlite3XPrintf()
instead of sqlite3_snprintf() for rendering P4 values in EXPLAIN output.

FossilOrigin-Name: 0bdb41c45aa1cc8e5c136aaa6605d54b401483bd
2016-01-30 12:50:25 +00:00
drh b17020265b Change the P4_INTARRAY so that always begins with a length integer. Print
the content of the INTARRAY on EXPLAIN output.

FossilOrigin-Name: 6c520d5726e80b4251338c43c405270d150ea81e
2016-01-30 00:45:18 +00:00
dan de892d9660 Experimental attempt to make better use of covering indexes within OR queries.
FossilOrigin-Name: a323ac3a9d42bd5cb38d724c7e1180584b91054c
2016-01-29 19:29:45 +00:00
drh 3b83f0cd8f Avoid unnecessary WHERE clause term tests when coding a join where one
of the tables contains a OR constraint.

FossilOrigin-Name: ab94603974a0ad5342e5aee27603162652e70492
2016-01-29 16:57:06 +00:00
drh 9b34abee30 Use sqlite3VdbeAddOp4() rather than a separate sqlite3VdbeChangeP4() call, for
a slightly smaller and faster binary.

FossilOrigin-Name: a4258cd4613c55acacb5c7b61faa3de7eb0759d2
2016-01-16 15:12:35 +00:00
drh 41d2e66ef3 Add the SQLITE_LIKE_DOESNT_MATCH_BLOBS compile-time option.
FossilOrigin-Name: 9e1d6d4c391ff90077f0d1cdeb567969fee9f747
2015-12-01 21:23:07 +00:00
drh 1167d32716 Make the internal sqlite3PExpr() interface responsive to the
TKFLG_DONTFOLD flag on the operator parameter.

FossilOrigin-Name: b10ab59fb8a696d11a269f3904e799c687246aea
2015-10-28 20:01:45 +00:00
drh 0030aaad67 Merge recent enhancements from trunk. Version now 3.9.1.
FossilOrigin-Name: 26fa091d68e89a0b6af61ba706d23a9f37e8025a
2015-10-16 20:53:57 +00:00
drh ce78bc6e7e 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.

FossilOrigin-Name: 871e091df651b2275a672c35ff938bd4b6db0d7f
2015-10-15 19:21:51 +00:00
drh 99f4647ef5 Merge in all the 3.9.0 updates from trunk.
FossilOrigin-Name: 29444149342fc6b1ea8cd34c2c8e1fcb06eaa7ed
2015-10-14 20:09:54 +00:00