drh
3e380a4485
Make the query planners use of partial indexes based on bound variables
...
responsive to the SQLITE_DBCONFIG_ENABLE_QPSG setting.
FossilOrigin-Name: a934dd14ac55177ac541423f4a077484bb3b461b60c9c2e88d067cca922fa2bc
2017-06-28 18:25:03 +00:00
dan
5aa550cf3b
Consider the values bound to SQL variables when determining whether or not a
...
partial index may be used.
FossilOrigin-Name: 7b59c353b805c64689b4ae9df347705acbb5f116346ad77af8ce087da7893747
2017-06-24 18:10:29 +00:00
drh
54ac445d53
Query planner tuning: When deciding between two plans with the same cost,
...
bias the selection toward the one that does not use the sorter.
FossilOrigin-Name: f0ec36d479ac4efaa0efd0594d032dd7b8ccdf84a4dc3644cd688762186fbcca
2017-06-24 16:03:18 +00:00
dan
c456a76fb3
When generating individual loops for each ORed term of an OR scan, move any
...
constant WHERE expressions outside of the loop, as is done for top-level
loops.
FossilOrigin-Name: e4a022be4b069b08cfdfda5295461676b99d28e17bbbedfbcb362dec69de59bd
2017-06-22 16:51:16 +00:00
drh
56790ea567
Fix an off-by-one error that messes up the display of loop codes in the
...
".wheretrace" debugging output for queries with more than 62 candidate
loops when SQLITE_ENABLE_WHERETRACE is on.
FossilOrigin-Name: 0bbdaf2801e4102d952db65e53962e534b67b8b72e76fadb4ce404a6249129d9
2017-06-11 20:17:02 +00:00
drh
63ad86e70e
Fix a problem in STAT4 equality estimation for multi-column indexes
...
introduced by check-in [3e0590dee0e68cc1599].
FossilOrigin-Name: cfb0d9e0207128b1c2b48689288a849b19dbc00a22cfaca26eec4bfc773629f8
2017-05-24 04:18:00 +00:00
drh
78436d4c66
When planning a query using sorting, resolve ties in the solver by selecting
...
loop plans with the smaller unsorted cost.
FossilOrigin-Name: f261678c90297f9767040c577796cc1d4db598aa44b0de6906cb73eaef377dee
2017-05-22 00:45:15 +00:00
drh
bcbb066534
Improved comments on one routine in the query planner. Improved diagnostic
...
output for ".wheretrace". No production code changes.
FossilOrigin-Name: 946b87a5282f00d8c532a51f4390e6de781b9a0d6626cb3c077c5622895dc540
2017-05-19 20:55:04 +00:00
dan
c42a0056d7
Merge latest trunk changes into this branch.
...
FossilOrigin-Name: b1533bc455f52f570c0f4b8aaa0da802757dc89b0e45b9a9b31aa591a44bf7bd
2017-04-20 17:35:46 +00:00
drh
bff6fe1f40
Improved optimizations of views as the right operand of a LEFT JOIN.
...
FossilOrigin-Name: 41c27bc0ff1d3135cdb6273ede4595f5bb0c0e1e1d470ea1633cb525674cf431
2017-04-18 11:20:19 +00:00
dan
990b6ceccf
Merge latest trunk changes into this branch.
...
FossilOrigin-Name: 2d0c458e013cb2d02fbeabed8dabd66f55141aac194611f0e599b3c95af1964f
2017-04-15 15:47:19 +00:00
dan
e01b9281fc
Add header comment for sqlite3_vtab_collation().
...
FossilOrigin-Name: d238694ca445ccb4eeb3e3269a5f872f998f795945d0f9dd95c11d0e42d4d538
2017-04-15 14:30:01 +00:00
dan
79610f5d09
Fix memory leaks in the code on this branch. Make use of the
...
sqlite3_index_constraint.usage field. Do not try to handle ORDER BY terms with
explicit COLLATE clauses - they don't get passed to the vtab layer anyway.
FossilOrigin-Name: 0cd75a872c89958a7f418720a0e8c6f638f8284c488f666015c19136feae6be8
2017-04-15 14:16:04 +00:00
drh
a2e2d92b21
Fix to the decision logic for when to use the skip-ahead-distinct optimization.
...
FossilOrigin-Name: e50fd48969f99bc988389c53ff46714603b1d11de12c71b55c00cbee037f073c
2017-04-14 22:41:27 +00:00
dan
0824ccf29b
Modify the code in ext/expert/ to use the vtab interface instead of
...
sqlite3_whereinfo_hook(). Remove sqlite3_whereinfo_hook().
FossilOrigin-Name: 3bb6585004090dbf92dd5e9abdf0fd2c921e64b5b3121c4fb7446db764ab59e5
2017-04-14 19:41:37 +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
571311502d
Fix a couple of unreachable branches.
...
FossilOrigin-Name: 1aa0ea8db7580aff8bed2f78117ed50019e5545cef48cab782f512a2599fd0c5
2017-04-14 00:45:51 +00:00
drh
172806e489
Fix the skip-ahead-distinct optimization so that it works with indexes that
...
have repeated columns with different collating sequences.
FossilOrigin-Name: ce1e2b88777e00a82c04abe5ba35eec81b5f324e462f099cd00b21054f369688
2017-04-13 21:29:02 +00:00
drh
c04ea80f64
Simplification of the skip-ahead-distinct logic. There is still an issue
...
with handling COLLATE.
FossilOrigin-Name: 57c5173b6376a76013b0611ce9770100bd8c04e80402e35d821d8614709f4795
2017-04-13 19:48:29 +00:00
dan
a74f5c2923
New test cases and minor fixes for the optimization on this branch.
...
FossilOrigin-Name: 70ac9ea1a6cb2f4906f00f1a04f668e5ba5eeed8d4d0fa4be57a9c9eb0683697
2017-04-13 18:33:33 +00:00
drh
839fa6d814
Only use the skip-ahead-distinct optimization if the index has been analyzed
...
and we know that a skip-head is likely to skip over at least 11 rows. The
magic number 11 was determined by experimentation.
FossilOrigin-Name: 0cf16decd534bf2d66620c293f8c8987f356305f2d97f8fd12d260bda1571385
2017-04-13 13:01:59 +00:00
drh
8489bf5aff
Forward port the skip-ahead-distinct branch which was abandoned for some reason
...
that I do not recall. This port should have been achived by a merge of trunk
into the previous head of skip-ahead-distinct, but that did not work. So I had
to manually "rebase" the changes.
FossilOrigin-Name: 132339a1fb0b9664df4d3eefbed6e77ef100ba95a91dcc622da7bd3fcdfcd6af
2017-04-13 01:19:30 +00:00
dan
0e0f5edbb5
Update this branch with latest trunk changes.
...
FossilOrigin-Name: 0f66a093935100efd731e14aa63b57360ddd517c1ac97edd1ea9a9de95e1f3cc
2017-04-11 19:00:30 +00:00
dan
2b78dd2359
Merge latest trunk with this branch.
...
FossilOrigin-Name: e051e8f21b909c5e89a7203eef6501fecd64f82a634c4e10398b5ef7d716eb37
2017-04-08 19:00:37 +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
dan
53761f4d52
Add some support for OR terms to sqlite3_whereinfo_hook().
...
FossilOrigin-Name: 5cd070000da1d9e399090677b4db75dc5639c33211385d6eb84f14a4d0b617cd
2017-04-04 17:50:31 +00:00
dan
e86573fa51
Add the sqlite3_whereinfo_hook() API - an experimental API replacing the
...
DBCONFIG_WHEREINFO hack on this branch.
FossilOrigin-Name: a54aef35da11f7508a8888a159372036a362fc52afa1df752dc835db334c4330
2017-04-04 04:23:06 +00:00
drh
628dfe163f
Avoid an unnecessary call to sqlite3WhereGetMask() inside of whereShortCut().
...
FossilOrigin-Name: 5c11f4303f6a33d6358f451244551be63baf9afe5630332e60b349215e20a3af
2017-04-03 14:07:08 +00:00
dan
fbf3bdcdbc
Merge latest trunk into this branch.
...
FossilOrigin-Name: cb721d0b36268a7b0ef493fa4d7f6bcbaa9ead8b1990e3c3fae015fa1d545226
2017-03-31 11:20:20 +00:00
drh
202230ef5c
Make sure the translateColumnToCopy() routine in the query planner does not
...
try to access an array that failed to be fully allocated due to a prior OOM.
This fixes an issue discovered by OSSFuzz.
FossilOrigin-Name: 3299a26160c239255608d1e2b15a221e28b18a3d
2017-03-11 13:02:59 +00:00
drh
a3928dd7be
Set the TF_StatsUsed flag on tables when the query planner outcome is
...
affected by the sqlite_stat1 data. Also, change the column names of the
"PRAGMA stats" command so that they are not keywords.
FossilOrigin-Name: fb2b8ae8310e4ea4b42354bbf36c3084a9d5c6d7
2017-02-17 15:26:36 +00:00
drh
e9ba910f0d
Change the name of WhereInfo.pDistinctSet to pResultSet, since it is now
...
used for more than just DISTINCT processing.
FossilOrigin-Name: 9fc5cd505fe6ab043519d68e999d2285e22452af
2017-02-16 20:52:52 +00:00
drh
f9463dfbcf
Fix indexes on expressions so that they can be actually used with
...
a COLLATE clause.
FossilOrigin-Name: e464b919f76520b45bb58983c6702db59d820ee4
2017-02-11 14:59:58 +00:00
drh
13ac46eea2
Ensure that indexed expressions with collating sequences are handled
...
correctly. Proposed fix for ticket [eb703ba7b50c1a5].
FossilOrigin-Name: 9689d04b8250139e32078b2aa9748edcc6231bcd
2017-02-11 13:51:23 +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
65f38d960d
Remove unnecessary OP_Close opcodes for a size reduction and performance
...
increase.
FossilOrigin-Name: 32be7aae92ee48bf2cd260ea41e79c2bc62738f9
2016-11-22 01:26:42 +00:00
drh
9904298bb3
Small size reduction and performance enhancement in whereScanInit().
...
FossilOrigin-Name: c23f5ef337533c1ec6e3ba78a2910352181cc9ee
2016-10-26 18:41:43 +00:00
drh
392ddeb12d
Small size reduction and performance improvement in whereScanNext().
...
FossilOrigin-Name: d861ee17eb900a607de6ec3f4a5d5c24cfb834a0
2016-10-26 17:57:40 +00:00
dan
b40897ab5e
If all branches of an OR optimize scan that is the rhs of a LEFT JOIN use the
...
same index, set the index cursor to return NULL values if there are no matches
for a row on the lhs.
FossilOrigin-Name: e7b9bc678ecb75c594d9d3ade12a99a8d551cdc9
2016-10-26 15:46:09 +00:00
drh
c436a03d02
Avoid reading the -1-th element of an array in the query planner. Fix to a
...
bug introduced by check-in [8e2b25f9b8a7] from earlier today. Curiously,
the problem only appeared on 32-bit systems.
FossilOrigin-Name: 443913d582bcd953d85159047541592e2f68ade3
2016-10-12 18:55:53 +00:00
drh
013ae68b25
New testcase() macros to ensure coverage of the ORDER BY LIMIT optimization
...
code in where.c.
FossilOrigin-Name: 61f0526978af667781c57bcc87510e4524efd0d8
2016-10-12 15:15:30 +00:00
dan
83465a662f
Fix a problem affecting queries that match the pattern (... WHERE ipk IN (....) ORDER BY ? LIMIT ?). Fix for [96c1454c].
...
FossilOrigin-Name: 8e2b25f9b8a7ed087d3cece74239814bee19429e
2016-10-12 14:48:00 +00:00
dan
90b2fe6b1e
When handling ORDER BY expressions, do not assume all values of an indexed expressions are distinct. Fix for [4766f444].
...
FossilOrigin-Name: aebe429e52ffef026cb0803fb164339d61bd2e88
2016-10-10 14:34:00 +00:00
dan
320d4c304d
Add missing "static" to internal function whereRangeVectorLen().
...
FossilOrigin-Name: cbed3d75cf9a24037263d126727db7dd048a4f97
2016-10-08 11:55:12 +00:00
drh
87c05f0c58
Avoid unnecessary memset() calls in the query optimizer.
...
FossilOrigin-Name: 5bb7cde0731d23411e9df02a957010f94203397b
2016-10-03 14:44:47 +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
9a2e5169a4
Fix a segfault introduced by the row-value enhancement that comes up on
...
a skip-scan where the first term of the index is unconstrained and the
second term is of the form "columm IN (SELECT...)".
FossilOrigin-Name: 2401ea5acfeee8042489d1db38036ff86e8a6916
2016-09-19 11:00:42 +00:00
drh
4313f045c2
Add WHERETRACE macros showing every entry and exit from
...
whereLoopAddBtreeIndex().
FossilOrigin-Name: e7653decdcee161d379ced40aa1b27246337b000
2016-09-16 14:50:38 +00:00
drh
af6f65fb26
Merge fixes from trunk.
...
FossilOrigin-Name: 193f036c87857bd77577ceb462af5034c7cc77da
2016-09-07 13:12:13 +00:00