-C In\sthe\sanalyze_as_needed\spragma,\savoid\srunning\sunnecessary\sOP_LoadAnalysis\s\nand\sOP_Expire\sopcodes.\s\sMake\sthe\sanalyze_as_needed\spragma\sresponsive\sto\sthe\nschema\sname.
-D 2017-02-18T02:19:02.183
+C Fix\serrors\sin\sthe\stable\sresize\sdetection.
+D 2017-02-18T02:42:54.892
F Makefile.in edb6bcdd37748d2b1c3422ff727c748df7ffe918
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc a89ea37ab5928026001569f056973b9059492fe2
F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
F src/alter.c 3b23977620ce9662ac54443f65b87ba996e36121
-F src/analyze.c eb50045b8f2e0d8a0a36a2158a65afe098d9a3bb
+F src/analyze.c e01e5362ba2ac8430ab7833022afb6081ade8315
F src/attach.c 8c476f8bd5d2afe11d925f890d30e527e5b0ce43
F src/auth.c 930b376a9c56998557367e6f7f8aaeac82a2a792
F src/backup.c faf17e60b43233c214aae6a8179d24503a61e83b
F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33
F src/btmutex.c 0e9ce2d56159b89b9bc8e197e023ee11e39ff8ca
-F src/btree.c e7d724b02365d88920171caf0c919aa96d9b19e3
+F src/btree.c a4ab1fb5cdeea88c4f76216e41cfecfa505c8c43
F src/btree.h bf64dfeeddeebdb775a5eba0098bbc00d073290d
F src/btreeInt.h cd55d39d9916270837a88c12e701047cba0729b0
F src/build.c 2e05d0360568f40dc583461f2211f020ff282ee4
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P bfbdd07409688fac4ccddbab3639745f6152e23d
-R 1c1b7451b307830f90322e6d51007af7
+P 882599a4a7ea92c9e7752e0745475508e58a11c3
+R cf9f80fd407d6e9e7cfac9c2957017b5
U drh
-Z 2d7c806c83a06bb426974433c00a5916
+Z 225df65ba1e601aba9cbc975df68b3a8
sqlite3OpenTable(pParse, iTabCur, iDb, pTab, OP_OpenRead);
if( szOld>0 ){
addrSizeCk = sqlite3VdbeAddOp3(v, OP_IfSmaller, iTabCur, 0, szOld);
+ VdbeCoverage(v);
}
sqlite3VdbeLoadString(v, regTabname, pTab->zName);
Index *pIdx;
if( (pTab->tabFlags & TF_StatsUsed)==0 ) return 0;
- /* If TF_StatsUsed is true, then we might need to reanalyze. But
- ** only reanalyze if the table size has grown by a factor of 10 or more */
- *pThreshold = pTab->nRowLogEst + 33; assert( sqlite3LogEst(10)==33 );
+ /* If TF_StatsUsed is true, then we might need to reanalyze.
+ ** TUNING: Only reanalyze if the table size has grown by a factor
+ ** of 25 or more. */
+ *pThreshold = pTab->nRowLogEst + 46; assert( sqlite3LogEst(25)==46 );
/* Except, if any of the indexes of the table do not have valid
** sqlite_stat1 entries, then set the size threshold to zero to
assert( cursorOwnsBtShared(pCur) );
assert( sqlite3_mutex_held(pCur->pBtree->db->mutex) );
if( pCur->eState!=CURSOR_VALID ) return -1;
- if( pCur->apPage[pCur->iPage-1]->leaf==0 ) return -1;
- for(n=1, i=0; i<pCur->iPage; i++){
+ if( pCur->apPage[pCur->iPage]->leaf==0 ) return -1;
+ for(n=1, i=0; i<=pCur->iPage; i++){
n *= pCur->apPage[i]->nCell;
}
return n;