From 1eaa2694bfb308943a4fe6daaa89909aed04ba18 Mon Sep 17 00:00:00 2001 From: drh Date: Tue, 18 Sep 2001 02:02:23 +0000 Subject: [PATCH] Bug fixes. Trying to make it go faster. (CVS 254) FossilOrigin-Name: 8f28a83abac59a2161d486c96386b8df726468d0 --- manifest | 18 +++++++++--------- manifest.uuid | 2 +- src/pager.c | 6 +++--- src/vdbe.c | 8 ++++++-- src/where.c | 4 ++-- test/rowid.test | 13 ++++++++++--- 6 files changed, 31 insertions(+), 20 deletions(-) diff --git a/manifest b/manifest index 47dc8c4a4c..760bcab1a7 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Enchanced\stransaction\stests\s(CVS\s253) -D 2001-09-17T20:48:30 +C Bug\sfixes.\s\sTrying\sto\smake\sit\sgo\sfaster.\s(CVS\s254) +D 2001-09-18T02:02:23 F Makefile.in a7053596881af6f2590a816ad4eb8fbbf20724a7 F README 51f6a4e7408b34afa5bc1c0485f61b6a4efb6958 F VERSION 3861a21803fcd9eb92a403027b0da2bb7add4de1 @@ -18,7 +18,7 @@ F src/main.c 71ca839b90869c8c13db52fd08b0d0e80dae3288 F src/md5.c 52f677bfc590e09f71d07d7e327bd59da738d07c F src/os.c 2e0daeca8a8c75f122d41f894698f5e1b258b69c F src/os.h 3b21772e76df0f3998c5a968a2a0d23b9d4551fe -F src/pager.c 3871a5d34808b703e2d8ae2799fda208aa204051 +F src/pager.c c7db91e4e44bbf3e13ecea658e47b670d1f26e29 F src/pager.h a0d4c5ae271914aa07b62aee0707997d6932b6ca F src/parse.y 2bcf47bb8e6afd8bc10aebd555fa07b73905bee4 F src/printf.c b1e22a47be8cdf707815647239991e08e8cb69f9 @@ -36,9 +36,9 @@ F src/test3.c f46bad555db7a6a25be332a96ac99e4d68a1b0c5 F src/tokenize.c 2adf0568edf41b3d3c2fcb541ac49bd6e662da0c F src/update.c a1952ad5d53379fa2b2d12efae5993ddb85a1ddb F src/util.c a09c3c12aa0259c12e7385313f527895ba3cdbf9 -F src/vdbe.c 33dcb7068dc6d80f7eb699922c6749abb32bf75e +F src/vdbe.c 21f5d1c5418cbf740eefec10b875632e848eb7c1 F src/vdbe.h 900b59b46afdfb9c048a2a31a4478f380ab8504e -F src/where.c db42a5abdef686b4c3e1b51d0f85a6f8926521e5 +F src/where.c cce952b6a2459ac2296e3432876a4252d2fe3b87 F test/all.test a2320eb40b462f25bd3e33115b1cabf3791450dd F test/btree.test bb1d1caf834aa22a208ce6cc7d8d8bd0e106cd59 F test/btree2.test ddc13a8de33461391da8403ded3e6b091f08dab4 @@ -57,7 +57,7 @@ F test/pager.test 59bbc4e3d489529ed33db6e15595789e51056077 F test/printf.test 93ecd43cc48e863a325560f36c3b2741f5fe0308 F test/quick.test b6ec50f808efc06595fd324bf4f3fabadb9c7e9c F test/quote.test 286db944717afa9a9bf829dd85e59185c65d5435 -F test/rowid.test b6ce03dd39523b0f213fb9b05b5d544f73f002ce +F test/rowid.test 427bfbbe9684fe7a2f851aa05badaae6d4972ce8 F test/select1.test e0c3ff05f44233cde7918cb22ba4be05ea7a08ec F test/select2.test f91c903e2bab0e9d45274855a981eebf846d5e32 F test/select3.test 5e1fe8e5a4e63fb2827ab3b89527e0fd4ae35259 @@ -95,7 +95,7 @@ F www/opcode.tcl cb3a1abf8b7b9be9f3a228d097d6bf8b742c2b6f F www/sqlite.tcl cb0d23d8f061a80543928755ec7775da6e4f362f F www/tclsqlite.tcl 06f81c401f79a04f2c5ebfb97e7c176225c0aef2 F www/vdbe.tcl 0c8aaa529dd216ccbf7daaabd80985e413d5f9ad -P 602ea4f9f641070592c788ce22859b849739b42e -R 9d47f76cff786cc38ee15dd98f00be51 +P b30f2b5e150a219c374f88d13386dbda190ad9ed +R 07bb1a4a448dedf9e2b45c7aa5ee5ac1 U drh -Z 49979fa205c7e6b07a58fef67abee514 +Z ba1b972f8330f9b56b7e933eb997f9fb diff --git a/manifest.uuid b/manifest.uuid index 85dad7300b..2b3a20e9fb 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b30f2b5e150a219c374f88d13386dbda190ad9ed \ No newline at end of file +8f28a83abac59a2161d486c96386b8df726468d0 \ No newline at end of file diff --git a/src/pager.c b/src/pager.c index 0b8ac722e8..503fa6765d 100644 --- a/src/pager.c +++ b/src/pager.c @@ -18,7 +18,7 @@ ** file simultaneously, or one process from reading the database while ** another is writing. ** -** @(#) $Id: pager.c,v 1.20 2001/09/16 00:13:27 drh Exp $ +** @(#) $Id: pager.c,v 1.21 2001/09/18 02:02:23 drh Exp $ */ #include "sqliteInt.h" #include "pager.h" @@ -947,14 +947,12 @@ void *sqlitepager_lookup(Pager *pPager, Pgno pgno){ ** removed. */ int sqlitepager_unref(void *pData){ - Pager *pPager; PgHdr *pPg; /* Decrement the reference count for this page */ pPg = DATA_TO_PGHDR(pData); assert( pPg->nRef>0 ); - pPager = pPg->pPager; pPg->nRef--; REFINFO(pPg); @@ -962,6 +960,8 @@ int sqlitepager_unref(void *pData){ ** destructor and add the page to the freelist. */ if( pPg->nRef==0 ){ + Pager *pPager; + pPager = pPg->pPager; pPg->pNextFree = 0; pPg->pPrevFree = pPager->pLast; pPager->pLast = pPg; diff --git a/src/vdbe.c b/src/vdbe.c index cbdae741b0..aa05157bf4 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -30,7 +30,7 @@ ** But other routines are also provided to help in building up ** a program instruction by instruction. ** -** $Id: vdbe.c,v 1.70 2001/09/16 00:13:27 drh Exp $ +** $Id: vdbe.c,v 1.71 2001/09/18 02:02:23 drh Exp $ */ #include "sqliteInt.h" #include @@ -2332,7 +2332,11 @@ case OP_NewRecno: { v = ux.i; rx = sqliteBtreeMoveto(p->aCsr[i].pCursor, &v, sizeof(v), &res); cnt++; - }while( cnt<10 && rx==SQLITE_OK && res==0 ); + }while( cnt<200 && rx==SQLITE_OK && res==0 ); + if( rx==SQLITE_OK && res==0 ){ + rc = SQLITE_FULL; + goto abort_due_to_error; + } } VERIFY( NeedStack(p, p->tos+1); ) p->tos++; diff --git a/src/where.c b/src/where.c index d03be7eb8d..6105349dba 100644 --- a/src/where.c +++ b/src/where.c @@ -13,7 +13,7 @@ ** the WHERE clause of SQL statements. Also found here are subroutines ** to generate VDBE code to evaluate expressions. ** -** $Id: where.c,v 1.20 2001/09/16 00:13:27 drh Exp $ +** $Id: where.c,v 1.21 2001/09/18 02:02:23 drh Exp $ */ #include "sqliteInt.h" @@ -344,7 +344,7 @@ WhereInfo *sqliteWhereBegin( if( i==pTabList->nId-1 && pushKey ){ haveKey = 1; }else{ - sqliteVdbeAddOp(v, OP_MoveTo, base+idx, 0, 0, 0); + sqliteVdbeAddOp(v, OP_NotFound, base+idx, brk, 0, 0); haveKey = 0; } }else if( pIdx==0 ){ diff --git a/test/rowid.test b/test/rowid.test index b835f026fa..c8ac7838e5 100644 --- a/test/rowid.test +++ b/test/rowid.test @@ -12,7 +12,7 @@ # focus of this file is testing the magic ROWID column that is # found on all tables. # -# $Id: rowid.test,v 1.4 2001/09/16 00:13:28 drh Exp $ +# $Id: rowid.test,v 1.5 2001/09/18 02:02:23 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -61,6 +61,13 @@ do_test rowid-1.7 { set sql "SELECT x FROM t1 WHERE _rowid_==$x2rowid(1)" execsql $sql } {1} +do_test rowid-1.7.1 { + while 1 { + set norow [expr {int(rand()*1000000)}] + if {$norow!=$x2rowid(1) && $norow!=$x2rowid(3)} break + } + execsql "SELECT x FROM t1 WHERE rowid=$norow" +} {} do_test rowid-1.8 { global x2rowid set v [execsql {SELECT x, oid FROM t1 order by x}] @@ -235,13 +242,13 @@ do_test rowid-4.5 { SELECT t1.x, fcnt() FROM t2, t1 WHERE t2.y==256 AND t1.rowid==t2.rowid } -} {4 2} +} {4 1} do_test rowid-4.5.1 { execsql { SELECT t1.x, fcnt() FROM t2, t1 WHERE t1.OID==t2.rowid AND t2.y==81 } -} {3 2} +} {3 1} do_test rowid-4.6 { execsql { SELECT t1.x FROM t1, t2