/ Check-in [04507c17]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Clarification to a comment in where.c. No code changes.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:04507c176330a06b09dcafa35ec0ca7498f5ace7
User & Date: drh 2013-01-15 16:15:28
Context
2013-01-15
18:49
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. check-in: ac4e119a user: drh tags: trunk
16:15
Clarification to a comment in where.c. No code changes. check-in: 04507c17 user: drh tags: trunk
2013-01-11
09:58
Add another test for the fts4 content= option. check-in: 7e6007a0 user: dan tags: trunk
Changes
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

Changes to src/where.c.

  5101   5101       ** that do not use indices.  But this nRow reduction only happens if the
  5102   5102       ** table really is the innermost join.  
  5103   5103       **
  5104   5104       ** The second loop iteration is only performed if no optimal scan
  5105   5105       ** strategies were found by the first iteration. This second iteration
  5106   5106       ** is used to search for the lowest cost scan overall.
  5107   5107       **
  5108         -    ** Previous versions of SQLite performed only the second iteration -
  5109         -    ** the next outermost loop was always that with the lowest overall
  5110         -    ** cost. However, this meant that SQLite could select the wrong plan
  5111         -    ** for scripts such as the following:
         5108  +    ** Without the optimal scan step (the first iteration) a suboptimal
         5109  +    ** plan might be chosen for queries like this:
  5112   5110       **   
  5113   5111       **   CREATE TABLE t1(a, b); 
  5114   5112       **   CREATE TABLE t2(c, d);
  5115   5113       **   SELECT * FROM t2, t1 WHERE t2.rowid = t1.a;
  5116   5114       **
  5117   5115       ** The best strategy is to iterate through table t1 first. However it
  5118   5116       ** is not possible to determine this with a simple greedy algorithm.