1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-18 10:21:03 +03:00
Commit Graph

1577 Commits

Author SHA1 Message Date
dan
115305ff00 Change the way SQLite invokes the xBestIndex method of virtual tables so that N-way joins involving virtual tables work as expected.
FossilOrigin-Name: ffc65968ede2c402e616147e6e3d737e6f9de21d
2016-03-05 17:29:08 +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
4fb48e4eb1 Improved debugging output with wheretrace. Fix some typos in test script
comments.

FossilOrigin-Name: 13a37fd487ce7d4f98a12f7a67a9c05dadc66557
2016-03-01 22:41:27 +00:00
drh
8c098e61b6 Fix an incorrect cost computation for sorting (introduced just a few
check-ins ago).  Should be NlogN, not NloglogN.

FossilOrigin-Name: 2459d3238853951bc3a507dd975e7ec921cf8446
2016-02-25 23:21:41 +00:00
drh
5a6f5ede81 Improvement on the previous check-in: disallow automatic indexes for any
loop that is expected to run less than twice.

FossilOrigin-Name: aab53a21894ba51d325fd8f8f4bb4163ece74391
2016-02-25 18:22:09 +00:00
drh
87eb919d05 Do not use an automatic index on an outer loop that only runs once.
FossilOrigin-Name: 5957e793414ff80ed01a7a67e70c3fd096a3f6e0
2016-02-25 18:03:38 +00:00
drh
c3489bbf77 Take the LIMIT clause into account when estimating the cost of sorting.
FossilOrigin-Name: d491745cab951e0de70f1f79b7640ea8aff6e8bb
2016-02-25 16:04:59 +00:00
dan
1447950438 Add test script shell6.test, containing tests for schemalint.
FossilOrigin-Name: 0b73406595c9a077399b0f4c17af3a826cf3612f
2016-02-22 19:51:08 +00:00
mistachkin
fad3039c51 Enhance ability to debug out-of-memory errors.
FossilOrigin-Name: 6a9c4a3ebfb7cc0738ef6634440ccab44a21ff28
2016-02-13 23:43:46 +00:00
drh
f981093760 Remove an unused parameter from whereSortingCost().
FossilOrigin-Name: b5d771991686bf86a679b7dff9f16301a5029c8b
2016-02-12 00:13:38 +00:00
drh
c50d5908b4 Remove the unexplained extra 3.0 cost factor for the B-tree sorting that is
done to implement DISTINCT in the absence of an index to help.

FossilOrigin-Name: 52571991fcfa2629e8a8354e0c9a62e749a092bf
2016-02-11 21:55:23 +00:00
dan
3e6ac1643c Experimental integration of schemalint functionality with the shell tool. Does not work yet.
FossilOrigin-Name: ed49f297bcee86674ed673e195610b8cc1d35647
2016-02-11 21:01:16 +00:00
dan
02e4f27146 Merge latest trunk changes with this branch.
FossilOrigin-Name: 1a4182eedd0143c3f71b3d97f1d1bb25adeba617
2016-02-09 15:10:56 +00:00
drh
575fad6500 Add the slightly faster sqlite3DbMallocRawNN(db,n) routine for the majority
cases where db is guaranteed to be not NULL.

FossilOrigin-Name: 0a802e96ab06e2643834b83671fa8353da1a348d
2016-02-05 13:38:36 +00:00
drh
4a642b6060 Improvements to the way that OOM errors are processed.
FossilOrigin-Name: c3ef03478a5788c855b3aef385d43ae7f494f440
2016-02-05 01:55:27 +00:00
dan
dbbf8e4eb7 Merge latest trunk changes into this branch.
FossilOrigin-Name: 9341491c3a11d5a66e4f88d2af9b0d3799b4f27a
2016-01-22 14:46:21 +00:00
dan
336bfe06b9 Fix handling of transitive constraints in schemalint.tcl.
FossilOrigin-Name: 44edc1aa3b412ddbe2a242075e2bf36a99437688
2016-01-22 14:44:02 +00:00
drh
9c0c57a4ca Improved comments on the FORDELETE hint. No logic changes.
FossilOrigin-Name: a3cec529f0238e4ca1196fec420f2de80d28db78
2016-01-21 15:55:37 +00:00
drh
00dcecab19 Performance optimization in the sqlite3VdbeChangeP4() routine of the
code generator.

