]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Cover an extra case in sqlite3PagerMovepage(). (CVS 3796)
authordanielk1977 <danielk1977@noemail.net>
Mon, 2 Apr 2007 14:19:16 +0000 (14:19 +0000)
committerdanielk1977 <danielk1977@noemail.net>
Mon, 2 Apr 2007 14:19:16 +0000 (14:19 +0000)
FossilOrigin-Name: 7313688bd03141381067c36800edf1621a2ea05e

manifest
manifest.uuid
test/all.test
test/autovacuum.test

index 4c866817846a020cdb1bdc45623de018cfd8a070..67a5759c750cfb3d1d27c7c08cd246fd8dd4802b 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sfor\s#2281.\sThis\swas\sa\sproblem\swith\sthe\stest-case\sonly.\s(CVS\s3795)
-D 2007-04-02T12:29:01
+C Cover\san\sextra\scase\sin\ssqlite3PagerMovepage().\s(CVS\s3796)
+D 2007-04-02T14:19:16
 F Makefile.in 2f2c3bf69faf0ae7b8e8af4f94f1986849034530
 F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935
 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
@@ -134,7 +134,7 @@ F src/vtab.c 7fbda947e28cbe7adb3ba752a76ca9ef29936750
 F src/where.c 25e0dbb96c6980d11cc756c2b4abdfda80cd67a5
 F tclinstaller.tcl 046e3624671962dc50f0481d7c25b38ef803eb42
 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
-F test/all.test 60267b055e82de4fb8b841eabb014bc2f836a4eb
+F test/all.test 6a03095322e93427a3677ce5daaa20f45640d1f0
 F test/alter.test a2cc30e844cb3b5d203416962f56f78fc11b1978
 F test/alter2.test 33fb74e0470455ed6903f8d6e63256c7402cebb1
 F test/alter3.test a6eec8f454be9b6ce73d8d7dc711453675a10ce7
@@ -149,7 +149,7 @@ F test/attachmalloc.test 03eeddd06e685ddbe975efd51824e4941847e5f4
 F test/auth.test 66923137cf78475f5671b5e6e6274935e055aea0
 F test/auth2.test 8da06f0ffcfd98154dda78e0f3b35a6503c27b64
 F test/autoinc.test 60005a676e3e4e17dfa9dbd08aa0b76587ff97e3
-F test/autovacuum.test 5f5d843ff856b7dcfdf3f36b7e1acb04895047ce
+F test/autovacuum.test 05f528c3bf98d086df7d86fddeb9d85037254913
 F test/autovacuum_crash.test 05a63b8805b20cfba7ace82856ce4ccdda075a31
 F test/autovacuum_ioerr.test c46a76869cb6eddbbb40b419b2b6c4c001766b1f
 F test/autovacuum_ioerr2.test 2f8a3fb31f833fd0ca86ad4ad98913c73e807572
@@ -448,7 +448,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9
 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
 F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
-P 84077fa1602756339a262bc4ab51b6b487edc637
-R b4a7c87e67bebc1d353d9c4afaced009
+P c036db6251ca4671fc3388a4f37955c18adeca1d
+R b312892bc4400eb87f0210f0a4ec2915
 U danielk1977
-Z 56dcad87d661517797c12a6081958287
+Z 42486ade40db0dea35717849aebedc28
index 20a0c43d22903c404b14b71d0aff3d5f883c6e7d..c3b8265540c05666b8eb1ad0a056b0ef47cd2064 100644 (file)
@@ -1 +1 @@
-c036db6251ca4671fc3388a4f37955c18adeca1d
\ No newline at end of file
+7313688bd03141381067c36800edf1621a2ea05e
\ No newline at end of file
index 21181ac58007fefcc9029376f82020deb158721c..6b93bfccd4f8f4f5c7bac7cd2e41d77be003d753 100644 (file)
@@ -10,7 +10,7 @@
 #***********************************************************************
 # This file runs all tests.
 #
-# $Id: all.test,v 1.38 2007/03/27 12:04:06 drh Exp $
+# $Id: all.test,v 1.39 2007/04/02 14:19:16 danielk1977 Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -121,6 +121,7 @@ if {$LeakList!=""} {
 #
 if {$::tcl_platform(platform)=="unix"} {
   source $testdir/crash.test
+  source $testdir/crash2.test
   ifcapable !default_autovacuum {
     source $testdir/autovacuum_crash.test
   }
index ce0bb4d0459049f88f239da936304e976d03aa91..9e55c2e1eed319561ed7a5bf240627b286a67e25 100644 (file)
@@ -11,7 +11,7 @@
 # This file implements regression tests for SQLite library.  The
 # focus of this file is testing the SELECT statement.
 #
-# $Id: autovacuum.test,v 1.24 2006/08/12 12:33:15 drh Exp $
+# $Id: autovacuum.test,v 1.25 2007/04/02 14:19:16 danielk1977 Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -579,4 +579,55 @@ do_test autovacuum-6.1 {
 
 }
 
+#---------------------------------------------------------------------
+# Test cases autovacuum-7.X test the case where a page must be moved
+# and the destination location collides with at least one other
+# entry in the page hash-table (internal to the pager.c module. 
+#
+do_test autovacuum-7.1 {
+  db close
+  file delete -force test.db
+  file delete -force test.db-journal
+  sqlite3 db test.db
+
+  execsql {
+    PRAGMA auto_vacuum=1;
+    CREATE TABLE t1(a, b, PRIMARY KEY(a, b));
+    INSERT INTO t1 VALUES(randstr(400,400),randstr(400,400));
+    INSERT INTO t1 SELECT randstr(400,400), randstr(400,400) FROM t1; -- 2
+    INSERT INTO t1 SELECT randstr(400,400), randstr(400,400) FROM t1; -- 4
+    INSERT INTO t1 SELECT randstr(400,400), randstr(400,400) FROM t1; -- 8
+    INSERT INTO t1 SELECT randstr(400,400), randstr(400,400) FROM t1; -- 16
+    INSERT INTO t1 SELECT randstr(400,400), randstr(400,400) FROM t1; -- 32
+  }
+
+  expr {[file size test.db] / 1024}
+} {73}
+
+do_test autovacuum-7.2 {
+  execsql {
+    CREATE TABLE t2(a, b, PRIMARY KEY(a, b));
+    INSERT INTO t2 SELECT randstr(400,400), randstr(400,400) FROM t1; -- 2
+    CREATE TABLE t3(a, b, PRIMARY KEY(a, b));
+    INSERT INTO t3 SELECT randstr(400,400), randstr(400,400) FROM t1; -- 2
+    CREATE TABLE t4(a, b, PRIMARY KEY(a, b));
+    INSERT INTO t4 SELECT randstr(400,400), randstr(400,400) FROM t1; -- 2
+    CREATE TABLE t5(a, b, PRIMARY KEY(a, b));
+    INSERT INTO t5 SELECT randstr(400,400), randstr(400,400) FROM t1; -- 2
+  }
+  expr {[file size test.db] / 1024}
+} {354}
+
+do_test autovacuum-7.3 {
+  db close
+  sqlite3 db test.db
+  execsql {
+    BEGIN;
+    DELETE FROM t4;
+    COMMIT;
+    SELECT count(*) FROM t1;
+  }
+  expr {[file size test.db] / 1024}
+} {286}
+
 finish_test