Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Minor changes to the query planner for improved test coverage. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
c12044df322283c9deb0d7dacd8a699a |
User & Date: | drh 2012-10-01 17:44:05.444 |
Context
2012-10-01
| ||
18:44 | Add SQLITE_FCNTL_BUSYHANDLER. Invoked to provide access to the busy-handler callback to custom VFS implementations. (check-in: 1262d2f471 user: dan tags: trunk) | |
17:44 | Minor changes to the query planner for improved test coverage. (check-in: c12044df32 user: drh tags: trunk) | |
12:44 | Omit the sqlite3GetReservedNoMutex() routine in build configurations where it is not used. (check-in: f193dbb6b9 user: drh tags: trunk) | |
Changes
Changes to src/where.c.
︙ | ︙ | |||
1437 1438 1439 1440 1441 1442 1443 | */ static int indexIsUniqueNotNull(Index *pIdx, int nSkip){ Table *pTab = pIdx->pTable; int i; if( pIdx->onError==OE_None ) return 0; for(i=nSkip; i<pIdx->nColumn; i++){ int j = pIdx->aiColumn[i]; | > | | 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 | */ static int indexIsUniqueNotNull(Index *pIdx, int nSkip){ Table *pTab = pIdx->pTable; int i; if( pIdx->onError==OE_None ) return 0; for(i=nSkip; i<pIdx->nColumn; i++){ int j = pIdx->aiColumn[i]; assert( j>=0 && j<pTab->nCol ); if( pTab->aCol[j].notNull==0 ) return 0; } return 1; } /* ** This function searches the expression list passed as the second argument ** for an expression of type TK_COLUMN that refers to the same column and |
︙ | ︙ | |||
1501 1502 1503 1504 1505 1506 1507 | int base, /* Cursor number for the table pIdx is on */ ExprList *pDistinct, /* The DISTINCT expressions */ int nEqCol /* Number of index columns with == */ ){ Bitmask mask = 0; /* Mask of unaccounted for pDistinct exprs */ int i; /* Iterator variable */ | > | | 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 | int base, /* Cursor number for the table pIdx is on */ ExprList *pDistinct, /* The DISTINCT expressions */ int nEqCol /* Number of index columns with == */ ){ Bitmask mask = 0; /* Mask of unaccounted for pDistinct exprs */ int i; /* Iterator variable */ assert( pDistinct!=0 ); if( pIdx->zName==0 || pDistinct->nExpr>=BMS ) return 0; testcase( pDistinct->nExpr==BMS-1 ); /* Loop through all the expressions in the distinct list. If any of them ** are not simple column references, return early. Otherwise, test if the ** WHERE clause contains a "col=X" clause. If it does, the expression ** can be ignored. If it does not, and the column does not belong to the ** same table as index pIdx, return early. Finally, if there is no |
︙ | ︙ | |||
3093 3094 3095 3096 3097 3098 3099 | ** space to 1/16th of its original size (rangeDiv==16). ** ** bSort: ** Boolean. True if there is an ORDER BY clause that will require an ** external sort (i.e. scanning the index being evaluated will not ** correctly order records). ** | | | 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 | ** space to 1/16th of its original size (rangeDiv==16). ** ** bSort: ** Boolean. True if there is an ORDER BY clause that will require an ** external sort (i.e. scanning the index being evaluated will not ** correctly order records). ** ** bDist: ** Boolean. True if there is a DISTINCT clause that will require an ** external btree. ** ** bLookup: ** Boolean. True if a table lookup is required for each index entry ** visited. In other words, true if this is not a covering index. ** This is always false for the rowid primary key index of a table. |
︙ | ︙ |