From 92a7291f28e8bd45592183b40752e4317ddb7709 Mon Sep 17 00:00:00 2001 From: drh Date: Wed, 1 Jun 2011 11:26:51 +0000 Subject: [PATCH] Toward version 3.7.5.1. This check-in updates the version number and also patches the pager so that it never spills cache while in WAL mode. The latter patch fixes ticket [2d1a5c67dfc23] and also prevents excessive WAL file sizes if the pager cache starts thrashing. A few test cases fail. FossilOrigin-Name: 2e5a912ad781f7554c718df6340c809472f87022 --- VERSION | 2 +- configure | 18 +++++++++--------- manifest | 34 ++++++++++++++-------------------- manifest.uuid | 2 +- src/pager.c | 13 ++++++------- test/walcrash2.test | 4 +++- tool/shell1.test | 2 +- 7 files changed, 35 insertions(+), 40 deletions(-) diff --git a/VERSION b/VERSION index aaf18d2948..32c78c29a1 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.7.5 +3.7.5.1 diff --git a/configure b/configure index 38343411eb..6eb6b432a6 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.62 for sqlite 3.7.5. +# Generated by GNU Autoconf 2.62 for sqlite 3.7.5.1. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. @@ -743,8 +743,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='sqlite' PACKAGE_TARNAME='sqlite' -PACKAGE_VERSION='3.7.5' -PACKAGE_STRING='sqlite 3.7.5' +PACKAGE_VERSION='3.7.5.1' +PACKAGE_STRING='sqlite 3.7.5.1' PACKAGE_BUGREPORT='' # Factoring default headers for most tests. @@ -1485,7 +1485,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures sqlite 3.7.5 to adapt to many kinds of systems. +\`configure' configures sqlite 3.7.5.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1550,7 +1550,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of sqlite 3.7.5:";; + short | recursive ) echo "Configuration of sqlite 3.7.5.1:";; esac cat <<\_ACEOF @@ -1666,7 +1666,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -sqlite configure 3.7.5 +sqlite configure 3.7.5.1 generated by GNU Autoconf 2.62 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1680,7 +1680,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by sqlite $as_me 3.7.5, which was +It was created by sqlite $as_me 3.7.5.1, which was generated by GNU Autoconf 2.62. Invocation command line was $ $0 $@ @@ -13942,7 +13942,7 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by sqlite $as_me 3.7.5, which was +This file was extended by sqlite $as_me 3.7.5.1, which was generated by GNU Autoconf 2.62. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -13995,7 +13995,7 @@ Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -sqlite config.status 3.7.5 +sqlite config.status 3.7.5.1 configured by $0, generated by GNU Autoconf 2.62, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/manifest b/manifest index 0411312b21..fe09f4323b 100644 --- a/manifest +++ b/manifest @@ -1,14 +1,11 @@ ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - -C SQLite\sversion\s3.7.5\srelease\scandidate\s2 -D 2011-01-28T17:03:50.592 +C Toward\sversion\s3.7.5.1.\s\sThis\scheck-in\supdates\sthe\sversion\snumber\sand\salso\npatches\sthe\spager\sso\sthat\sit\snever\sspills\scache\swhile\sin\sWAL\smode.\s\sThe\nlatter\spatch\sfixes\sticket\s[2d1a5c67dfc23]\sand\salso\sprevents\sexcessive\sWAL\nfile\ssizes\sif\sthe\spager\scache\sstarts\sthrashing.\s\sA\sfew\stest\scases\sfail. +D 2011-06-01T11:26:51.806 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in de6498556d536ae60bb8bb10e8c1ba011448658c F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 F Makefile.vxworks c85ec1d8597fe2f7bc225af12ac1666e21379151 F README cd04a36fbc7ea56932a4052d7d0b7f09f27c33d6 -F VERSION de8d3477dbf0d6cc226ccc6e046273627eb55fc5 +F VERSION 4d64d1231556eed819e7ab9837137181d4c9a8fe F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50 F addopcodes.awk 17dc593f791f874d2c23a0f9360850ded0286531 F art/2005osaward.gif 0d1851b2a7c1c9d0ccce545f3e14bca42d7fd248 @@ -25,7 +22,7 @@ F art/src_logo.gif 9341ef09f0e53cd44c0c9b6fc3c16f7f3d6c2ad9 F config.guess 226d9a188c6196f3033ffc651cbc9dcee1a42977 F config.h.in 868fdb48c028421a203470e15c69ada15b9ba673 F config.sub 9ebe4c3b3dab6431ece34f16828b594fb420da55 -F configure 0eb10c03a6536d8e5ce52ab70fda0a152d8a3262 x +F configure ade17ab3bfafa38924969ce25398d36ad1826c1c x F configure.ac 87a3c71bbe9c925381c154413eea7f3cdc397244 F contrib/sqlitecon.tcl 210a913ad63f9f991070821e599d600bd913e0ad F doc/lemon.html f0f682f50210928c07e562621c3b7e8ab912a538 @@ -165,7 +162,7 @@ F src/os_common.h a8f95b81eca8a1ab8593d23e94f8a35f35d4078f F src/os_os2.c 2e452c9f2ca507623ad351c33a8a8b27849b1863 F src/os_unix.c 1be46a35bad4bec5171e4de88aaff817260eb378 F src/os_win.c 9abdcdd925416d854eabb0996c96debd92abfef5 -F src/pager.c b0fcbe3038fd08b111e1cf1deddd5f42418004d8 +F src/pager.c f582ebb4493c9e0240b17a0729588aeb1e0c17f9 F src/pager.h 0ea59db2a33bc6c2c02cae34de33367e1effdf76 F src/parse.y 12b7ebd61ea54f0e1b1083ff69cc2c8ce9353d58 F src/pcache.c 09d38c44ab275db581f7a2f6ff8b9bc7f8c0faaa @@ -847,7 +844,7 @@ F test/walbak.test 4df1c7369da0301caeb9a48fa45997fd592380e4 F test/walbig.test e882bc1d014afffbfa2b6ba36e0f07d30a633ad0 F test/walcksum.test a37b36375c595e61bdb7e1ec49b5f0979b6fc7ce F test/walcrash.test e763841551d6b23677ccb419797c1589dcbdbaf5 -F test/walcrash2.test 019d60b89d96c1937adb2b30b850ac7e86e5a142 +F test/walcrash2.test 564b13f641f1c9cadb3814746897f0e0cb71a067 F test/walfault.test 81ed760def1c1573151d416b0d09178cf006f9fd F test/walhook.test ed00a40ba7255da22d6b66433ab61fab16a63483 F test/walmode.test 22ddccd073c817ac9ead62b88ac446e8dedc7d2c @@ -884,7 +881,7 @@ F tool/mksqlite3internalh.tcl 7b43894e21bcb1bb39e11547ce7e38a063357e87 F tool/omittest.tcl 27d6f6e3b1e95aeb26a1c140e6eb57771c6d794a F tool/opcodeDoc.awk b3a2a3d5d3075b8bd90b7afe24283efdd586659c F tool/restore_jrnl.tcl 6957a34f8f1f0f8285e07536225ec3b292a9024a -F tool/shell1.test c31b0814a9c543db51ca0cc63edb5e77ea532303 +F tool/shell1.test 5356d6f16443a132aa3f9b40d5fbf9ad998f9846 F tool/shell2.test 5dc76b8005b465f420fed8241621da7513060ff3 F tool/shell3.test 4fad469e8003938426355afdf34155f08c587836 F tool/shell4.test 35f9c3d452b4e76d5013c63e1fd07478a62f14ce @@ -901,14 +898,11 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P 682fe41efd3578e8c9abc7138b61f361c3adbe95 -R 7fccaf9f7c013ddef8926255f6aeb773 +P ed759d5a9edb3bba5f48f243df47be29e3fe8cd7 +R da076752a7e1f02af83cb61570d5ce6b +T *bgcolor * #8680d6 +T *branch * branch-3.7.5 +T *sym-branch-3.7.5 * +T -sym-trunk * U drh -Z 4223173e58f25d45d236e232b9c90989 ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.6 (GNU/Linux) - -iD8DBQFNQvb6oxKgR168RlERAtOTAJ9BaewewKXL3RGZUy5ycaHwjeEmJACeOPbw -/JKqOugR+37RH7HnLCo9DBk= -=kgPx ------END PGP SIGNATURE----- +Z e12c2a5626b356509b4abffe00bd5c71 diff --git a/manifest.uuid b/manifest.uuid index bccc723cb9..3cea811f73 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -ed759d5a9edb3bba5f48f243df47be29e3fe8cd7 \ No newline at end of file +2e5a912ad781f7554c718df6340c809472f87022 \ No newline at end of file diff --git a/src/pager.c b/src/pager.c index 80f3b0e771..b3a2207f1c 100644 --- a/src/pager.c +++ b/src/pager.c @@ -4168,13 +4168,12 @@ static int pagerStress(void *p, PgHdr *pPg){ pPg->pDirty = 0; if( pagerUseWal(pPager) ){ - /* Write a single frame for this page to the log. */ - if( subjRequiresPage(pPg) ){ - rc = subjournalPage(pPg); - } - if( rc==SQLITE_OK ){ - rc = pagerWalFrames(pPager, pPg, 0, 0, 0); - } + /* Never spill when in WAL mode. The entire transaction must + ** remain in cache. This is an alternative fix to ticket + ** [2d1a5c67dfc2] "Data loss on COMMIT in WAL mode". It also + ** prevents huge WAL files when a large transaction starts + ** thrashing the cache. */ + return SQLITE_OK; }else{ /* Sync the journal file if required. */ diff --git a/test/walcrash2.test b/test/walcrash2.test index 7116281c2d..806d16dd77 100644 --- a/test/walcrash2.test +++ b/test/walcrash2.test @@ -69,6 +69,8 @@ do_test walcrash2-1.1 { } file size test.db-wal } [wal_file_size 8 1024] + +if 0 { # WAL no longer spills transaction for {set nEntry 8} {$nEntry < 8192} {incr nEntry 8} { do_test walcrash2-1.2.[expr $nEntry/8] { set C [launch_testfixture] @@ -89,6 +91,7 @@ for {set nEntry 8} {$nEntry < 8192} {incr nEntry 8} { file size test.db-wal } [wal_file_size 16 1024] } +} do_test walcrash2-1.3 { sqlite3 db2 test.db execsql { SELECT count(*) FROM t1 } db2 @@ -96,4 +99,3 @@ do_test walcrash2-1.3 { catch { db2 close } finish_test - diff --git a/tool/shell1.test b/tool/shell1.test index e33013d67d..47c3584c9b 100644 --- a/tool/shell1.test +++ b/tool/shell1.test @@ -200,7 +200,7 @@ do_test shell1-1.15.3 { # -version show SQLite version do_test shell1-1.16.1 { catchcmd "-version test.db" "" -} {0 3.7.5} +} {0 3.7.5.1} #---------------------------------------------------------------------------- # Test cases shell1-2.*: Basic "dot" command token parsing. -- 2.39.5