drh
ed71298085
Futher bug fixes to the function that determines when a materialized view
...
can be reused.
FossilOrigin-Name: c64fe3a1695925693385d313e9ad2a1d8cb37ddaa8cc19920ae0978c91bc4c2c
2017-05-01 17:04:35 +00:00
drh
33543c237b
Minor bug fixes and performance enhancement.
...
FossilOrigin-Name: b2aae559581d05e4e8caaddfbd137cb275d582e82d58872c6f42e462dc859b1c
2017-05-01 16:37:20 +00:00
drh
e08e8d6b61
Initial implementation of an optimization that attempts to reuse the same
...
materialization of a view on a self-join of the view.
FossilOrigin-Name: 478c34b9a8b5127d13024e10307aa832f160b89720c46424dd17555bd36f590d
2017-05-01 15:15:41 +00:00
dan
ab31a8450b
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).
FossilOrigin-Name: 5375a3ce56f1d993b13b469fe33ec7679948f53940f62a15ddbaeb8aaa26a22c
2017-04-29 20:53:09 +00:00
drh
7555581fc1
Add a single testcase() macro to the subquery processing logic.
...
FossilOrigin-Name: 4e1df76e3d85922648e0e1cce73a266c3b1ed4511ace259ec0a01d7693af9e6f
2017-04-29 19:29:49 +00:00
drh
31d6fd5507
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.
FossilOrigin-Name: 3a5860d86fadcf924316707918bf283d26c53b1473e5e67f5cff59d18c2a7742
2017-04-14 19:03:10 +00:00
drh
399c7e21e4
An initial attempt to optimize VIEWs that occur as the right operand of a
...
LEFT JOIN. This particular check-in does not work correctly because it does
not deal with the case of columns in the VIEW that return non-NULL even when
all columns in the table of the VIEW are NULL because of the LEFT JOIN.
FossilOrigin-Name: 1838a59c8a1c151bd6fc822b0ffef661803cf0e4704c917e74a04567b81740b9
2017-04-14 17:18:45 +00:00
drh
46967de2ec
Simplify the interface to the subst() routines that are part of the
...
query flattener by collecting common parameters into the SubstContext object
and passing around a pointer to that object.
FossilOrigin-Name: e651074be28b2077b8a298f513e2e699ceca99164ace9869ea50873c0637fd2e
2017-04-14 12:39:37 +00:00
drh
7c88bcd473
Remove an incorrect ALWAYS().
...
FossilOrigin-Name: f956f6ae6b0863c70c4a2b227338d5c332e87f2ec6f3fcdf2233c14c5b78ca2b
2017-04-14 12:27:45 +00:00
drh
ef90a6b8dd
Very slight smaller and faster sqlite3SelectNew()
...
FossilOrigin-Name: 4143650c4ce32289d2301cdfc69bb10877246420f656bed122886f6803fc956a
2017-04-11 16:44:39 +00:00
drh
eac5fc0476
Improved comments. Fix a problem when an indexed expression is used in an
...
ORDER BY clause.
FossilOrigin-Name: c59eaf2b7cd2596733f349fc0fe979f71fd29bd73152a0c57066e0b69d5b7a4a
2017-04-11 01:01:27 +00:00
drh
aca19e19a8
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.
FossilOrigin-Name: a52ef2ad7c0e14b78b801f16a1f6ea8d8fa9ae5d7d810e18dd24c600b662a312
2017-04-07 19:41:31 +00:00
drh
dbd6a7dc06
Split off sqlite3DbFreeNN() from sqlite3DbFree() and use it in cases where
...
we know that the argument to be freed is never NULL.
FossilOrigin-Name: ad90e8bb5e47945607c8fb47b6ade8cfc52a9b684805cc40132629be0ecc14cc
2017-04-05 12:39:49 +00:00
drh
43606175e2
Combine the ExprList_item objects and the ExprList wrapper into a single
...
memory allocation, for improved performance and reduced footprint.
FossilOrigin-Name: 2b6560ad88b92820c383bcdc1e30c06f8b081ef7c6d9b1af71d2bb76c83e35cd
2017-04-05 11:32:13 +00:00
dan
c3becddb75
Fix a segfault that could occur following an OOM error in the
...
flattenSubquery() routine.
FossilOrigin-Name: c6dda3f752c184f441624c9993e77d5031063d79a0e177b6e25a9886514a742e
2017-03-13 14:30:40 +00:00
dan
067cd837fb
Avoid a performance problem when very large "VALUES(..), (..), (..)" terms are
...
used in queries.
FossilOrigin-Name: f5306ad6816cc377036685cdae227e762885229c
2017-02-03 19:16:39 +00:00
dan
f91c1318f4
Changes to allow some multi-row UPDATE statements to avoid the two-pass
...
approach.
FossilOrigin-Name: 46db23ccd116ce5b9d949f9293be8a2818411b46
2017-01-10 20:04:38 +00:00
drh
a67b5cb6b3
Avoid duplicate b-tree searches in the duplicate row detector used to
...
implement DISTINCT.
FossilOrigin-Name: d577dda0a7fbfacda57e8cad2bc4651d2a05d813
2017-01-07 00:56:01 +00:00
dan
ac56ab7e48
Fix handling the case where a sub-query in a FROM clause is itself a UNION
...
ALL, and one side of that UNION ALL is a query on a view that includes an
ORDER BY. Fix for ticket [190c2507].
FossilOrigin-Name: 590ca83b8e8cdd5d24ed7f10f43e540aa0627f22
2017-01-05 17:23:11 +00:00
drh
f99dd359d0
Change the OP_IfNotZero opcode so that it decrements register P1 by 1 rather
...
than the value in P3, and so that it only decrements if originally positive.
This avoids decrementing the smallest 64-bit signed integer.
FossilOrigin-Name: 165c044686212fbf7182dd560ad1e57eb4cc9838
2016-12-18 17:42:00 +00:00
dan
69b9383edf
Fix a problem causing the planner to generate sub-optimal plans for some queries
...
that use recursive WITH sub-queries with LIMIT clauses.
FossilOrigin-Name: 053a149cc8244a7f85137129cfcb8622efe90306
2016-12-16 15:05:40 +00:00
drh
79df77821a
Refactor the Table.nRef field as Table.nTabRef for easier grepping.
...
FossilOrigin-Name: 9cae4c2e300e20304ced0dc8c1415c4922185928
2016-12-14 14:07:35 +00:00
drh
2700acaacd
More changes to take advantage of the sqlite3VdbeAppendP4() method.
...
FossilOrigin-Name: 83bc5e40af9b20afeed008bf3e2669b7ac9e2dc8
2016-12-08 01:38:24 +00:00
dan
44c5604ced
Prevent the flattening or where-term push-down optimizations from obscuring
...
misuses of SQL row values that can lead to crashes or assert() failures.
FossilOrigin-Name: 433d16ff3adfede3be53d5b0e0512f37e225591b
2016-12-07 15:38:37 +00:00
drh
abfd35ea03
Performance improvement and size reduction in the Expr node allocator
...
function sqlite3PExpr().
FossilOrigin-Name: 2a81763e68cdf9b8c46389b1e1a87bc2084b53e7
2016-12-06 22:47:23 +00:00
dan
92ddb3bd02
Avoid clearing the EP_FromJoin flag from terms in ON clauses when flattening
...
sub-selects. Possible fix for [2df0107b].
FossilOrigin-Name: 8bed4cd549759a93c4a087d8d8c08c0068ba8d59
2016-12-01 19:38:05 +00:00
drh
9057fc7c7f
Remove the OP_RowKey opcode. Use OP_RowData in its place.
...
FossilOrigin-Name: 6ac7b07a4aff2e1a9031289e3dafdb9ac0071c24
2016-11-25 19:32:32 +00:00
drh
66adb0a848
Avoid storing redundant fields in sorter records when the sort-key
...
and data have fields in common.
FossilOrigin-Name: b835cf3e507b910b6a3e0f802ce2c40a72d0c227
2016-11-11 19:08:00 +00:00
dan
9af90b7231
Reenable the SQLITE_EXPR_REF optimization for "SELECT DISTINCT ... ORDER BY"
...
queries.
FossilOrigin-Name: 6e2e9d383f5fc4a0cbf05fe83ec7425812c0f556
2016-11-11 18:08:59 +00:00
dan
257c13fa00
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").
FossilOrigin-Name: 0af62fdbd8e2aab14718ff8bcb5934f05463c176
2016-11-10 20:14:06 +00:00
drh
4a8b013ef6
Make use of the unpacked key on the OP_IdxInsert on sorters with a LIMIT.
...
FossilOrigin-Name: 42db7cd2c0b367f7dfe733bdaf006538937b812a
2016-11-09 01:38:56 +00:00
drh
9b4eaebc68
Enhance the OP_IdxInsert opcode to optionally accept unpacked key material.
...
FossilOrigin-Name: 89d958abbac45f2ca5954080cd9e74ec9a07ebb2
2016-11-09 00:10:33 +00:00
drh
d8e4b13256
Use sqlite3DbMallocRawNN() where appropriate, instead of
...
sqlite3DbMallocRaw().
FossilOrigin-Name: 54a449a41d8d32da2f8b73689227ced866974a18
2016-10-01 19:21:56 +00:00
dan
4c5ebee0b5
When flattening a query of the form "SELECT * FROM (SELECT * FROM tbl WHERE x=?) WHERE y=?", ensure that the final WHERE clause is "x=? AND y=?" instead of "y=? AND x=?". Although it is still not guaranteed, this makes the order in which WHERE clause terms are processed comport more closely to users expectations.
...
FossilOrigin-Name: cf7f9e6d5abff273dd2f8a8dce27d52e1449b3be
2016-09-26 14:39:05 +00:00
drh
511f9e8d29
Remove the internal sqlite3CodeOnce() interface, replacing it with a
...
direct call to sqlite3VdbeAddOp0(v,OP_Once). Slightly smaller and faster.
FossilOrigin-Name: c3774c6a5fe48af91fda28e9e18c6ed9053ea992
2016-09-22 18:53:13 +00:00
drh
63cecc4173
Remove obsolete vector-IN test cases. Fix a bad testcase() macro.
...
FossilOrigin-Name: ab3f8f193a7ec36018bf26c9231a1a6a58b6a523
2016-09-06 19:08:21 +00:00
drh
1431807a0b
Fix corer cases of vector IN operators where the RHS is a compound SELECT
...
that includes an ORDER BY clause.
FossilOrigin-Name: 8329ac6f8d1edcc19c3e0559abe9a8011dbe1497
2016-09-06 18:51:25 +00:00
drh
ed24da4b16
Enhance the sqlite3GetTempRange() and sqlite3ReleaseTempRange() internal
...
routines so that they use sqlite3GetTempReg() and sqlite3ReleaseTempReg()
when nReg==1.
FossilOrigin-Name: 4071da2f87a2f24a279ac3bced8c794ad374b47c
2016-09-06 14:37:05 +00:00
drh
4910a76d45
Performance optimizations.
...
FossilOrigin-Name: f1d06c49ba0d814dc7ffb538aac3f4e6251fd8f0
2016-09-03 01:46:15 +00:00
drh
b684fd5c4a
Merge recent enhancements from trunk.
...
FossilOrigin-Name: b17872363b60edab05a5d382a44038aad91e4d9f
2016-08-19 15:41:24 +00:00
drh
e59be01072
Fix a zName to zDbSName conversion missed in the previous check-in.
...
FossilOrigin-Name: d7cf423cdccada2b0a4b7cc79ccf5f35d6f43212
2016-08-18 20:56:39 +00:00
drh
5ea494425f
Merge recent enhancements from trunk.
...
FossilOrigin-Name: 4768a1066cb9c7627064d7efec44188d6755cb03
2016-08-18 15:21:16 +00:00
drh
69c338263a
Rename the Db.zName field to Db.zDbSName to make it more descriptive and to
...
distinguish it from all of the other "zName" variables scattered throughout
the code.
FossilOrigin-Name: 92a22f01343a898455fd61c3b8e7d7c954f5b569
2016-08-18 14:33:11 +00:00
dan
51d82d1d24
Add tests and fixes for vector operations that use sub-queries with different combinations of LIMIT, OFFSET and ORDER BY clauses.
...
FossilOrigin-Name: 092b1c5ff53c9f3cfed079c46e3353d93f99303e
2016-08-02 18:50:15 +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
870a0705fe
Fix a problem with IN(...) constraints where the LHS is a sub-select that is an aggregate query.
...
FossilOrigin-Name: 1f4dba87da4a44ad26223ad965731164c0d9bad9
2016-08-01 16:37:43 +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
drh
f94fdd832c
Allocate KeyInfo objects from lookaside if possible.
...
FossilOrigin-Name: b411107a3609d53af4e147f01e311b858b78420b
2016-06-04 17:12:26 +00:00
drh
6326d9f6f1
Set the NULLEQ flag on the sequence counter comparison in the ORDER BY LIMIT
...
optimization, to avoid coverage complaints about not testing the NULL case.
FossilOrigin-Name: ed1b30dc932a7c03e173b130c5f55f9989c7e0b4
2016-05-20 13:44:58 +00:00
drh
a536df4e7f
In a query with both ORDER BY and LIMIT, if the inner loop satisfies the
...
ORDER BY then try to cut short each invocation of the inner loop once the
LIMIT has been satisfied. This check-in is a partial implementation only.
FossilOrigin-Name: 852d1eda6ecca1171f6ed800b06f5b4854672002
2016-05-19 22:13:37 +00:00