FossilOrigin-Name: 28bd8d5fc541464b69886b7e886939035b42a869
2016-01-11 22:58:50 +00:00
drh
f19aa5fa6f Changes to the way that the default BINARY collating sequence is recorded
result in a slightly smaller and slightly faster executable.  More work could
be done to make this cleaner.

FossilOrigin-Name: 2081d75767dc590b4c8457e5f8e5f18ba5f8eaa7
2015-12-30 16:51:20 +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
dan
c45bf341af Fix the schemalint.tcl script to handle identifiers that require quoting.
FossilOrigin-Name: 451e0fafbe5b7e9c67d9b584d5e16796c3196881
2015-11-30 18:17:55 +00:00
dan
1acb539f4c Add the "colUsed" field to the sqlite3_index_info structure passed to virtual table xBestIndex methods. To indicate the subset of the virtual table columns that may be required by the current scan.
FossilOrigin-Name: 116b206494eb8ba963c7c5acfbf9e7b6db11c79c
2015-11-26 19:33:41 +00:00
dan
07bdba86d5 Add experimental support for LIKE, GLOB and REGEXP to the virtual table interface.
FossilOrigin-Name: 277a5b4027d4c2caba8143228a4f7d6df899dbb4
2015-11-23 21:09:54 +00:00
dan
ef5de04b4e Add support for ORDER BY clauses to schemalint.tcl.
FossilOrigin-Name: 93bdf70e859915ff3696ba0fc68f91ceb2e1a971
2015-11-20 20:55:27 +00:00
dan
e7dd68c2d4 Add a hack to debug out a description of the WHERE clause of a SELECT (or other) statement. Use this in script tool/schemalint.tcl to automatically recommend indexes that might speed up specific queries.
FossilOrigin-Name: c6fa01c28ef7ceea2963a92dfffe62eed451b05c
2015-11-11 18:08:58 +00:00
dan
c5dc3dcd6e Merge the BTREE_FORDELETE enhancement with this branch.
FossilOrigin-Name: 20da0849ce910ceb445954dfc5f985acf9a02695
2015-10-26 20:11:24 +00:00
drh
0691191d26 Merge in all trunk changes prior to the BTREE_FORDELETE enhancement.
FossilOrigin-Name: 53d5a4add6b60722ad77daf98b6b8983b081e16a
2015-10-26 18:51:09 +00:00
drh
3d541a5b8c Provide the BTREE_FORDELETE flag to sqlite3BtreeCursor() if the cursor will
be used only for deletions and seeking.

FossilOrigin-Name: 871b1c78bcbea1cb03d482f2f424c4e012633695
2015-10-26 17:50:54 +00:00
drh
4dd83a22f2 Fix a C99-ism and a harmless compiler warning.
FossilOrigin-Name: 138783b553602a055b3efdeac5947cf5ccd76b5d
2015-10-26 14:54:32 +00:00
dan
fb785b2c2b When creating an automatic-index on a sub-query, add a unique integer to the end of each index key to ensure the entire key is unique. Fix for [8a2adec1].
FossilOrigin-Name: bfea226d0d226a046a8bfb7a7a6288850d69bd26
2015-10-24 20:31:22 +00:00
dan
fd261ec67e Modifications to pass a flag to internal routine sqlite3BtreeCursor() when a cursor that is used solely for deleting b-tree entries, or for obtaining the components of keys to delete from other b-trees, is opened.
FossilOrigin-Name: cdc92919e600007cae5eb61223684f48a65babc0
2015-10-22 20:54:33 +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
drh
4b92f98ccc 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.

