drh
459f63e7ed
Fix a bug (ticket [fc7bd6358f59]) that caused incorrect query results in
...
three way queries that involved comparing INTEGER and TEXT columns for
equality.
FossilOrigin-Name: 7097241c1220ada318f8eda938c3e3430b94a606
2013-03-06 01:55:27 +00:00
drh
5edf8435d3
Fix a potential NULL-pointer dereference following an OOM error
...
in the query planner logic for virtual tables with OR-connected terms.
FossilOrigin-Name: 71b6c26053fdf2a5a84116e005bad1f2ca873a66
2013-02-08 23:18:18 +00:00
drh
3667033bfc
Make sure the virtual tables that take advantage of IN operators sort the
...
RHS of the IN operator in the correct order according to the ORDER BY
clause.
FossilOrigin-Name: b016b7546d6fbfba06019398b9ac239b0cbe9086
2013-02-08 20:39:02 +00:00
drh
2d96b934c8
Loop through the elements on the RHS of an IN operator in reverse order when
...
the ORDER BY clauses specifies DESC.
FossilOrigin-Name: f78395c8896666bb1359b83fbcd58d5e3dbc39d3
2013-02-08 18:48:23 +00:00
drh
c3e552ff5c
Allow the "a=?1 OR a=?2" to "a IN (?1,?2)" transformation to work on virtual
...
tables again. This was formerly restricted because virtual tables could not
optimize IN terms. (See check-in [fad88e71cf195e].) But IN terms are now
used by virtual tables (as of check-in [3d65c70343]) so the restriction can
now be removed.
FossilOrigin-Name: a917c1f09254b54e03e31b119cc49c551269d82e
2013-02-08 16:04:19 +00:00
drh
1b8fc65b92
Allow an index to be used for sorting even if prior terms of the index
...
are constrained by IN operators.
FossilOrigin-Name: 98bf668ab1a8683b46ee8c94cb60f8215aabc517
2013-02-07 21:15:14 +00:00
drh
928d9c6209
Fix harmless compiler warnings.
...
FossilOrigin-Name: 4a7b4ee011fea911b981206c242e3d5553303b52
2013-02-07 09:33:56 +00:00
drh
eb5bc9261c
Add the ability to disable transitive constraints using the
...
sqlite3_test_control(SQLITE_TESTCTRL_OPTIMIZATIONS) interface.
FossilOrigin-Name: 593d67c8b0908daf7a70b2a310ed85515d384cbf
2013-01-17 16:43:33 +00:00
drh
63db0392ae
Avoid unnecessary collating sequence and affinity restrictions on the use
...
of transitivity. Add test cases to show that the restrictions are not
needed.
FossilOrigin-Name: 56549f45666b53876012df5c2bdf813474e10925
2013-01-17 16:18:55 +00:00
drh
738fc79dcf
Make more aggressive use of transitivity in optimizing queries. Add a test
...
case.
FossilOrigin-Name: d96762841a461e192fb2f317d684d000376350dd
2013-01-17 15:05:17 +00:00
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