/ Check-in [91113142]
Login

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

Overview
Comment:Fix the build for -DSQLITE_OMIT_VIRTUALTABLE
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 911131424857430d46784b167399ecf192584ca2
User & Date: drh 2016-06-23 12:35:04
Context
2016-06-23
16:48
Update the sqldiff utility so that if the --vtab switch is specified "rtree", "fts3", "fts4" and "fts5" tables are diff'd directly and the underlying real database tables ignored. Without this switch, all virtual tables are ignored and the diff is performed on the underlying real tables. check-in: b8671e94 user: dan tags: trunk
12:35
Fix the build for -DSQLITE_OMIT_VIRTUALTABLE check-in: 91113142 user: drh tags: trunk
2016-06-20
17:25
For a table on the rhs of a LEFT JOIN operator, do not include terms like "IS NULL" from the WHERE clause in the cursor-hint. These may be false for rows that the cursor would otherwise visit, but true for a row of all NULL values generated by the LEFT JOIN. check-in: 913e5956 user: dan tags: trunk
Changes
Hide Diffs Side-by-Side Diffs Show Whitespace Changes Patch

Changes to src/where.c.

  3236   3236       pNew->maskSelf = sqlite3WhereGetMask(&pWInfo->sMaskSet, pItem->iCursor);
  3237   3237       if( ((pItem->fg.jointype|priorJointype) & (JT_LEFT|JT_CROSS))!=0 ){
  3238   3238         /* This condition is true when pItem is the FROM clause term on the
  3239   3239         ** right-hand-side of a LEFT or CROSS JOIN.  */
  3240   3240         mPrereq = mPrior;
  3241   3241       }
  3242   3242       priorJointype = pItem->fg.jointype;
         3243  +#ifndef SQLITE_OMIT_VIRTUALTABLE
  3243   3244       if( IsVirtual(pItem->pTab) ){
  3244   3245         struct SrcList_item *p;
  3245   3246         for(p=&pItem[1]; p<pEnd; p++){
  3246   3247           if( mUnusable || (p->fg.jointype & (JT_LEFT|JT_CROSS)) ){
  3247   3248             mUnusable |= sqlite3WhereGetMask(&pWInfo->sMaskSet, p->iCursor);
  3248   3249           }
  3249   3250         }
  3250   3251         rc = whereLoopAddVirtual(pBuilder, mPrereq, mUnusable);
  3251         -    }else{
         3252  +    }else
         3253  +#endif /* SQLITE_OMIT_VIRTUALTABLE */
         3254  +    {
  3252   3255         rc = whereLoopAddBtree(pBuilder, mPrereq);
  3253   3256       }
  3254   3257       if( rc==SQLITE_OK ){
  3255   3258         rc = whereLoopAddOr(pBuilder, mPrereq, mUnusable);
  3256   3259       }
  3257   3260       mPrior |= pNew->maskSelf;
  3258   3261       if( rc || db->mallocFailed ) break;