FossilOrigin-Name: 7d272aa62cd4cbbf4b5d04e3b918de27671e8301
2015-09-29 17:20:14 +00:00
dan
91742c45a9 Merge latest trunk change into this branch.
FossilOrigin-Name: b519c0d67a8fc39d65c17eccc9300a6187bd5661
2015-09-29 11:59:25 +00:00
dan
b3deb4ea64 Change the name of the new sqlite3_index_info.flags field to "idxFlags". Add documentation for the same to sqlite.h.in.
FossilOrigin-Name: f61203bc0fb0b62e12d6270e8d9063e445a5a252
2015-09-29 11:57:20 +00:00
drh
a722821eb5 Extra information provided by .wheretrace on input flags to the query planner
and on the result of sqlite3WhereOkOnePass().

FossilOrigin-Name: c5566bb39c8d9b58f77380b81a873429575c7d5c
2015-09-28 17:05:22 +00:00
dan
076e0f9674 Changes to allow DELETE operations on virtual tables to use the onepass strategy under some circumstances.
FossilOrigin-Name: e73f919fae1833c6ffb36eddbc76d9a8d9324214
2015-09-28 15:20:58 +00:00
drh
63c85a7a66 Fix a database corruption bug caused by the ONEPASS optimization added
in check-in [8b93cc5937000535].  Bug detected (prior to release) by
[https://www.sqlite.org/sqllogictest|sqllogictest].  Test cases to follow.

FossilOrigin-Name: 9d057f52217e7ef9c3f3eb84117abe3365503f44
2015-09-28 14:40:20 +00:00
drh
8ffddeb708 Fix a problem computing affinities for indexes during skip-scan code
generation when SQLITE_ENABLE_STAT4 is on.  Bug introduced by
check-in [1ee089a72d789002].

FossilOrigin-Name: 1350dd42d056508337b1a07ad8b1c9c97593f8d3
2015-09-25 01:09:27 +00:00
drh
dae26fe518 Enhance the query planner so that it is able to use indexed expressions
to help fulfill an ORDER BY clause.

FossilOrigin-Name: 668fc1ebaf426f9eed3ed7865e41f1023dafebfb
2015-09-24 18:47:59 +00:00
drh
76226dd28d Fix over-length source code lines in where.c. No logic changes.
FossilOrigin-Name: 1c8c5380a8b45c9e04d9663c3cb8182ef3a61b81
2015-09-24 17:38:01 +00:00
drh
ae1a015c87 Merge trunk changes into the cursor-hints branch.
FossilOrigin-Name: fbe637620fb7f2c9395c9ddac77d26746d6d4178
2015-09-24 15:06:30 +00:00
drh
c5de2d0a05 Make sure joins work correctly when both sides of the join are connected
using indexed expressions.

FossilOrigin-Name: c2fcb03299f2872d7f97a540ea145519f8b2e5cc
2015-09-24 12:19:17 +00:00
drh
7269443281 Correctly handle the case of a WHERE-clause term with indexed expressions on
both sides of the == sign.

FossilOrigin-Name: d9b716a6bd6145b2e7733c04d86227df777cd473
2015-09-24 11:26:45 +00:00
drh
81966bea22 Merge enhancements from trunk.
FossilOrigin-Name: 66fe06832614010d3156d7b21a760af9957018cc
2015-09-15 17:31:47 +00:00
drh
b0264eeca1 Use symbolic names ONEPASS_OFF, ONEPASS_SINGLE, and ONEPASS_MULTI for the
various modes of the one-pass optimization.

FossilOrigin-Name: 16e56bdadef903c6439a487f2683388aeeb0c625
2015-09-14 14:45:50 +00:00
dan
f0ee1d3c12 Experimental change to use a single-pass approach for DELETE statements on non-virtual tables that do not fire triggers or require foriegn-key processing.
FossilOrigin-Name: eaeb2b80f6f8f83679c8323a81bb39570ec946fe
2015-09-12 19:26:11 +00:00
mistachkin
3f62cb5aad Fix harmless compiler warning.
FossilOrigin-Name: 280fd3a482978b4a488a8b425721e451c2a30745
2015-09-09 17:23:48 +00:00
drh
28b9e0fc05 Fix an unreachable conditional in the WHERE clause analysis logic.
FossilOrigin-Name: 24924a58197e558a9e8800cc5c91dc8fb32f3557
2015-09-05 19:21:00 +00:00