drh
58eb1c0af1
Improved comments explaining the operation of the findTerm() utility routine
...
in where.c. Increase the maximum number of levels of transitivity from 4
to 11.
FossilOrigin-Name: fe152f8b048c9a18f99fa6096ff0e68dd630c318
2013-01-17 00:08:42 +00:00
drh
7a5bcc0f08
Enhance the query planner to exploit transitivity of join constraints in
...
a multi-way join.
FossilOrigin-Name: 13171eb5dc19733276fbfd5515d75b70a9f5f5d7
2013-01-16 17:08:58 +00:00
drh
3bd5ab8638
Improvements to query planning for joins: Avoid unnecessary calls to
...
"optimal scan" checks in cases where table reordering is not possible.
Make sure optimal scan checks are carried out for CROSS JOINs and LEFT
JOINs.
FossilOrigin-Name: d5ebb7877885839e93eee3b322624d4c4215c1c4
2013-01-16 00:46:09 +00:00
drh
ea84a65e4e
Fix a missing word in a comment. Enhance the "wheretrace" debugging output
...
to show the estimated cost of each table option while planning the join order.
FossilOrigin-Name: ac4e119a87497f2e422ff1cb711112ed8594bfa9
2013-01-15 18:49:07 +00:00
drh
5d5cf01ee0
Clarification to a comment in where.c. No code changes.
...
FossilOrigin-Name: 04507c176330a06b09dcafa35ec0ca7498f5ace7
2013-01-15 16:15:28 +00:00
drh
29a8bf8e94
Fix an over-aggressive optimization of ORDER BY on a three-way join where the
...
second table is UNIQUE and the ORDER BY occurs on the third table.
Ticket [598f5f7596b0557].
FossilOrigin-Name: 5774f2175ce621dfc4b6b93f7ee13fd66f3ec2b9
2013-01-09 11:31:17 +00:00
drh
7ee751d241
Proposed fix for ticket [a7b7803e8d1e8699cd8a].
...
FossilOrigin-Name: 3d0e00c731c39af91bad74c6d74853375bac356e
2012-12-19 15:53:51 +00:00
drh
d03025327e
Remove an unreachable branch. Improvements to comments.
...
FossilOrigin-Name: d2fb7619b063b329b6d7ba9a16a7290e5d868f23
2012-12-14 17:48:08 +00:00
drh
03597ef6e2
Merge in all the trunk changes that have occurred since this branch was
...
opened.
FossilOrigin-Name: 6d507e4de924e2f4556ea4a03ee0fa7d647bf8bb
2012-12-14 15:54:05 +00:00
drh
e40ed78c1c
Fix the virtual table IN optimizer so that it work even if the virtual table
...
implementation leaves the sqlite3_index_info.aConstraintUsage[].omit flag
clear for an equality constraint that it intends to use.
FossilOrigin-Name: d6e045f89c5a4b500b1da7ea1224b132909bafc6
2012-12-14 15:36:17 +00:00
drh
04229acebc
Factor some work out of the index loop of the bestBtreeIndex() routine for
...
a small performance increase.
FossilOrigin-Name: 92c9ab56b1c67b9468bec57ab1d2c483a69a2810
2012-12-08 22:14:29 +00:00
drh
261d8a51e2
Adjustments to the collating-sequence refactoring to facilitate full-coverage
...
testing and to fix some minor issues found by TH3.
FossilOrigin-Name: cdbfa664839a409589ec7cebfc9111235d2f3b38
2012-12-08 21:36:26 +00:00
drh
fb76f5a00c
Make sure WHERE clause constraints A=B and B=A work the same even with
...
COLLATE clauses.
FossilOrigin-Name: b3f53668115f0a12a01167c2a75eecc735416024
2012-12-08 14:16:47 +00:00
drh
580c8c1816
Veryquick passes all tests now.
...
FossilOrigin-Name: 7b96115e81deab0aa0472839cf787ba3f2fc64a7
2012-12-08 03:34:04 +00:00
drh
7a66da1395
Many more tests are passing. Only about 100 failures remain in veryquick.
...
FossilOrigin-Name: f9fa7581c0371fe0feb4e97487741ade18595810
2012-12-07 20:31:11 +00:00
drh
0a8a406e9b
Some errors in veryquick resolved. Many more to go.
...
FossilOrigin-Name: 972443b4eb282d45507da06c75e2cd46dd72326b
2012-12-07 18:38:16 +00:00
drh
4b17cf5855
Veryquick now row to completion without segfaulting or asserting. But there
...
are still lots of errors.
FossilOrigin-Name: 7fafab12e4c0c832c421975f8329c3214403d281
2012-12-07 14:02:14 +00:00
drh
ae80ddea9f
Remove the Expr.pColl field and compute the collating sequence as it is needed.
...
This fixes the test script "shared9.test", though there is still a memory leak.
And there are other problems. Consider this a work-in-progress.
FossilOrigin-Name: fd011cb22f2d899d94ec7ce22641d7a8f5e19972
2012-12-06 21:16:43 +00:00
drh
fc5e546641
Make sure that the optimization that set the maximum column that will be used
...
on a particular query does not mistakenly change an opcode other than
OP_OpenRead or OP_OpenWrite. In particular, make sure it does not overwrite
the P4 field of an OP_SorterOpen.
FossilOrigin-Name: b0c1ba655d69c0c46c16ea2aef4e6c9a3e6ce3fb
2012-12-03 17:04:40 +00:00
drh
ada796bbaa
Disable the table selection rule that tried to prevent full table scans from
...
migrating to the outer loop unless they were optimal. The new scaling of
outer-loop costs by cost of inner loops obviates the need for that step. And,
in fact, that step causes problems with the new inner-loop cost accounting.
FossilOrigin-Name: 51bfd63b7f9fe53831570ad124c932cb3582b104
2012-11-09 18:22:26 +00:00
drh
782d68a4cd
Try to take into account the cost of inner loops when selecting which table
...
of a join to use for the outer loop.
FossilOrigin-Name: 942556342a332b04a11169bb04f387d741ef9488
2012-11-09 17:59:26 +00:00
drh
da998c8ec0
Make sure that the optimizer never tries to create an automatic
...
index on a coroutine subquery.
FossilOrigin-Name: f83aa0de8470748b3cd0bff232aeea3baf8dae53
2012-10-30 15:31:31 +00:00
drh
21172c4cc0
Add an optimization that attempts to run a subquery as a coroutine rather
...
than manifesting it into a temporary table.
FossilOrigin-Name: 7af3acbbd49a2114fcdada9ec907c68ba9b053bd
2012-10-30 00:29:07 +00:00
drh
447b289ec8
Make sure the automatic index optimization is checked even if the
...
covering index scan optimization was previously selected.
FossilOrigin-Name: ac1d5d8a553d8ba76a332eed9d563ce7f04a7a37
2012-10-26 18:40:01 +00:00
drh
281bbe2a95
Enable optimization of IN operators on constraints to virtual tables.
...
FossilOrigin-Name: aa650746b19e4a6a373f7e47effff3ab2f48e78c
2012-10-16 23:17:14 +00:00
drh
90abfd086f
Merge the fix for ticket [d02e1406a58ea02] into trunk.
...
FossilOrigin-Name: dd34bec389359845b86f4cc4906ab440f92dcab9
2012-10-09 21:07:23 +00:00
drh
2f546ee914
Bring some comments up to date in the query planner, and especially the
...
ORDER BY optimizer. Also add testcase() macros.
FossilOrigin-Name: bb5c0f1c92b48631d4a12cd4f321b53cd07885c8
2012-10-09 09:26:28 +00:00
drh
86257fff87
Remove an unused variable. Fix code that occurs before a variable
...
declaration.
FossilOrigin-Name: 01dc032b5bbd9c9ebb1965f176ca5d732cda85ea
2012-10-09 01:39:25 +00:00
drh
69a76bad73
Replace an always-false conditional with an assert().
...
FossilOrigin-Name: 981b9943e4b2b660690ec1ac145abdd3c74f8dd2
2012-10-09 01:23:25 +00:00
drh
3a17ea7ab6
Merge ORDER BY optimization refactoring and repair into trunk.
...
FossilOrigin-Name: c027a9af9137f3346dbb5c5e100a087c2e89797b
2012-10-08 21:51:58 +00:00
drh
2fad815c52
All test cases (veryquick.tcl and min.rc) pass. A few branch operations in
...
ORDER BY optimization logic are untested by min.rc.
FossilOrigin-Name: 8314fd6078a3a71aea9d6386ff277cfeb592b4ba
2012-10-08 21:01:15 +00:00
drh
6b9e565e54
Further tweaks to the ORDER BY optimizer, to fix a bug and to get the
...
optimizer to recognize some additional cases.
FossilOrigin-Name: bcb4f262476193cfb17818d8c62bab528dddeef9
2012-10-08 20:27:35 +00:00
drh
0a4c741cab
Bug fixes in the ORDER BY optimizer.
...
FossilOrigin-Name: 301bbee4045aa169e29fb4fb75743b71eb4760a1
2012-10-08 19:41:38 +00:00
drh
8e4af1b997
Continued refactoring of the ORDER BY optimization logic. This check-in
...
is close to working, but it still has issues. A few test cases fail.
FossilOrigin-Name: adbdc663f3d22ff03f21040a811d585cf2218626
2012-10-08 18:23:51 +00:00
drh
79e72a50aa
Consolidate all occurrences of the "no such collation sequence" error message
...
into a single spot.
FossilOrigin-Name: 8ea67522fb03134f355ecb776b70c6917241cab2
2012-10-05 14:43:40 +00:00
drh
4f68d6c8c0
Yet another refactoring of ORDER BY logic in the query planner. This
...
particular check-in works mostly, but still has a few minor issues.
FossilOrigin-Name: 8f4487450be1a2b0371f8251a967cbe341b2dea1
2012-10-04 12:10:25 +00:00
drh
613a53a029
Fix an out-of-order memset() that occurs before all variable declarations
...
are finished. Also fix a line that exceeds the 80-character line length
limit.
FossilOrigin-Name: ba2f492f957ab5556cd540e21a76ebb75efea725
2012-10-03 18:09:32 +00:00
drh
6f0e400cba
Fix a query planner problem that only occurs when covering-index-scan is
...
disabled. Fix to tests whose output changed due to the new and more
aggressive ORDER BY optimization.
FossilOrigin-Name: 0f9bb90100aa304a7f28023ca4173e68b445e8bd
2012-10-03 12:38:19 +00:00
drh
d663b5bdef
Further attempts to optimize out unnecessary ORDER BY clauses.
...
FossilOrigin-Name: 6744d9a37faffed59b4d5cb96c8671ec46a87ea7
2012-10-03 00:25:54 +00:00
drh
afcd522af8
More lenient handling of ORDER BY optimization in joins with mixed ASC/DESC.
...
This is a better and less restrictive fix for the problem addressed by
the previous check-in.
FossilOrigin-Name: abcf6a5d054559ee5a093ba39180c47b4958d9cd
2012-10-02 15:19:19 +00:00
drh
178eb61c6b
Only continue an ORDER BY optimization into inner loops if the equality
...
constraints on the inner loop match terms of an outer ordered index that
are actually used by the ORDER BY clause.
FossilOrigin-Name: b0e7b4df6c2a8c479f8d210bde50c737eaa248f0
2012-10-02 14:11:29 +00:00
drh
3be57d2aba
Factor an invariant out the loop termination condition for the ORDER BY
...
satisfied-by-index analyzer routine.
FossilOrigin-Name: 545bb33688663066cf3f09e4cdc4d5cfe59fb8db
2012-10-02 01:46:48 +00:00
drh
a578d048c6
Make sure the outer loop cursor numbers are recorded in time for them to be
...
used by the ORDER BY optimizer.
FossilOrigin-Name: 351dc8d9cab8a222f28fb865d3a7d1c622d60d6f
2012-10-02 01:25:16 +00:00
drh
1afcaaea7a
Improvements to the wheretrace output.
...
FossilOrigin-Name: 76b277655646a9fe0f336ff106157f1efcd32019
2012-10-02 01:10:00 +00:00
drh
04b85bc609
Minor changes to the query planner for improved test coverage.
...
FossilOrigin-Name: c12044df322283c9deb0d7dacd8a699ac53f27b6
2012-10-01 17:44:05 +00:00
drh
60441af4f2
Improved ORDER BY optimization when outer loops of a join return a single row.
...
FossilOrigin-Name: 62225b4a4c4bfe1820ef54cb202edf2cd866429f
2012-09-29 19:10:29 +00:00
drh
a9e3fc05f5
Fix some corner case behavior in the new ORDER BY optimization logic.
...
Remove the SQLITE_OrderByIdx bit from the
SQLITE_TESTCTRL_OPTIMIZATIONS mask, since enabling it caused many
TH3 tests to fail when the NO_OPT configuration parameter was engaged,
and since there really isn't any need to turn that optimization off.
The SQLITE_OrderByIdxJoin bit remains.
FossilOrigin-Name: 98b633717a1c9a08f6a1d00bc6bc891564ae7e9b
2012-09-27 23:27:23 +00:00
drh
5343b2d4a8
More test cases an bug fixes for the ORDER BY optimization of joins. All
...
veryquick tests now pass.
FossilOrigin-Name: 0d573320057b0903a5589cabfb1b1ece1c57958e
2012-09-27 19:53:38 +00:00
drh
6b10a6a7ed
Test cases and bug fixes applied to the ORDER BY optimization for joins.
...
Some test cases fail, but except for the new orderby1.test failures, all
failures appear to be issues with the tests, not with the core code.
FossilOrigin-Name: 75cda864ededb6dc0f84bd52ed3311753a58e351
2012-09-27 17:31:32 +00:00
drh
7e5418e4a4
Add more bits to the bit vector that is used to disable optimizations for
...
built-in test. Add specific bit patterns to disable ORDER BY using an
index in general and for joins. Use macros to test for bits in the
disabled-optimization bit vector, in order to make the code clearer.
FossilOrigin-Name: d2fcba1e143beca8c45724d2108870657c269e17
2012-09-27 15:05:54 +00:00