-C Get\sLEMON\sworking\sagain\swhen\sYYSTACKDEPTH\sis\sgreater\sthan\szero.\s(CVS\s3739)
-D 2007-03-29T02:26:46
+C Bias\sthe\sb-tree\sbinary\ssearch\stoward\sthe\shigh\send.\s\sThe\scommon\scase\sis\sto\nappend\sdata\sand\sthis\sheuristic\smakes\sappend\srun\smuch\sfaster\sbecause\sthere\nare\sfewer\scomparisons.\s(CVS\s3740)
+D 2007-03-29T04:43:26
F Makefile.in 1fe3d0b46e40fd684e1e61f8e8056cefed16de9f
F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
F src/analyze.c 7d2b7ab9a9c2fd6e55700f69064dfdd3e36d7a8a
F src/attach.c a16ada4a4654a0d126b8223ec9494ebb81bc5c3c
F src/auth.c 902f4722661c796b97f007d9606bd7529c02597f
-F src/btree.c 27e62fc50dba2ac0b4210402804ac12321ad8e59
+F src/btree.c 434a3584766e85ca3b23d37adb9c457d83f5cf19
F src/btree.h 066444ee25bd6e6accb997bfd2cf5ace14dbcd00
F src/build.c d178bd7c8117f5f47694da9a0d5f336e85528180
F src/callback.c 31d22b4919c7645cbcbb1591ce2453e8c677c558
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
-P 06719b741ab1a2df0371f6d587563cc81eb8880a
-R 611325e102e7d55f3c74217e92a2ccd7
+P e72c81dbb309709462e49c4e3e90c3e16ead1265
+R 2f8c0ebcc5b977db1cd11a734857a630
U drh
-Z 7e0dc044f836d78b033cd61334a03256
+Z f092376d9c3cfc91e80b8841598ffc58
-e72c81dbb309709462e49c4e3e90c3e16ead1265
\ No newline at end of file
+a9877f616b24737152627841fcbd80cc28426f1e
\ No newline at end of file
** May you share freely, never taking more than you give.
**
*************************************************************************
-** $Id: btree.c,v 1.343 2007/03/27 14:05:23 drh Exp $
+** $Id: btree.c,v 1.344 2007/03/29 04:43:26 drh Exp $
**
** This file implements a external (disk-based) database using BTrees.
** For a detailed discussion of BTrees, refer to
*/
int sqlite3BtreeMoveto(BtCursor *pCur, const void *pKey, i64 nKey, int *pRes){
int rc;
- int tryRightmost;
rc = moveToRoot(pCur);
if( rc ) return rc;
assert( pCur->pPage );
assert( pCur->pPage->isInit );
- tryRightmost = pCur->pPage->intKey;
if( pCur->eState==CURSOR_INVALID ){
*pRes = -1;
assert( pCur->pPage->nCell==0 );
if( !pPage->intKey && pKey==0 ){
return SQLITE_CORRUPT_BKPT;
}
- while( lwr<=upr ){
+ pCur->idx = upr;
+ if( lwr<=upr ) for(;;){
void *pCellKey;
i64 nCellKey;
- pCur->idx = (lwr+upr)/2;
pCur->info.nSize = 0;
if( pPage->intKey ){
u8 *pCell;
- if( tryRightmost ){
- pCur->idx = upr;
- }
pCell = findCell(pPage, pCur->idx) + pPage->childPtrSize;
if( pPage->hasData ){
u32 dummy;
c = -1;
}else if( nCellKey>nKey ){
c = +1;
- tryRightmost = 0;
}else{
c = 0;
}
}else{
upr = pCur->idx-1;
}
+ if( lwr>upr ){
+ break;
+ }
+ pCur->idx = (lwr+upr)/2;
}
assert( lwr==upr+1 );
assert( pPage->isInit );