drh
33cad2fb46
Simplify the range scan code generate while also avoiding an unnecessary
...
OP_Affinity opcode.
FossilOrigin-Name: 372686bfbb1da08b04bddb085e30da5dbc8b30d8
2013-11-15 12:41:01 +00:00
drh
f30a969b80
Rework the logic that factors constant expressions out of inner loops, making
...
it both simpler and faster.
FossilOrigin-Name: 8dc5c76c766828d7c28090bec30ff48227e7b140
2013-11-15 01:10:18 +00:00
drh
052e6a8a07
Remove an unused local variable.
...
FossilOrigin-Name: 10d59226382adcb8016fc2d927e5a0c0b36f3980
2013-11-14 19:34:10 +00:00
drh
d24474475e
Import the "PRAGMA vdbe_eqp" enhancement and the enhanced EXPLAIN formatting
...
the shell from trunk. Fix a bug in skip-scan and add a test case to prevent
a regression.
FossilOrigin-Name: f668616a29686f3ce532731c534b168e536adbb5
2013-11-13 19:01:41 +00:00
drh
84e55a80db
Add the "PRAGMA vdbe_eqp" command, only available with SQLITE_DEBUG. Simplify
...
some of the other debugging logic.
FossilOrigin-Name: 8ce33f4c818e1c785a1c176f6f631b8184e1166b
2013-11-13 17:58:23 +00:00
drh
e084f40b37
Add VDBE comments to the beginning and end of skip-scan loops.
...
FossilOrigin-Name: 0c85d93b52311dee7980d977be6ed0dc70b060c1
2013-11-13 17:24:38 +00:00
drh
2e5ef4ed77
Improve the way that skip-scan loops are constructued. Add test cases.
...
Improved the scoring of skip-scan loops.
FossilOrigin-Name: 5e75ab93881b85801cb4ebf70f2063ff7c51ac19
2013-11-13 16:58:54 +00:00
drh
cd8629e4bb
Add the ability to use an index even if the left-most columns of the index
...
are unconstrainted, provided that the left-most columns have few distinct
values.
FossilOrigin-Name: 27dd5993d1ae5625eb94bf406421eb390d001be9
2013-11-13 12:27:25 +00:00
drh
c181c26cba
Avoid an unnecessary OP_IfNull while doing an indexed search.
...
FossilOrigin-Name: 5196000930600d0cd931b87e864507791b9dab08
2013-11-13 08:55:02 +00:00
drh
5e6790cb15
Minor enhancements to the auxiliary information added to EXPLAIN output with
...
SQLITE_EXPLAIN_ENABLE_COMMENTS.
FossilOrigin-Name: 0d1328e33ca761eddcf8a50e8e83c997861e9047
2013-11-12 20:18:14 +00:00
drh
e54df42d87
Break out the structure and macro definitions of where.c into a separate
...
header file whereInt.h for easier editing and debugging.
FossilOrigin-Name: c44467124623733aac64096d605f16139b733a7f
2013-11-12 18:37:25 +00:00
dan
ff4b23ba9e
Fix for [4065ac8595]: Do not order CROSS or LEFT joins, even if the right-hand-side is a virtual table.
...
FossilOrigin-Name: e2684ece455f53563ae6da7cbb5505d9a4a3076a
2013-11-12 12:17:16 +00:00
dan
a9f5815b67
Add a way for virtual tables to return the expected number of rows for a scan (not just the overall cost) to SQLite. Have the rtree module make use of this.
...
FossilOrigin-Name: 5a3cfd747a85480d215784817c3821d87ecfa2f7
2013-11-11 19:01:33 +00:00
drh
4308e348d7
Remove unreachable code, replacing it in most cases with assert() or NEVER()
...
macros.
FossilOrigin-Name: 924d63b283a3d059838114c95d42c6feaf913529
2013-11-11 16:55:52 +00:00
drh
511717c645
Fix harmless compiler warnings.
...
FossilOrigin-Name: 0077c0772a884b54d81fa3733aac6f0c364ef1a8
2013-11-08 17:13:23 +00:00
drh
fc8d4f96b4
Performance improvements:
...
Avoid unnecessary seeks when doing a single-row UPDATE on a WITHOUT ROWID
table.
FossilOrigin-Name: 6f187a0fb1b09ebc4732c4afbf3c813f82e069f1
2013-11-08 15:19:46 +00:00
drh
702ba9f2e3
Enable the WHERE_ONEPASS_DESIRED optimization for UPDATE operations on
...
WITHOUT ROWID tables.
FossilOrigin-Name: 215307985590c2f3f7aa0d5a0b7799155a506045
2013-11-07 21:25:13 +00:00
drh
2ec2fb2269
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.
FossilOrigin-Name: defd5205a7cc3543cdd18f906f568e943b8b3a2c
2013-11-06 19:59:23 +00:00
drh
416846a362
Improved ORDER BY optimization for WITHOUT ROWID tables.
...
FossilOrigin-Name: 8f1709ff2d52d5ceca3da6a2a4e06da204d9e65a
2013-11-06 12:56:04 +00:00
drh
d4ddae985b
Disable the OR optimization for WITHOUT ROWID tables, since it relies on
...
the use of rowids.
FossilOrigin-Name: 6055dad2ba2f9256b1f2d0a9e32ca00f1b81b0cf
2013-11-06 12:05:57 +00:00
drh
ee0ec8e1db
Fix issues with quering from an auxiliary index that must refer back to the
...
PRIMARY KEY index of a WITHOUT ROWID table.
FossilOrigin-Name: cff1f55c52ff57557d9b728a5cd830a367091794
2013-10-31 17:38:01 +00:00
drh
8075cc17d3
Merge recent fixes from trunk.
...
FossilOrigin-Name: 9f8191d1d833acaaf612fdff8cc6bd544c042986
2013-10-28 22:39:53 +00:00
drh
7afc8b0c3f
Formatting improvements to the WHERE-clause constraint display in the
...
wheretrace debugging logic.
FossilOrigin-Name: 3a9e3ed94bf617f00c48009b1a6d348a8f23a3cf
2013-10-28 22:33:36 +00:00
drh
e1a086e412
Do not use transitive WHERE-clause constraints on LEFT JOINs.
...
Fix for ticket [c620261b5b5dc].
FossilOrigin-Name: 9aac4e588cbce55c1098321bcd042d5b04036893
2013-10-28 20:15:56 +00:00
drh
f4e9cb065b
More wheretrace debugging support: Show a listing of all WHERE clause
...
terms (on wheretrace bit 0x100) and include important flags such as
TERM_VIRTUAL, WO_EQUIV, and EP_FromJoin.
FossilOrigin-Name: 92ccd705411ce3f64720ab5f34c7efc9cb46d5c9
2013-10-28 19:59:59 +00:00
drh
c1ba2e7a52
Bug fix and enhancements to the improved wheretrace logic that shows the
...
constraint expressions.
FossilOrigin-Name: 10f125f5da55eca15e68c74d62ab7d37bbbbfb5f
2013-10-28 19:03:21 +00:00
drh
989578e139
Improved "wheretrace" capabilities: Show the constraint expression if the
...
wheretrace flag has the 0x100 bit set and if compiled with
SQLITE_ENABLE_TREE_EXPLAIN.
FossilOrigin-Name: 710a18ac7916cb688955505d7d461b461f563155
2013-10-28 14:34:35 +00:00
drh
261c02d963
Basic DELETE operations now working on WITHOUT ROWID tables.
...
FossilOrigin-Name: 9eafafa31c4a2bbcf48418743e0fcb17c374e9a6
2013-10-25 14:46:15 +00:00
drh
9eade087da
Delete PRIMARY KEY index entries last. Only construct the unique prefix of
...
an index key when deleting entries from an index.
FossilOrigin-Name: 0e56ba69f0fcd12a5166c32f6e4eacdcc29fba04
2013-10-24 14:16:10 +00:00
drh
85c1c557d0
Correctly handle queries that use secondary indices of WITHOUT ROWID tables.
...
FossilOrigin-Name: d8bc8595301789d0e9de24c391808121905ab559
2013-10-24 00:18:18 +00:00
drh
dd9930ef20
Change the sqlite3OpenTable() utility to open the PRIMARY KEY index when
...
reading a WITHOUT ROWID table.
FossilOrigin-Name: 247f389930aededaa54ecb792748aa8d0ad6d57b
2013-10-23 23:37:02 +00:00
drh
4415628a4a
Construct secondary indices on WITHOUT ROWID tables.
...
FossilOrigin-Name: 2c028ddc85cb45746cad6ab0cefd99134fbd50d7
2013-10-23 22:23:03 +00:00
drh
ec95c44175
Some simple inserts and queries working on WITHOUT ROWID tables.
...
FossilOrigin-Name: 3f8016dee24213ec83a02d71ad2698789cc3a818
2013-10-23 01:57:32 +00:00
drh
bbbdc83b52
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.
FossilOrigin-Name: a106ce86cd4afd1f81603826de77df1fb25e9ab5
2013-10-22 18:01:40 +00:00
drh
77e57dfbc8
Add a procedure to handle the messy details of allocating an Index object
...
from the heap.
FossilOrigin-Name: 45efc94f9a8169433ffcb4aa35760551c55df4c4
2013-10-22 14:28:02 +00:00
drh
4f99189051
Fix various harmless compiler warnings. Change the "warnings.sh" script to
...
work with STAT4 instead of STAT3.
FossilOrigin-Name: 7df06684ab36bfdad9e9aca6940b7a665c2a0cb5
2013-10-11 15:05:05 +00:00
drh
b50596d64d
Rollback some of the previous changes in the branch such that the estimated
...
row sizes are now only used as a tie-breaker for index scans.
FossilOrigin-Name: 65553ff34b41e54d129ff2fee96be714105503c4
2013-10-08 20:42:41 +00:00
drh
186ad8cc32
Further refinement of the idea of multiplying run-time cost estimates by
...
the estimated row size.
FossilOrigin-Name: 18bd6ba96d19de6047baebfa15b1f739577c9ec4
2013-10-08 18:40:37 +00:00
drh
3495d20dbe
Multiply all cursor step cost estimates by the estimated size of the row in
...
bytes, in order to get the query planner ot make use of estimated row sizes.
This check-in uses magic numbers in a few places (for example, estimates of
the size of output rows) and needs lots of refinement. Consider this a
proof-of-concept only.
FossilOrigin-Name: cb34cfe57c2a664fbfae8106e95114400ea222d5
2013-10-07 17:32:15 +00:00
drh
e13e9f54b0
Completely remove the iScanRatio field. The PRAGMA index_list(TABLE) command
...
shows the estimated row size in the forth column. It also generates a row
for the table with an index name of NULL. The query planner still does not
take row size estimates into account - that is the next step.
FossilOrigin-Name: 8b4aa0c7a2122bbe60432edadf27e490e31ec987
2013-10-05 19:18:00 +00:00
drh
bf539c4d5c
Begin an experimental refactoring to estimate the average number of bytes
...
in table and index rows and to use that information in query planner.
Begin by renaming WhereCost to LogEst and making that type and its
conversion routines available outside of where.c.
FossilOrigin-Name: 66c4a251d61582b47d5cbe50cbca160a9209bd06
2013-10-05 18:16:02 +00:00
drh
d9e3cad2f8
Progress toward using the iScanRatio information on indices. Many tests
...
are still failing.
FossilOrigin-Name: 6c352edbba85a15ca356b5e131f4b3b2723d1774
2013-10-04 02:36:19 +00:00
drh
24b7fe9004
Fix a minor typo in a comment in where.c.
...
FossilOrigin-Name: 9c9fa151e9a3bdab0264c08b66cbcc89d61bfca5
2013-09-30 19:33:06 +00:00
drh
a4c3c87e3d
Merge in the Expr.flags expansion to 32-bits. Use an extra bit to help
...
optimize the sqlite3ExprSkipCollate() routine.
FossilOrigin-Name: 4c84d1b4c20f18921dd705bf67e8225975b83e86
2013-09-12 17:29:25 +00:00
drh
7d9e7d8287
Improvements to likelihood processing so that commuting an unindexed term in
...
the WHERE clause does not change the query plan.
FossilOrigin-Name: 6e6bded055cdbc902731687c86d92c39a3ba5904
2013-09-11 17:39:09 +00:00
drh
09328c00d6
Additional unlikely() test cases. Logic tweaks to support test coverage.
...
FossilOrigin-Name: 5d00cce74a7aefaf30022ae971ab1e0451e0ad6e
2013-09-11 14:34:58 +00:00
drh
abfa6d52ed
Tweaks to the index selection logic.
...
FossilOrigin-Name: 52d52688644f635a50a60ff17b160f3affa8fa6c
2013-09-11 03:53:22 +00:00
drh
36fabb6297
Merge trunk fixes into the unlikely-func branch.
...
FossilOrigin-Name: a51d751553b14aa26912c516f60727551deb8e60
2013-09-10 01:53:18 +00:00
drh
0259bc3da2
Make sure that the transitive constraint optimization does not cause
...
WHERE clause terms to be disabled prematurely. We are unable to find a test
case that fails because of this, but it seems prudent to make this
preventative change nevertheless.
FossilOrigin-Name: d6e361d7fb8013d616af91ef2c10038c97d1be5f
2013-09-09 19:37:46 +00:00
drh
add5ce303f
Continuing refinements of the logic to take WHERE clause terms not used for
...
indexing into account when computing the number of output rows from each
table.
FossilOrigin-Name: b65dc53415f42d8402d0ec7f4bedf59d7b39b486
2013-09-07 00:29:06 +00:00