]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge the 3.7.1 pre-release snapshot changes as of [2010-08-18]
authordrh <drh@noemail.net>
Wed, 18 Aug 2010 00:24:09 +0000 (00:24 +0000)
committerdrh <drh@noemail.net>
Wed, 18 Aug 2010 00:24:09 +0000 (00:24 +0000)
into the apple-osx branch.

FossilOrigin-Name: 866e9286ae4226b2bec40ef18c672a41768abf1f

22 files changed:
1  2 
configure
ext/rtree/rtree.c
manifest
manifest.uuid
src/func.c
src/main.c
src/os_unix.c
src/pager.c
src/pragma.c
src/prepare.c
src/test1.c
src/vdbe.c
src/vdbeapi.c
test/exclusive.test
test/pager1.test
test/pagerfault.test
test/shared.test
test/tester.tcl
test/wal.test
test/wal2.test
test/wal3.test
test/walmode.test

diff --cc configure
index c8c0c1f99f9203e237502fb50dc493901e2508d7,e0c7fa0c007b48a535063a0018cb0a5f771e3780..d21a70db0528beee43876de32c4816dbd26308a7
mode 100644,100755..100644
+++ b/configure
@@@ -1,6 -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.0.1.
 -# Generated by GNU Autoconf 2.62 for sqlite 3.7.1.
++# Generated by GNU Autoconf 2.62 for sqlite >>>>>>> BEGIN MERGE CONFLICT3.7.1============================3.7.0.1<<<<<<< END MERGE CONFLICT.
  #
  # 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 +743,8 @@@ SHELL=${CONFIG_SHELL-/bin/sh
  # Identity of this package.
  PACKAGE_NAME='sqlite'
  PACKAGE_TARNAME='sqlite'
- PACKAGE_VERSION='3.7.0.1'
- PACKAGE_STRING='sqlite 3.7.0.1'
 -PACKAGE_VERSION='3.7.1'
 -PACKAGE_STRING='sqlite 3.7.1'
++PACKAGE_VERSION='>>>>>>> BEGIN MERGE CONFLICT3.7.1============================3.7.0.1<<<<<<< END MERGE CONFLICT'
++PACKAGE_STRING='sqlite >>>>>>> BEGIN MERGE CONFLICT3.7.1============================3.7.0.1<<<<<<< END MERGE CONFLICT'
  PACKAGE_BUGREPORT=''
  
  # Factoring default headers for most tests.
