SQLite

Check-in [ab832336f4]
Login

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

Overview
Comment:Make SQLite slightly more likely to use an auto-index within a sub-query.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: ab832336f4a28193c4d2b61e833564822a7b86a8
User & Date: dan 2015-03-16 20:40:00.496
Context
2015-03-17
16:59
Transient locks in WAL mode can now block in order to resolve priority inversions. (check-in: ec2f46de53 user: drh tags: trunk)
2015-03-16
20:40
Make SQLite slightly more likely to use an auto-index within a sub-query. (check-in: ab832336f4 user: dan tags: trunk)
18:08
Fix typo of test prefix in the new WHERE test file. (check-in: 34779c528f user: mistachkin tags: trunk)
Changes
Side-by-Side Diff Ignore Whitespace Patch
Changes to src/where.c.
5997
5998
5999
6000
6001
6002
6003
6004
6005


6006
6007

6008
6009
6010
6011
6012
6013
6014
5997
5998
5999
6000
6001
6002
6003


6004
6005
6006

6007
6008
6009
6010
6011
6012
6013
6014







-
-
+
+

-
+







    memset(aSortCost, 0, sizeof(LogEst) * nOrderBy);
  }
  assert( aSortCost==0 || &pSpace[nSpace]==(char*)&aSortCost[nOrderBy] );
  assert( aSortCost!=0 || &pSpace[nSpace]==(char*)pX );

  /* Seed the search with a single WherePath containing zero WhereLoops.
  **
  ** TUNING: Do not let the number of iterations go above 25.  If the cost
  ** of computing an automatic index is not paid back within the first 25
  ** TUNING: Do not let the number of iterations go above 28.  If the cost
  ** of computing an automatic index is not paid back within the first 28
  ** rows, then do not use the automatic index. */
  aFrom[0].nRow = MIN(pParse->nQueryLoop, 46);  assert( 46==sqlite3LogEst(25) );
  aFrom[0].nRow = MIN(pParse->nQueryLoop, 48);  assert( 48==sqlite3LogEst(28) );
  nFrom = 1;
  assert( aFrom[0].isOrdered==0 );
  if( nOrderBy ){
    /* If nLoop is zero, then there are no FROM terms in the query. Since
    ** in this case the query may return a maximum of one row, the results
    ** are already in the requested order. Set isOrdered to nOrderBy to
    ** indicate this. Or, if nLoop is greater than zero, set isOrdered to