Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Optimization: Try to avoid unnecessary btree searching when repositioning a cursor to the next row. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
ee793d30c1dc1f78f49e6230d17750ec |
User & Date: | drh 2017-01-23 16:56:18.240 |
Context
2017-01-23
| ||
18:40 | Add the --mmap option to the kvtest utility program. (check-in: 4948f7e6d2 user: drh tags: trunk) | |
16:56 | Optimization: Try to avoid unnecessary btree searching when repositioning a cursor to the next row. (check-in: ee793d30c1 user: drh tags: trunk) | |
15:58 | Add the missing SQLITE_API symbol to test_delete.c (it is not added automatically as this file is not part of the amalgamation). (check-in: 7a4f512ddf user: dan tags: trunk) | |
2017-01-21
| ||
21:47 | A better implementation of the moveto-neighbor optimization that checks for nearby rows on adjacent pages. (Closed-Leaf check-in: 2c4ecb85a4 user: drh tags: btree-moveto-neighbor) | |
Changes
Changes to src/btree.c.
︙ | ︙ | |||
5087 5088 5089 5090 5091 5092 5093 | if( pIdxKey==0 && pCur->eState==CURSOR_VALID && (pCur->curFlags & BTCF_ValidNKey)!=0 ){ if( pCur->info.nKey==intKey ){ *pRes = 0; return SQLITE_OK; } | > | | | > > > > > > > > > > > > > > > > | 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 | if( pIdxKey==0 && pCur->eState==CURSOR_VALID && (pCur->curFlags & BTCF_ValidNKey)!=0 ){ if( pCur->info.nKey==intKey ){ *pRes = 0; return SQLITE_OK; } if( pCur->info.nKey<intKey ){ if( (pCur->curFlags & BTCF_AtLast)!=0 ){ *pRes = -1; return SQLITE_OK; } /* If the requested key is one more than the previous key, then ** try to get there using sqlite3BtreeNext() rather than a full ** binary search. This is an optimization only. The correct answer ** is still obtained without this ase, only a little more slowely */ if( pCur->info.nKey+1==intKey && !pCur->skipNext ){ *pRes = 0; rc = sqlite3BtreeNext(pCur, pRes); if( rc ) return rc; if( *pRes==0 ){ getCellInfo(pCur); if( pCur->info.nKey==intKey ){ return SQLITE_OK; } } } } } if( pIdxKey ){ xRecordCompare = sqlite3VdbeFindCompare(pIdxKey); pIdxKey->errCode = 0; assert( pIdxKey->default_rc==1 |
︙ | ︙ |