@@@ -1487,7 -1487,7 +1487,7 @@@ if test "$ac_init_help" = "long"; the
    # 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.0.1 to adapt to many kinds of systems.
 -\`configure' configures sqlite 3.7.1 to adapt to many kinds of systems.
++\`configure' configures sqlite >>>>>>> BEGIN MERGE CONFLICT3.7.1============================3.7.0.1<<<<<<< END MERGE CONFLICT to adapt to many kinds of systems.
  
  Usage: $0 [OPTION]... [VAR=VALUE]...
  
  
  if test -n "$ac_init_help"; then
    case $ac_init_help in
-      short | recursive ) echo "Configuration of sqlite 3.7.0.1:";;
 -     short | recursive ) echo "Configuration of sqlite 3.7.1:";;
++     short | recursive ) echo "Configuration of sqlite >>>>>>> BEGIN MERGE CONFLICT3.7.1============================3.7.0.1<<<<<<< END MERGE CONFLICT:";;
     esac
    cat <<\_ACEOF
  
  test -n "$ac_init_help" && exit $ac_status
  if $ac_init_version; then
    cat <<\_ACEOF
- sqlite configure 3.7.0.1
 -sqlite configure 3.7.1
++sqlite configure >>>>>>> BEGIN MERGE CONFLICT3.7.1============================3.7.0.1<<<<<<< END MERGE CONFLICT
  generated by GNU Autoconf 2.62
  
  Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@@ -1684,7 -1684,7 +1684,7 @@@ cat >config.log <<_ACEO
  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.0.1, which was
 -It was created by sqlite $as_me 3.7.1, which was
++It was created by sqlite $as_me >>>>>>> BEGIN MERGE CONFLICT3.7.1============================3.7.0.1<<<<<<< END MERGE CONFLICT, which was
  generated by GNU Autoconf 2.62.  Invocation command line was
  
    $ $0 $@
@@@ -13972,7 -13972,7 +13972,7 @@@ exec 6>&
  # 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.0.1, which was
 -This file was extended by sqlite $as_me 3.7.1, which was
++This file was extended by sqlite $as_me >>>>>>> BEGIN MERGE CONFLICT3.7.1============================3.7.0.1<<<<<<< END MERGE CONFLICT, which was
  generated by GNU Autoconf 2.62.  Invocation command line was
  
    CONFIG_FILES    = $CONFIG_FILES
@@@ -14025,7 -14025,7 +14025,7 @@@ Report bugs to <bug-autoconf@gnu.org>.
  _ACEOF
  cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
  ac_cs_version="\\
- sqlite config.status 3.7.0.1
 -sqlite config.status 3.7.1
++sqlite config.status >>>>>>> BEGIN MERGE CONFLICT3.7.1============================3.7.0.1<<<<<<< END MERGE CONFLICT
  configured by $0, generated by GNU Autoconf 2.62,
    with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
  
Simple merge
diff --cc manifest
index 276891a494b8d8e7fb2b5a63c906aacdb19276b8,7a2812507fe73186e2d59843a92bb8ce5b29a931..93b92a86183a59780be4ac10d39b9ad3886a8fdb
+++ b/manifest
@@@ -1,11 -1,14 +1,14 @@@
- C Updating\sapple-osx\swith\sminor\ssource\sfixes,\sdatabase\struncate\sand\sreplace\sprivate\scalls\sand\sa\sbunch\sof\sconditionalization\sfor\stests\srunning\sin\sdifferent\senvironments
- D 2010-08-18T00:09:48
- F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
+ -----BEGIN PGP SIGNED MESSAGE-----
+ Hash: SHA1
 -C Remove\sa\sNEVER()\sthat\sis\sactually\sreachable.
 -D 2010-08-17T19:49:14
++C Merge\sthe\s3.7.1\spre-release\ssnapshot\schanges\sas\sof\s[2010-08-18]\s\ninto\sthe\sapple-osx\sbranch.
++D 2010-08-18T00:24:10
+ F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 -F Makefile.in ec08dc838fd8110fe24c92e5130bcd91cbb1ff2e
 +F Makefile.in 9e1872338c526a5d6797f19dd04388f2a321e3d6
- F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
- F Makefile.vxworks 4314cde20a1d9460ec5083526ea975442306ae7e
+ F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
+ F Makefile.vxworks c85ec1d8597fe2f7bc225af12ac1666e21379151
  F README cd04a36fbc7ea56932a4052d7d0b7f09f27c33d6
- F VERSION 84a3e1c74ef99b2c08ceb1142780ac63d6e44c3d
+ F VERSION ddbfd1d7e557883fe2fd646cffe46c28cebcff48
  F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
  F addopcodes.awk 17dc593f791f874d2c23a0f9360850ded0286531
  F art/2005osaward.gif 0d1851b2a7c1c9d0ccce545f3e14bca42d7fd248
@@@ -21,8 -24,8 +24,8 @@@ F art/src_logo.gif 9341ef09f0e53cd44c0c
  F config.guess 226d9a188c6196f3033ffc651cbc9dcee1a42977
  F config.h.in 868fdb48c028421a203470e15c69ada15b9ba673
  F config.sub 9ebe4c3b3dab6431ece34f16828b594fb420da55
- F configure 37e90c7b9b88007f064f690ed79e64e228a51158
- F configure.ac 14740970ddb674d92a9f5da89083dff1179014ff
 -F configure e0e4abf2b1a2c53a3b46e9ee9eb859fad58df4c4 x
++F configure 6058ffa62c2ad5a77621f62adfe19b45852f6511
+ F configure.ac 699040cc9abb7465dca5a2972bc89d227fd8f734
  F contrib/sqlitecon.tcl 210a913ad63f9f991070821e599d600bd913e0ad
  F doc/lemon.html f0f682f50210928c07e562621c3b7e8ab912a538
  F doc/pager-invariants.txt 870107036470d7c419e93768676fae2f8749cf9e
@@@ -78,7 -81,7 +81,7 @@@ F ext/icu/README.txt bf8461d8cdc6b8f514
  F ext/icu/icu.c 850e9a36567bbcce6bd85a4b68243cad8e3c2de2
  F ext/icu/sqliteicu.h 728867a802baa5a96de7495e9689a8e01715ef37
  F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761
- F ext/rtree/rtree.c 99ce980d111729c4f438ec883dc2048ae8614ab5
 -F ext/rtree/rtree.c f2fbb6470155316027a8b888e8623bc1819fe443
++F ext/rtree/rtree.c f76dba3edc1bd5f261f9d71e455fb62619099151
  F ext/rtree/rtree.h 834dbcb82dc85b2481cde6a07cdadfddc99e9b9e
  F ext/rtree/rtree1.test 51bb0cd0405970501e63258401ae5ad235a4f468
  F ext/rtree/rtree2.test 7b665c44d25e51b3098068d983a39902b2e2d7a1
@@@ -124,25 -124,25 +127,25 @@@ F src/callback.c da3c38d0ef5d7f04fae371
  F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
  F src/ctime.c 4f3aadad62c6c9f0d4e5a96718516ac4e3c598df
  F src/date.c 5dd8448a0bfea8d31fb14cff487d0c06ff8c8b20
- F src/delete.c 41cb4f78557810eecc167b7e2317de7e12d20929
- F src/expr.c 96bda574284ead53ba7af6334414b4e958cc866a
+ F src/delete.c 7ed8a8c8b5f748ece92df173d7e0f7810c899ebd
+ F src/expr.c 9532d71de52ad7a5523b0a4b9d7d64874560e328
  F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
- F src/fkey.c e2116672a6bd610dc888e27df292ebc7999c9bb0
- F src/func.c 2448e7118bd35a4de4caefbccb4dde7ef9542bd0
+ F src/fkey.c 58bbf52c6ddd3f64ca40a3230f9e548a83a5cb16
 -F src/func.c 464b0dc70618b896c402c574eb04bc5eacf35341
++F src/func.c 62373e488ecf8b29a28548ff9d922a9fae36b808
  F src/global.c 02335177cf6946fe5525c6f0755cf181140debf3
  F src/hash.c 458488dcc159c301b8e7686280ab209f1fb915af
  F src/hash.h 2894c932d84d9f892d4b4023a75e501f83050970
  F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08
- F src/insert.c d9476f23f85a20eea3cc25a4b9f9cbae77a33bf2
+ F src/insert.c a4995747c062256582a90b4f87f716e11b067050
  F src/journal.c 552839e54d1bf76fb8f7abe51868b66acacf6a0e
 -F src/legacy.c a199d7683d60cef73089e892409113e69c23a99f
 +F src/legacy.c 015826a958f690302d27e096a68d50b3657e4201
  F src/lempar.c 7f026423f4d71d989e719a743f98a1cbd4e6d99e
- F src/loadext.c 1c7a61ce1281041f437333f366a96aa0d29bb581
- F src/main.c 5f44f46e02a19ce7e4a0e8bc16cb2c9a63d7a077
- F src/malloc.c 09c3777bf733a387bec6aa344e455eb4e8ecf47e
+ F src/loadext.c 6d422ea91cf3d2d00408c5a8f2391cd458da85f8
 -F src/main.c 99622181f36d68e9f2a851c7b34263b3dcd03470
++F src/main.c 414f59006f66a665169327700ceb27c2fd0e7c72
+ F src/malloc.c 19a468460c7df72de245f10c06bd0625777b7c83
  F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
 -F src/mem1.c 89d4ea8d5cdd55635cbaa48ad53132af6294cbb2
 +F src/mem1.c 0f36f1eecd786240924a56f8796ffa850d47a96f
- F src/mem2.c 2ee7bdacda8299b5a91cff9f7ee3e46573195c38
+ F src/mem2.c 12c91260fd2320eda9355dea5445b137f848c05b
  F src/mem3.c 9b237d911ba9904142a804be727cc6664873f8a3
  F src/mem5.c eb7a5cb98915dd7a086fa415ce3a5a0f20d0acff
  F src/memjournal.c 4a93a25ad9f76c40afa070ffd7187eb3a5fd7aee
@@@ -157,45 -157,44 +160,45 @@@ F src/os.c 60178f518c4d6c0dcb59f7292232
  F src/os.h 9dbed8c2b9c1f2f2ebabc09e49829d4777c26bf9
  F src/os_common.h a8f95b81eca8a1ab8593d23e94f8a35f35d4078f
  F src/os_os2.c 72d0b2e562952a2464308c4ce5f7913ac10bef3e
- F src/os_unix.c b7267d7fa3b77306bcebcd6bb2a322ebf06e4d21
- F src/os_win.c 1f8b0a1a5bcf6289e7754d0d3c16cec16d4c93ab
- F src/pager.c c0f3c60b701a794344961700da7c4e2ae23d79a8
- F src/pager.h 879fdde5a102d2f21a3135d6f647530b21c2796c
- F src/parse.y 220a11ac72e2c9dffbf4cbe5fe462f328bd8d884
 -F src/os_unix.c 11194cbcf6a57456e58022dc537ab8c3497d9bb9
++F src/os_unix.c 3853edc254c464c040232a0b422b8f513205399a
+ F src/os_win.c 51cb62f76262d961ea4249489383d714501315a7
 -F src/pager.c 3c0f1bd2f6870b2b98f540470d39cde9c5c964d2
++F src/pager.c e75ccadfe01cf67e25a0abd5343cd84d7373dd71
+ F src/pager.h ef8c8f71ab022cc2fff768a1175dd32355be9dcd
+ F src/parse.y 12b7ebd61ea54f0e1b1083ff69cc2c8ce9353d58
  F src/pcache.c 1e9aa2dbc0845b52e1b51cc39753b6d1e041cb07
  F src/pcache.h c683390d50f856d4cd8e24342ae62027d1bb6050
- F src/pcache1.c 3a7c28f46a61b43ff0b5c087a7983c154f4b264c
- F src/pragma.c 055115ce2ba78af1aee2b973d947172a036f7a98
- F src/prepare.c e81fd00d882e849498b0927a046cd06aab7bd502
- F src/printf.c 5f5b65a83e63f2096a541a340722a509fa0240a7
+ F src/pcache1.c 638844c118163e3a10e1e3265703adf74870312d
 -F src/pragma.c 8b24ce00a93de345b6c3bd1e1e2cfba9f63d2325
 -F src/prepare.c ce4c35a2b1d5fe916e4a46b70d24a6e997d7c4c6
++F src/pragma.c 3dbb254a99d7a5ccaff8eb1f8689556ff82fe6d0
++F src/prepare.c 23b5da0608820c9f76aa61d4955ebdbd23ffda36
+ F src/printf.c 8ae5082dd38a1b5456030c3755ec3a392cd51506
  F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
  F src/resolve.c 1c0f32b64f8e3f555fe1f732f9d6f501a7f05706
  F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697
- F src/select.c 4903ff1bbd08b55cbce00ea43c645530de41b362
- F src/shell.c fd4ccdb37c3b68de0623eb938a649e0990710714
- F src/sqlite.h.in 8b05aef506d9bc7fc7da1572744e3174cb16ed59
+ F src/select.c 8add6cab889fc02e1492eda8dba462ccf11f51dd
+ F src/shell.c 8517fc1f9c59ae4007e6cc8b9af91ab231ea2056
+ F src/sqlite.h.in 2d72a6242df41c517e38eec8791abcf5484a36f1
 +F src/sqlite3_private.h 2a814d17913732831acf13e7e87860105a3416e4
  F src/sqlite3ext.h 69dfb8116af51b84a029cddb3b35062354270c89
- F src/sqliteInt.h d9e42f2029d4c526f9ba960bda1980ef17429c30
- F src/sqliteLimit.h 196e2f83c3b444c4548fc1874f52f84fdbda40f3
- F src/status.c 4df6fe7dce2d256130b905847c6c60055882bdbe
+ F src/sqliteInt.h e33b15e8176442bf7484f0e716edfd1ce03b2979
+ F src/sqliteLimit.h 4ae9b005144400984cbcafd4d7c09659bb2af92a
+ F src/status.c 496913d4e8441195f6f2a75b1c95993a45b9b30b
  F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e
- F src/tclsqlite.c ae1e4fb653c91ddad7e2534d209711a12604ccc4
- F src/test1.c 8d65857cd33db9baa6f276ce6fcd76c98c798261
- F src/test2.c e3f564ab1e9fd0b47b0c9e23e7054e38bf0836cf
+ F src/tclsqlite.c 5cd96419fb6c771006f064196ccc70c29d01bec7
 -F src/test1.c 55005c9781b157b1d215ba145768783b9abae78c
++F src/test1.c 6abff878520c77f10891b06c36a57b3226ebc3d4
+ F src/test2.c 80d323d11e909cf0eb1b6fbb4ac22276483bcf31
  F src/test3.c 4c21700c73a890a47fc685c1097bfb661346ac94
- F src/test4.c ad03bb987ddedce928f4258c1e7fa4109a73497d
- F src/test5.c cc55900118fa4add8ec9cf69fc4225a4662f76b1
+ F src/test4.c 0528360b5025688002a5feb6be906ddce52eaaee
+ F src/test5.c e1a19845625144caf038031234a12185e40d315c
  F src/test6.c c7256cc21d2409486d094277d5b017e8eced44ba
- F src/test7.c 3f2d63e4ccf97f8c2cf1a7fa0a3c8e2e2a354e6e
- F src/test8.c f959db9a22d882013b64c92753fa793b2ce3bdea
+ F src/test7.c d67f65d82815eb0b57699b122ca0145dbea55bbb
+ F src/test8.c 6b1d12912a04fe6fca8c45bb9c3ea022f4352228
  F src/test9.c bea1e8cf52aa93695487badedd6e1886c321ea60
  F src/test_async.c 0612a752896fad42d55c3999a5122af10dcf22ad
  F src/test_autoext.c 30e7bd98ab6d70a62bb9ba572e4c7df347fe645e
 -F src/test_backup.c c129c91127e9b46e335715ae2e75756e25ba27de
 +F src/test_backup.c 64fd6173ad99daade1227aa17c3ca0d18fa5e5fa
  F src/test_btree.c 47cd771250f09cdc6e12dda5bc71bc0b3abc96e2
 -F src/test_config.c 5a11c51af2156e2d07186930b36f2b8239a4393f
 +F src/test_config.c 91e758b037c7c58a6e3b3ce6babae883666174e9
- F src/test_demovfs.c da81a5f7785bb352bda7911c332a983ec4f17f27
+ F src/test_demovfs.c 0aed671636735116fc872c5b03706fd5612488b5
  F src/test_devsym.c e7498904e72ba7491d142d5c83b476c4e76993bc
  F src/test_func.c 13b582345fb1185a93e46c53310fae8547dcce20
  F src/test_hexio.c 1237f000ec7a491009b1233f5c626ea71bce1ea2
@@@ -222,19 -221,19 +225,19 @@@ F src/update.c 1521162d20c2994af1fdc883
  F src/utf.c 1baeeac91707a4df97ccc6141ec0f808278af685
  F src/util.c 32aebf04c10e51ad3977a928b7416bed671b620b
  F src/vacuum.c 241a8386727c1497eba4955933356dfba6ff8c9f
- F src/vdbe.c a4c6eed89bb8332aa5ac4828e38e30e7c833477a
- F src/vdbe.h 471f6a3dcec4817ca33596fe7f6654d56c0e75f3
- F src/vdbeInt.h 19ebc8c2a2e938340051ee65af3f377fb99102d1
- F src/vdbeapi.c a4e1b491545b8927d54c96b5ac8e44e460e2b7d5
- F src/vdbeaux.c 7f99c1f00e4b31e8b28d8a87ecc2322bb46ae99c
 -F src/vdbe.c 66c262a923915e596379b1d597178e04c5d719e4
++F src/vdbe.c 60ef76968e7ab2288ee1e39573a090e549fd8f3d
+ F src/vdbe.h 4de0efb4b0fdaaa900cf419b35c458933ef1c6d2
+ F src/vdbeInt.h ffd68c4d4229227a5089bec53a1c635146177abc
 -F src/vdbeapi.c d0f4407e465f261780ad725c1caece7d66a6aa35
++F src/vdbeapi.c 232d20465aa606c12520840597361279c7a96236
+ F src/vdbeaux.c c73bcefcebfd3d2cf91bf6a41ef0fb0d884814c6
  F src/vdbeblob.c 258a6010ba7a82b72b327fb24c55790655689256
- F src/vdbemem.c 5e579abf6532001dfbee0e640dc34eae897a9807
+ F src/vdbemem.c e5673f81a2381b35c60e73ef0a8502be2ab1041e
  F src/vdbetrace.c 864cef96919323482ebd9986f2132435115e9cc2
- F src/vtab.c a0f8a40274e4261696ef57aa806de2776ab72cda
- F src/wal.c 0925601f3299c2941a67c9cfff41ee710f70ca82
- F src/wal.h 906c85760598b18584921fe08008435aa4eeeeb2
+ F src/vtab.c 0e8e0cb30dffb078367e843e84e37ef99236c7e4
+ F src/wal.c 109c45210e5b01c6fd3de92805488a2f6895e17f
+ F src/wal.h 96669b645e27cd5a111ba59f0cae7743a207bc3c
  F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f
- F src/where.c 903a7828a0a7de03b5d0f1b5eff222d8d5b138f1
+ F src/where.c 7db3e41c2a846f9deeb24f1bbb75461b4010b7b5
  F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
  F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87
  F test/all.test 6745008c144bd2956d58864d21f7b304689c1cce
@@@ -351,7 -350,7 +354,7 @@@ F test/enc.test e54531cd6bf941ee6760be0
  F test/enc2.test 6d91a5286f59add0cfcbb2d0da913b76f2242398
  F test/enc3.test 5c550d59ff31dccdba5d1a02ae11c7047d77c041
  F test/eval.test bc269c365ba877554948441e91ad5373f9f91be3
- F test/exclusive.test b8ac927ca1067abd0044703aca2d00cd56d518ab
 -F test/exclusive.test b1f9012cabc124af947165d15ffa62ad20f63db8
++F test/exclusive.test 9e62270fdf967870921053e2ec0f293b67c140a4
  F test/exclusive2.test fcbb1c9ca9739292a0a22a3763243ad6d868086b
  F test/exec.test e949714dc127eaa5ecc7d723efec1ec27118fdd7
  F test/expr.test 9f521ae22f00e074959f72ce2e55d46b9ed23f68
@@@ -473,8 -473,8 +477,8 @@@ F test/join5.test 86675fc2919269aa923c8
  F test/join6.test bf82cf3f979e9eade83ad0d056a66c5ed71d1901
  F test/journal1.test 36f2d1bb9bf03f790f43fbdb439e44c0657fab19
  F test/journal2.test 50a3604768494d4a337f194f0a9480e7c57dcb72
 -F test/journal3.test ff175219be1b02d2f7e54297ad7e491b7533edb6
 +F test/journal3.test 7cfbd86429305c96c9d985665320db5364764d96
- F test/jrnlmode.test 2d5a8b6d68de8512f522532731d90ca96912f3b7
+ F test/jrnlmode.test e3fe6c4a2c3213d285650dc8e33aab7eaaa5ce53
  F test/jrnlmode2.test a19e28de1a6ec898067e46a122f1b71c9323bf00
  F test/jrnlmode3.test cfcdb12b90e640a23b92785a002d96c0624c8710
  F test/keyword1.test a2400977a2e4fde43bf33754c2929fda34dbca05
@@@ -489,13 -489,12 +493,13 @@@ F test/lock.test 842e80b6be816c79525a20
  F test/lock2.test 5242d8ac4e2d59c403aebff606af449b455aceff
  F test/lock3.test f271375930711ae044080f4fe6d6eda930870d00
  F test/lock4.test c82268c031d39345d05efa672f80b025481b3ae5
 -F test/lock5.test b2abb5e711bc59b0eae00f6c97a36ec9f458fada
 +F test/lock5.test d0d313f059ae5661726d3f197ba6ed8f69257d8e
  F test/lock6.test 8df56060f396151777390982422c800d026e1722
  F test/lock7.test 64006c84c1c616657e237c7ad6532b765611cf64
- F test/lock_common.tcl e7013c6208f5fa818735c324eb0249b4c0f317cf
+ F test/lock_common.tcl 57727421a6a850443944cbadfdf5a6dd9e4ac81c
 +F test/lock_proxy.test 9ea4307b186949fcfd012e4cd44149d2b6360da6
  F test/lookaside.test 382e7bc2fab23d902c8eafb1b9ed7ababfff75a6
 -F test/main.test 9d7bbfcc1b52c88ba7b2ba6554068ecf9939f252
 +F test/main.test 753e2b772c041bd8dbd17c7e4132b3981378eaab
  F test/make-where7.tcl 05c16b5d4f5d6512881dfec560cb793915932ef9
  F test/malloc.test 927e6c8668a1d48c23aa6189bda02aff5a1b83de
  F test/malloc3.test 4bc57f850b212f706f3e1b37c4eced1d5a727cd1
@@@ -543,16 -542,17 +547,17 @@@ F test/notify3.test d60923e186e0900f481
  F test/notnull.test cc7c78340328e6112a13c3e311a9ab3127114347
  F test/null.test a8b09b8ed87852742343b33441a9240022108993
  F test/openv2.test af02ed0a9cbc0d2a61b8f35171d4d117e588e4ec
- F test/pager1.test 8343530e91cf617b3157dac05531fa4038e9a263
- F test/pager2.test f5c757c271ce642d36a393ecbfb3aef1c240dcef
- F test/pagerfault.test c1d176326ce244db157ce9c3ba128be2a9b172d6
 -F test/pager1.test 6922029d71a8090169c71a67a141b6b94ad17d50
++F test/pager1.test 3c43e01a1daa7a843b8be832b87e719363f585f2
+ F test/pager2.test 0fbb6b6dc40ce1fecfe758c555a748ad2e9beaa3
+ F test/pager3.test 3856d9c80839be0668efee1b74811b1b7f7fc95f
 -F test/pagerfault.test f025fbe0cbab8f3aec6cc5676af60d7b488f868c
++F test/pagerfault.test 01e6fd28134f8c000273a5040dce1e089f5ae3a3
  F test/pagerfault2.test 1f79ea40d1133b2683a2f811b00f2399f7ec2401
  F test/pageropt.test 8146bf448cf09e87bb1867c2217b921fb5857806
  F test/pagesize.test 76aa9f23ecb0741a4ed9d2e16c5fa82671f28efb
  F test/pcache.test 4118a183908ecaed343a06fcef3ba82e87e0129d
  F test/pcache2.test 0d85f2ab6963aee28c671d4c71bec038c00a1d16
- F test/permutations.test 3fe47c21c32b294b2354e702a25bfbff65747bb1
+ F test/permutations.test 17498d1219f922d5a6da893a94c4dc7766fb2426
 -F test/pragma.test ed78d200f65c6998df51196cb8c39d5300570f24
 +F test/pragma.test 66a412d365188cebac3e4e2075eaf8f5d6eb87a2
  F test/pragma2.test 5364893491b9231dd170e3459bfc2e2342658b47
  F test/printf.test 05970cde31b1a9f54bd75af60597be75a5c54fea
  F test/progress.test 5b075c3c790c7b2a61419bc199db87aaf48b8301
@@@ -588,9 -588,9 +593,9 @@@ F test/select8.test 391de11bdd52339c305
  F test/select9.test 74c0fb2c6eecb0219cbed0cbe3df136f8fbf9343
  F test/selectA.test 06d1032fa9009314c95394f2ca2e60d9f7ae8532
  F test/selectB.test f305cc6660804cb239aab4e2f26b0e288b59958b
- F test/selectC.test 33bb5673a8141df193c6fd56e6de7fea38b8d2ee
+ F test/selectC.test f9bf1bc4581b5b8158caa6e4e4f682acb379fb25
  F test/server1.test f5b790d4c0498179151ca8a7715a65a7802c859c
- F test/shared.test a192585f23f5b9aab2e16fe6f11af79893353a62
 -F test/shared.test b9114eaea7e748a3a4c8ff7b9ca806c8f95cef3e
++F test/shared.test e5ed27551ba06b28e851101683f0caef1445f4ac
  F test/shared2.test d6ba4ca1827ea36a1ac23a99e3c36eeac9165450
  F test/shared3.test d69bdd5f156580876c5345652d21dc2092e85962
  F test/shared4.test d0fadacb50bb6981b2fb9dc6d1da30fa1edddf83
@@@ -621,10 -621,10 +626,10 @@@ F test/sync.test ded6b39d8d8ca3c0c55185
  F test/table.test 04ba066432430657712d167ebf28080fe878d305
  F test/tableapi.test 7262a8cbaa9965d429f1cbd2747edc185fa56516
  F test/tclsqlite.test 8c154101e704170c2be10f137a5499ac2c6da8d3
 -F test/tempdb.test 800c36623d67a2ad1f58784b9c5644e0405af6e6
 +F test/tempdb.test 285dda9fdf10730702549e8aa19c9258bbf753b8
  F test/temptable.test f42121a0d29a62f00f93274464164177ab1cc24a
  F test/temptrigger.test b0273db072ce5f37cf19140ceb1f0d524bbe9f05
- F test/tester.tcl faae2f58058f129fa13992bdf728ee672d513588
 -F test/tester.tcl 6135019fcfac363ea0e11aee670cc97080ab578e
++F test/tester.tcl fc391eaf41d13b83084b2433abfbe3228ff92b30
  F test/thread001.test a3e6a7254d1cb057836cb3145b60c10bf5b7e60f
  F test/thread002.test afd20095e6e845b405df4f2c920cb93301ca69db
  F test/thread003.test b824d4f52b870ae39fc5bae4d8070eca73085dca
@@@ -783,24 -785,25 +790,25 @@@ F test/vtabE.test 7c4693638d7797ce2eda1
  F test/vtab_alter.test 9e374885248f69e251bdaacf480b04a197f125e5
  F test/vtab_err.test 0d4d8eb4def1d053ac7c5050df3024fd47a3fbd8
  F test/vtab_shared.test 0eff9ce4f19facbe0a3e693f6c14b80711a4222d
- F test/wal.test 93cbc7a85563b2445940b77bf20d527755e6fc9d
- F test/wal2.test 86d38974445365f082fdc1c41cd8151f6d83685d
- F test/wal3.test c5d29ae29989b87dfe583b96c839a824d830e8e4
 -F test/wal.test 5847943563e4a38aa9ceff12891a52bdda17f3a6
 -F test/wal2.test 223f3e14d475730af772a7f5862d4bcfa7565c3a
 -F test/wal3.test 695ea0f6c516423c611891df9a285aacd33344e3
 -F test/wal4.test 3404b048fa5e10605facaf70384e6d2943412e30
++F test/wal.test 06430c11a0732b84231e30b466cc4265a57c07ea
++F test/wal2.test 998e1807c7bea96f1a5246adf670d02137118339
++F test/wal3.test 2bc5bed33ba16db805ee00185c083a7c24070fe2
 +F test/wal4.test 6a68c45bc1ca24a3592ec449ddcb92b29d0e0e87
  F test/wal_common.tcl 895d76138043b86bdccf36494054bdabcf65837b
 -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/walfault.test 05c470688d742688e455dd56816bd6bcffa298f8
 -F test/walhook.test ed00a40ba7255da22d6b66433ab61fab16a63483
 -F test/walmode.test 4ecd37284f245247f7935896ab66f6943f0432a0
 +F test/walbak.test 767e1c9e0ea0cfb907873b332883e66e187fa4bc
 +F test/walbig.test 78ac493db2abdb65b9c6cace5b851cc32df1d449
 +F test/walcksum.test cf6787f2ee1a6a3da6f0c2b20b9ede5153e4e03f
 +F test/walcrash.test 80c1cc3173a0ef09d8303fa556cb0187a36d82ea
 +F test/walcrash2.test 929c99d14ee2e3e3ef82585058968a8b12f72706
 +F test/walfault.test 60527645638532a565a8e729db287ef0dba85ece
 +F test/walhook.test c934ac5219fee2b4e7653d291db9107b8dc73bba
- F test/walmode.test 72517eb4f787c21b0478e608009642405885d613
++F test/walmode.test c326079dd35481bbf1bbcf0f74a2d16463c97e49
+ F test/walshared.test 985b4a3406b2b2dace1d52a42d26a11dd6900981
 -F test/walslow.test d21625e2e99e11c032ce949e8a94661576548933
 -F test/walthread.test a25a393c068a2b42b44333fa3fdaae9072f1617c
 +F test/walslow.test 989854bc5c214700a9f2d545bb158643813b8881
 +F test/walthread.test e6e32e93ccebfa401dfc0dd930c79daa3472b0ae
  F test/where.test de337a3fe0a459ec7c93db16a519657a90552330
  F test/where2.test 43d4becaf5a5df854e6c21d624a1cb84c6904554
- F test/where3.test aa44a9b29e8c9f3d7bb94a3bb3a95b31627d520d
+ F test/where3.test 3bf8006d441b66a57bee02bb420423f84eb8fde3
  F test/where4.test e9b9e2f2f98f00379e6031db6a6fca29bae782a2
  F test/where5.test fdf66f96d29a064b63eb543e28da4dfdccd81ad2
  F test/where6.test 5da5a98cec820d488e82708301b96cb8c18a258b
@@@ -842,7 -846,14 +851,14 @@@ F tool/speedtest2.tcl ee2149167303ba8e9
  F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
  F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
  F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
- P f88c6367d2f96cc93846ba38e6b963a1a3936e8d
- R 5e13346496ee8c75e29f49b7f6c975c4
- U adam
- Z 6d6d71585a30456468bba06c8dd3f59f
 -P 3f8c068a41b01f59d7f5d56f3bced78587f4d26c
 -R 0e975e64194b772586d783ae23f541c3
++P 5e2ee7db0f7a2a042b182336438107e2248d7b88 acb171d4cfef2fec8833f761019f5c81f0d138a0
++R 947bd4c119b9d5f55074dc6610886e81
+ U drh
 -Z 7c3874a9d62d92c19dbda87e69ee4cca
++Z 964ffe986640ee03584034c0fbd63d28
+ -----BEGIN PGP SIGNATURE-----
+ Version: GnuPG v1.4.6 (GNU/Linux)
 -iD8DBQFMaue9oxKgR168RlERAu71AJ9Nk4H9NiTuF/IHZPG8buHkH0saeACfS7El
 -cdIbCKIWYZrkomUAPmV/H70=
 -=c7oq
++iD8DBQFMaygtoxKgR168RlERAh8BAJ0Sc7lcQ318/YZu4lIkJpwUbxBirgCgiK/F
++nDAJI3FVvDVZNT4ltJLHPkQ=
++=ltft
+ -----END PGP SIGNATURE-----
diff --cc manifest.uuid
index b71ba2360097ffff98a606642b568c03cdbbe885,66d60a01a4a378463a55ee70f787dc50ab51b037..116ede08d0e57745e5b063dd3f8ea17112354274
@@@ -1,1 -1,1 +1,1 @@@
- 5e2ee7db0f7a2a042b182336438107e2248d7b88
 -acb171d4cfef2fec8833f761019f5c81f0d138a0
++866e9286ae4226b2bec40ef18c672a41768abf1f
diff --cc src/func.c
Simple merge
diff --cc src/main.c
Simple merge
diff --cc src/os_unix.c
index 5ddb7daf653093e8abc13a813a21ec436a32dbff,e3ea4f222ff96e23dfab33a06a90bde0f5d146f3..6a959442a1bce3b0bc2ffb8fbfdd6898a02b4d62
@@@ -3033,12 -3047,55 +3047,61 @@@ static int unixFileSize(sqlite3_file *i
  static int proxyFileControl(sqlite3_file*,int,void*);
  #endif
  
+ /* 
+ ** This function is called to handle the SQLITE_FCNTL_SIZE_HINT 
+ ** file-control operation.
+ **
+ ** If the user has configured a chunk-size for this file, it could be
+ ** that the file needs to be extended at this point. Otherwise, the
+ ** SQLITE_FCNTL_SIZE_HINT operation is a no-op for Unix.
+ */
+ static int fcntlSizeHint(unixFile *pFile, i64 nByte){
+   if( pFile->szChunk ){
+     i64 nSize;                    /* Required file size */
+     struct stat buf;              /* Used to hold return values of fstat() */
+    
+     if( fstat(pFile->h, &buf) ) return SQLITE_IOERR_FSTAT;
+     nSize = ((nByte+pFile->szChunk-1) / pFile->szChunk) * pFile->szChunk;
+     if( nSize>(i64)buf.st_size ){
+ #if defined(HAVE_POSIX_FALLOCATE) && HAVE_POSIX_FALLOCATE
+       if( posix_fallocate(pFile->h, buf.st_size, nSize-buf.st_size) ){
+         return SQLITE_IOERR_WRITE;
+       }
+ #else
+       /* If the OS does not have posix_fallocate(), fake it. First use
+       ** ftruncate() to set the file size, then write a single byte to
+       ** the last byte in each block within the extended region. This
+       ** is the same technique used by glibc to implement posix_fallocate()
+       ** on systems that do not have a real fallocate() system call.
+       */
+       int nBlk = buf.st_blksize;  /* File-system block size */
+       i64 iWrite;                 /* Next offset to write to */
+       int nWrite;                 /* Return value from seekAndWrite() */
+       if( ftruncate(pFile->h, nSize) ){
+         pFile->lastErrno = errno;
+         return SQLITE_IOERR_TRUNCATE;
+       }
+       iWrite = ((buf.st_size + 2*nBlk - 1)/nBlk)*nBlk-1;
+       do {
+         nWrite = seekAndWrite(pFile, iWrite, "", 1);
+         iWrite += nBlk;
+       } while( nWrite==1 && iWrite<nSize );
+       if( nWrite!=1 ) return SQLITE_IOERR_WRITE;
+ #endif
+     }
+   }
+   return SQLITE_OK;
+ }
 +#if (SQLITE_ENABLE_APPLE_SPI>0) && defined(__APPLE__)
 +#include "sqlite3_private.h"
 +#include <copyfile.h>
 +static int getDbPathForUnixFile(unixFile *pFile, char *dbPath);
 +#endif
 +
  /*
  ** Information and control of an open file handle.
  */
diff --cc src/pager.c
index 6c7cdc25b25031f9fd2a27cd44ecf3cfd449a665,e39ca9009a386fa022a61b4d22a9119d2af9ca32..e0c29f3dc59ab857e823aa5be5e73ebdc4738ae5
@@@ -3363,21 -3888,10 +3889,22 @@@ static int pager_write_pagelist(Pager *
    ** file size will be.
    */
    assert( rc!=SQLITE_OK || isOpen(pPager->fd) );
-   if( rc==SQLITE_OK && pPager->dbSize>(pPager->dbOrigSize+1) ){
+   if( rc==SQLITE_OK && pPager->dbSize>pPager->dbHintSize ){
      sqlite3_int64 szFile = pPager->pageSize * (sqlite3_int64)pPager->dbSize;
      sqlite3OsFileControl(pPager->fd, SQLITE_FCNTL_SIZE_HINT, &szFile);
 +  }
 +#endif
 +
 +  /* Before the first write, give the VFS a hint of what the final
 +  ** file size will be.
 +  */
 +  if( rc==SQLITE_OK
 +   && pPager->dbSize>(pPager->dbFileSize+1)
 +   && isOpen(pPager->fd)
 +  ){
 +    sqlite3_int64 szFile = pPager->pageSize * (sqlite3_int64)pPager->dbSize;
 +    sqlite3OsFileControl(pPager->fd, SQLITE_FCNTL_SIZE_HINT, &szFile);
+     pPager->dbHintSize = pPager->dbSize;
    }
  
    while( rc==SQLITE_OK && pList ){
diff --cc src/pragma.c
Simple merge
diff --cc src/prepare.c
Simple merge
diff --cc src/test1.c
index dd02971544f92096b8fa7bc79a9ebb8db4a5171a,f458cdb40b0e3715b0fbb057e9479ad3ce2cbfe9..e8059f4a1de61bc63c4b3d278963f65bbdeac3fa
@@@ -5216,9 -5185,8 +5295,10 @@@ int Sqlitetest1_Init(Tcl_Interp *interp
       { "file_control_test",          file_control_test,   0   },
       { "file_control_lasterrno_test", file_control_lasterrno_test,  0   },
       { "file_control_lockproxy_test", file_control_lockproxy_test,  0   },
-      { "sqlite3_vfs_list",           vfs_list,     0   },
+      { "file_control_chunksize_test", file_control_chunksize_test,  0   },
+      { "sqlite3_vfs_list",           vfs_list,     0   },
 +     { "path_is_local",              path_is_local,  0   },
 +     { "path_is_dos",                path_is_dos,  0   },
  
       /* Functions from os.h */
  #ifndef SQLITE_OMIT_UTF16
diff --cc src/vdbe.c
Simple merge
diff --cc src/vdbeapi.c
Simple merge
Simple merge
Simple merge
index f9c82ddb604fe95addf771425dda817073eefc19,be9266149ed7729f6d4767594b474f5bedd03783..e671a3d3ebfa2bdd5f8de6dad01fca9ea3d4fd4b
@@@ -1046,36 -1046,155 +1046,188 @@@ ifcapable crashtest 
  }
  
  
 +#-------------------------------------------------------------------------
 +# When a 3.7.0 client opens a write-transaction on a database file that
 +# has been appended to or truncated by a pre-370 client, it updates
 +# the db-size in the file header immediately. This test case provokes
 +# errors during that operation.
 +#
 +do_test pagerfault-22-pre1 {
 +  faultsim_delete_and_reopen
 +  db func a_string a_string
 +  execsql {
 +    PRAGMA page_size = 1024;
 +    PRAGMA auto_vacuum = 0;
 +    CREATE TABLE t1(a);
 +    CREATE INDEX i1 ON t1(a);
 +    INSERT INTO t1 VALUES(a_string(3000));
 +    CREATE TABLE t2(a);
 +    INSERT INTO t2 VALUES(1);
 +  }
 +  db close
 +  sql36231 { INSERT INTO t1 VALUES(a_string(3000)) }
 +  faultsim_save_and_close
 +} {}
 +do_faultsim_test pagerfault-22 -prep {
 +  faultsim_restore_and_reopen
 +} -body {
 +  execsql { INSERT INTO t2 VALUES(2) }
 +  execsql { SELECT * FROM t2 }
 +} -test {
 +  faultsim_test_result {0 {1 2}}
 +  faultsim_integrity_check
 +}
 +
++
+ #-------------------------------------------------------------------------
+ # When a 3.7.0 client opens a write-transaction on a database file that
+ # has been appended to or truncated by a pre-370 client, it updates
+ # the db-size in the file header immediately. This test case provokes
+ # errors during that operation.
+ #
+ do_test pagerfault-22-pre1 {
+   faultsim_delete_and_reopen
+   db func a_string a_string
+   execsql {
+     PRAGMA page_size = 1024;
+     PRAGMA auto_vacuum = 0;
+     CREATE TABLE t1(a);
+     CREATE INDEX i1 ON t1(a);
+     INSERT INTO t1 VALUES(a_string(3000));
+     CREATE TABLE t2(a);
+     INSERT INTO t2 VALUES(1);
+   }
+   db close
+   sql36231 { INSERT INTO t1 VALUES(a_string(3000)) }
+   faultsim_save_and_close
+ } {}
+ do_faultsim_test pagerfault-22 -prep {
+   faultsim_restore_and_reopen
+ } -body {
+   execsql { INSERT INTO t2 VALUES(2) }
+   execsql { SELECT * FROM t2 }
+ } -test {
+   faultsim_test_result {0 {1 2}}
+   faultsim_integrity_check
+ }
+ #-------------------------------------------------------------------------
+ # Provoke an OOM error during a commit of multi-file transaction. One of
+ # the databases written during the transaction is an in-memory database.
+ # This test causes rollback of the in-memory database after CommitPhaseOne()
+ # has successfully returned. i.e. the series of calls for the aborted commit 
+ # is:
+ #
+ #   PagerCommitPhaseOne(<in-memory-db>)   ->   SQLITE_OK
+ #   PagerCommitPhaseOne(<file-db>)        ->   SQLITE_IOERR
+ #   PagerRollback(<in-memory-db>)
+ #   PagerRollback(<file-db>)
+ #
+ do_faultsim_test pagerfault-23 -prep {
+   foreach f [glob -nocomplain test.db*] { file delete -force $f }
+   sqlite3 db :memory:
+   db eval { 
+     ATTACH 'test.db2' AS aux;
+     CREATE TABLE t1(a, b);
+     CREATE TABLE aux.t2(a, b);
+   }
+ } -body {
+   execsql { 
+     BEGIN;
+       INSERT INTO t1 VALUES(1,2);
+       INSERT INTO t2 VALUES(3,4); 
+     COMMIT;
+   }
+ } -test {
+   faultsim_test_result {0 {}}
+   faultsim_integrity_check
+ }
+ do_faultsim_test pagerfault-24 -prep {
+   faultsim_delete_and_reopen
+   db eval { PRAGMA temp_store = file }
+   execsql { CREATE TABLE x(a, b) }
+ } -body {
+   execsql { CREATE TEMP TABLE t1(a, b) }
+ } -test {
+   faultsim_test_result {0 {}} \
+     {1 {unable to open a temporary database file for storing temporary tables}}
+   set ic [db eval { PRAGMA temp.integrity_check }]
+   if {$ic != "ok"} { error "Integrity check: $ic" }
+ }
+ proc lockrows {n} {
+   if {$n==0} { return "" }
+   db eval { SELECT * FROM t1 WHERE oid = $n } { 
+     return [lockrows [expr {$n-1}]]
+   }
+ }
+ do_test pagerfault-25-pre1 {
+   faultsim_delete_and_reopen
+   db func a_string a_string
+   execsql {
+     PRAGMA page_size = 1024;
+     PRAGMA auto_vacuum = 0;
+     CREATE TABLE t1(a);
+     INSERT INTO t1 VALUES(a_string(500));
+     INSERT INTO t1 SELECT a_string(500) FROM t1;
+     INSERT INTO t1 SELECT a_string(500) FROM t1;
+     INSERT INTO t1 SELECT a_string(500) FROM t1;
+     INSERT INTO t1 SELECT a_string(500) FROM t1;
+     INSERT INTO t1 SELECT a_string(500) FROM t1;
+   }
+   faultsim_save_and_close
+ } {}
+ do_faultsim_test pagerfault-25 -prep {
+   faultsim_restore_and_reopen
+   db func a_string a_string
+   set ::channel [db incrblob -readonly t1 a 1]
+   execsql { 
+     PRAGMA cache_size = 10;
+     BEGIN;
+       INSERT INTO t1 VALUES(a_string(3000));
+       INSERT INTO t1 VALUES(a_string(3000));
+   }
+ } -body {
+   lockrows 30
+ } -test {
+   catch { lockrows 30 }
+   catch { db eval COMMIT }
+   close $::channel
+   faultsim_test_result {0 {}} 
+ }
+ do_faultsim_test pagerfault-26 -prep {
+   faultsim_delete_and_reopen
+   execsql {
+     PRAGMA page_size = 1024;
+     PRAGMA journal_mode = truncate;
+     PRAGMA auto_vacuum = full;
+     PRAGMA locking_mode=exclusive;
+     CREATE TABLE t1(a, b);
+     INSERT INTO t1 VALUES(1, 2);
+     PRAGMA page_size = 4096;
+   }
+ } -body {
+   execsql {
+     VACUUM;
+   }
+ } -test {
+   faultsim_test_result {0 {}}
+   set contents [db eval {SELECT * FROM t1}]
+   if {$contents != "1 2"} { error "Bad database contents ($contents)" }
+   set sz [file size test.db]
+   if {$testrc!=0 && $sz!=1024*3 && $sz!=4096*3} { 
+     error "Expected file size to be 3072 or 12288 bytes - actual size $sz bytes"
+   }
+   if {$testrc==0 && $sz!=4096*3} { 
+     error "Expected file size to be 12288 bytes - actual size $sz bytes"
+   }
+ } 
  finish_test
Simple merge
diff --cc test/tester.tcl
index fc2fd73e692b1e2be64c3c5ed09589dc5609ce28,fb26561b231f92eccbef7040b872da7a2b96f40e..528cdc8cebfcd994d9cc98f05a3901c7f450578a
@@@ -1149,36 -1151,12 +1155,41 @@@ proc permutation {} 
    catch {set perm $::G(perm:name)}
    set perm
  }
+ proc presql {} {
+   set presql ""
+   catch {set presql $::G(perm:presql)}
+   set presql
+ }
  
 +proc forced_proxy_locking {} {
 +  ifcapable lock_proxy_pragmas&&prefer_proxy_locking {
 +    set force_proxy_value 0
 +    set force_key "SQLITE_FORCE_PROXY_LOCKING="
 +    foreach {env_pair} [exec env] { 
 +      if { [string first $force_key $env_pair] == 0} {
 +        set force_proxy_value [string range $env_pair [string length $force_key] end]
 +      }
 +    }
 +    if { "$force_proxy_value " == "1 " } {
 +      return 1
 +    } 
 +  }
 +  return 0
 +}
 +
 +proc wal_is_ok {} {
 +  if { [forced_proxy_locking] } {
 +    return 0
 +  }
 +  if { ![path_is_local "."] } {
 +    return 0
 +  }
 +  if { [path_is_dos "."] } {
 +    return 0
 +  }
 +  return 1
 +}
 +
  #-------------------------------------------------------------------------
  #
  proc slave_test_script {script} {
diff --cc test/wal.test
Simple merge
diff --cc test/wal2.test
Simple merge
diff --cc test/wal3.test
Simple merge
Simple merge