From: danielk1977 Date: Mon, 2 Apr 2007 14:19:16 +0000 (+0000) Subject: Cover an extra case in sqlite3PagerMovepage(). (CVS 3796) X-Git-Tag: version-3.6.10~2374 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=aeba431fa92f57806b66b2f8194f5490cc61ba5a;p=thirdparty%2Fsqlite.git Cover an extra case in sqlite3PagerMovepage(). (CVS 3796) FossilOrigin-Name: 7313688bd03141381067c36800edf1621a2ea05e --- diff --git a/manifest b/manifest index 4c86681784..67a5759c75 100644 --- 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 diff --git a/manifest.uuid b/manifest.uuid index 20a0c43d22..c3b8265540 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -c036db6251ca4671fc3388a4f37955c18adeca1d \ No newline at end of file +7313688bd03141381067c36800edf1621a2ea05e \ No newline at end of file diff --git a/test/all.test b/test/all.test index 21181ac580..6b93bfccd4 100644 --- a/test/all.test +++ b/test/all.test @@ -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 } diff --git a/test/autovacuum.test b/test/autovacuum.test index ce0bb4d045..9e55c2e1ee 100644 --- a/test/autovacuum.test +++ b/test/autovacuum.test @@ -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