]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Bug fixes. Trying to make it go faster. (CVS 254)
authordrh <drh@noemail.net>
Tue, 18 Sep 2001 02:02:23 +0000 (02:02 +0000)
committerdrh <drh@noemail.net>
Tue, 18 Sep 2001 02:02:23 +0000 (02:02 +0000)
FossilOrigin-Name: 8f28a83abac59a2161d486c96386b8df726468d0

manifest
manifest.uuid
src/pager.c
src/vdbe.c
src/where.c
test/rowid.test

index 47dc8c4a4c1af28b4259569476f95a0973d7c25f..760bcab1a7e978c3eaf07393c55348368d10a822 100644 (file)
--- 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
index 85dad7300b668137612f9ca985e72620d3eb6802..2b3a20e9fb1e540b86bc9807c459c93b2d78a2e1 100644 (file)
@@ -1 +1 @@
-b30f2b5e150a219c374f88d13386dbda190ad9ed
\ No newline at end of file
+8f28a83abac59a2161d486c96386b8df726468d0
\ No newline at end of file
index 0b8ac722e8e693871e69b01dc3ffd1075c2f9794..503fa6765d86c1bf70ee8fa89c148cb62c46d89c 100644 (file)
@@ -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;
index cbdae741b097d1aee7234946360720e49e1494c8..aa05157bf4da4b96b0389b2b1604dc3dd94e6814 100644 (file)
@@ -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 <ctype.h>
@@ -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++;
index d03be7eb8d22685e87c07b567bb9679557a0196b..6105349dba6994e1c5c42f4927b5caadadd7969d 100644 (file)
@@ -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 ){
index b835f026fadcf605d07b58c1863b8e634aa8cdb9..c8ac7838e57d13f28cd57f19467bcbf8664f5578 100644 (file)
@@ -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