From: dan Date: Tue, 3 Aug 2010 18:29:04 +0000 (+0000) Subject: Merge trunk changes into experimental branch. X-Git-Tag: version-3.7.2~53^2~22 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d5e0101be04d7013650b3b5aa6e6b0d30be654b9;p=thirdparty%2Fsqlite.git Merge trunk changes into experimental branch. FossilOrigin-Name: 15368a9f8523d5fb611cd576080daed2cf2f1500 --- d5e0101be04d7013650b3b5aa6e6b0d30be654b9 diff --cc manifest index 056d09ed02,40213f1639..b0af40bea5 --- a/manifest +++ b/manifest @@@ -1,5 -1,8 +1,5 @@@ - C Set\sthe\sPager.eState\svariable\sto\sPAGER_ERROR\swhenever\sthe\spager\senters\sthe\serror\sstate. - D 2010-08-03T18:18:42 ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - -C Fix\sdisabled\simplementation-mark\scomments\sin\sfunc.c. -D 2010-08-03T18:06:25 ++C Merge\strunk\schanges\sinto\sexperimental\sbranch. ++D 2010-08-03T18:29:05 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in ec08dc838fd8110fe24c92e5130bcd91cbb1ff2e F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@@ -154,9 -157,9 +154,9 @@@ 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 3109e0e5a0d5551bab2e8c7322b20a3b8b171248 -F src/os_win.c 1f8b0a1a5bcf6289e7754d0d3c16cec16d4c93ab -F src/pager.c 202e3dcb3f36c858d4339c0f6fa3d04d67258127 +F src/os_unix.c ae5ca8a6031380708f3fec7be325233d49944914 +F src/os_win.c 51cb62f76262d961ea4249489383d714501315a7 - F src/pager.c b48eb75d41fd1bce0e9911209785aef4381258ef ++F src/pager.c a5f55fb219e53bd064a81ccf697da30285ba2cc6 F src/pager.h 80726162dc3942f59ab27b738fb667b9ba0a89d5 F src/parse.y 12b7ebd61ea54f0e1b1083ff69cc2c8ce9353d58 F src/pcache.c 1e9aa2dbc0845b52e1b51cc39753b6d1e041cb07 @@@ -176,8 -179,8 +176,8 @@@ F src/sqliteInt.h a9be6badc6cd6a3c1ae54 F src/sqliteLimit.h 196e2f83c3b444c4548fc1874f52f84fdbda40f3 F src/status.c 496913d4e8441195f6f2a75b1c95993a45b9b30b F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e - F src/tclsqlite.c ae1e4fb653c91ddad7e2534d209711a12604ccc4 + F src/tclsqlite.c 5cd96419fb6c771006f064196ccc70c29d01bec7 -F src/test1.c ff3b4533fc4d78d1bff2ef831a5791db55096ed3 +F src/test1.c 0bfcda72f9f8ab5c0e90fac05cc22c1c21131ddf F src/test2.c e3f564ab1e9fd0b47b0c9e23e7054e38bf0836cf F src/test3.c 4c21700c73a890a47fc685c1097bfb661346ac94 F src/test4.c 0528360b5025688002a5feb6be906ddce52eaaee @@@ -222,13 -225,13 +222,13 @@@ F src/vdbe.c cefff41564b68a412e65e6a101 F src/vdbe.h 4de0efb4b0fdaaa900cf419b35c458933ef1c6d2 F src/vdbeInt.h ffd68c4d4229227a5089bec53a1c635146177abc F src/vdbeapi.c d0f4407e465f261780ad725c1caece7d66a6aa35 - F src/vdbeaux.c 8a443e73760ca65ffdfda3e26df4c8c90eeefa11 + F src/vdbeaux.c e18a42d0bdac405565f2d258a82457fd10db133d F src/vdbeblob.c 258a6010ba7a82b72b327fb24c55790655689256 - F src/vdbemem.c 5e579abf6532001dfbee0e640dc34eae897a9807 + F src/vdbemem.c e5673f81a2381b35c60e73ef0a8502be2ab1041e F src/vdbetrace.c 864cef96919323482ebd9986f2132435115e9cc2 F src/vtab.c 82200af3881fa4e1c9cf07cf31d98c09d437e3ab -F src/wal.c 0925601f3299c2941a67c9cfff41ee710f70ca82 -F src/wal.h 906c85760598b18584921fe08008435aa4eeeeb2 +F src/wal.c 6e04bccccd75acf86725cc8cb4b107cd245e018c +F src/wal.h 96669b645e27cd5a111ba59f0cae7743a207bc3c F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f F src/where.c 79202ca81e740eeb1f54512147e29b6c518d84ca F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2 @@@ -782,8 -784,8 +782,8 @@@ F test/vtab_alter.test 9e374885248f69e2 F test/vtab_err.test 0d4d8eb4def1d053ac7c5050df3024fd47a3fbd8 F test/vtab_shared.test 0eff9ce4f19facbe0a3e693f6c14b80711a4222d F test/wal.test 1891e6f72dd437a1c2a48091aa9182ba17a8f780 - F test/wal2.test 8581b133ef58d48f24c56f645a20d6527723557c -F test/wal2.test 8dcebda41587e0b2b57194d03fd8700e01e85656 -F test/wal3.test d2ae7e66f973bd6b58ce49e546b2c00f44fe0485 ++F test/wal2.test 223f3e14d475730af772a7f5862d4bcfa7565c3a +F test/wal3.test 695ea0f6c516423c611891df9a285aacd33344e3 F test/wal4.test 3404b048fa5e10605facaf70384e6d2943412e30 F test/wal_common.tcl 895d76138043b86bdccf36494054bdabcf65837b F test/walbak.test 4df1c7369da0301caeb9a48fa45997fd592380e4 @@@ -841,7 -844,14 +842,7 @@@ F tool/speedtest2.tcl ee2149167303ba8e9 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f - P fde4c59782e98366792e1552fd122e7d80a277ff - R dd009cdb2bebe6c9ea312f79af5244c4 -P 4e157b774764b8bafc9fabb88decf54f178b5ff5 -R 2ffda3ab686430275e530bf434e41e4c -U drh -Z 636446afbb2581f1ac8c757ae258a4e0 ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.6 (GNU/Linux) - -iD8DBQFMWFqkoxKgR168RlERAoOBAKCD0AqnZ6ZzbybLHgm4lZfoGX3cfgCfa6ef -C79lcWSk6pzbtaW4+fqCLFQ= -=jbsY ------END PGP SIGNATURE----- ++P 4d384761d27425b71555f4f3262778277a955835 57c0960038b8ce97f9d6665f15e7f6ec310c681f ++R a5e53c42c5ef67b21638e39c5b136ceb +U dan - Z 18695678602885240568b79d8561ccf5 ++Z c69428969280d297bd2cfd79a9c3f85e diff --cc manifest.uuid index 9923f3bbac,fce696df96..bf9ed997d3 --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - 4d384761d27425b71555f4f3262778277a955835 -57c0960038b8ce97f9d6665f15e7f6ec310c681f ++15368a9f8523d5fb611cd576080daed2cf2f1500 diff --cc src/pager.c index e3f73d953f,5f8a90c58a..52065f1f39 --- a/src/pager.c +++ b/src/pager.c @@@ -5548,20 -5244,14 +5548,20 @@@ int sqlite3PagerCommitPhaseOne rc = writeMasterJournal(pPager, zMaster); if( rc!=SQLITE_OK ) goto commit_phase_one_exit; - /* Sync the journal file. If the atomic-update optimization is being - ** used, this call will not create the journal file or perform any - ** real IO. + /* Sync the journal file and write all dirty pages to the database. + ** If the atomic-update optimization is being used, this sync will not + ** create the journal file or perform any real IO. + ** + ** Because the change-counter page was just modified, unless the + ** atomic-update optimization is used it is almost certain that the + ** journal requires a sync here. However, in locking_mode=exclusive + ** on a system under memory pressure it is just possible that this is + ** not the case. In this case it is likely enough that the redundant + ** xSync() call will be changed to a no-op by the OS anyhow. */ - rc = syncJournal(pPager); + rc = syncJournal(pPager, 0); if( rc!=SQLITE_OK ) goto commit_phase_one_exit; - + - /* Write all dirty pages to the database file. */ rc = pager_write_pagelist(pPager,sqlite3PcacheDirtyList(pPager->pPCache)); if( rc!=SQLITE_OK ){ assert( rc!=SQLITE_IOERR_BLOCKED ); diff --cc test/wal2.test index 0b6f24a3e4,1aad19ab23..03c0018f49 --- a/test/wal2.test +++ b/test/wal2.test @@@ -980,30 -980,32 +980,32 @@@ do_test wal2-11.1.1 execsql { SELECT name FROM sqlite_master } db2 } {t1} - # Set all zeroed slots in the first hash table to invalid values. - # - set blob [string range [tvfs shm $::filename] 0 16383] - set I [string range [tvfs shm $::filename] 16384 end] - binary scan $I t* L - set I [list] - foreach p $L { - lappend I [expr $p ? $p : 400] + if {$::tcl_version>=8.5} { + # Set all zeroed slots in the first hash table to invalid values. + # + set blob [string range [tvfs shm $::filename] 0 16383] + set I [string range [tvfs shm $::filename] 16384 end] + binary scan $I t* L + set I [list] + foreach p $L { + lappend I [expr $p ? $p : 400] + } + append blob [binary format t* $I] + tvfs shm $::filename $blob + do_test wal2-11.2 { + catchsql { INSERT INTO t1 VALUES(10, 11, 12) } + } {1 {database disk image is malformed}} + + # Fill up the hash table on the first page of shared memory with 0x55 bytes. + # + set blob [string range [tvfs shm $::filename] 0 16383] + append blob [string repeat [binary format c 55] 16384] + tvfs shm $::filename $blob + do_test wal2-11.3 { + catchsql { SELECT * FROM t1 } db2 + } {1 {database disk image is malformed}} } - append blob [binary format t* $I] - tvfs shm $::filename $blob - do_test wal2-11.2 { - catchsql { INSERT INTO t1 VALUES(10, 11, 12) } - } {1 {database disk image is malformed}} - - # Fill up the hash table on the first page of shared memory with 0x55 bytes. - # - set blob [string range [tvfs shm $::filename] 0 16383] - append blob [string repeat [binary format c 55] 16384] - tvfs shm $::filename $blob - do_test wal2-11.3 { - catchsql { SELECT * FROM t1 } db2 - } {1 {database disk image is malformed}} - + db close db2 close tvfs delete