From: dan Date: Wed, 13 Aug 2025 19:13:16 +0000 (+0000) Subject: Have cksumvfs write checksums to the database file only, not the wal file. Writing... X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6f097125cdfd39098604d0363071c63c4d3a5059;p=thirdparty%2Fsqlite.git Have cksumvfs write checksums to the database file only, not the wal file. Writing them to the wal file breaks wal file recovery. FossilOrigin-Name: e3bd1feccaee8ff2f68b7b863769dd739e8a434fd32fed73deeeec885628311c --- 6f097125cdfd39098604d0363071c63c4d3a5059 diff --cc manifest index 2678cc8bc6,87695d8d7b..f10e6c5570 --- a/manifest +++ b/manifest @@@ -1,5 -1,5 +1,5 @@@ - C Minor\sautosetup/README.md\stweaks. - D 2025-08-13T18:30:42.027 -C In\scksumvfs,\sdo\snot\swrite\schecksums\sto\sthe\swal\sfile,\sas\sthis\sprevents\srecovery\sfrom\sworking. -D 2025-08-13T18:37:41.105 ++C Have\scksumvfs\swrite\schecksums\sto\sthe\sdatabase\sfile\sonly,\snot\sthe\swal\sfile.\sWriting\sthem\sto\sthe\swal\sfile\sbreaks\swal\sfile\srecovery. ++D 2025-08-13T19:13:16.370 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@@ -962,7 -962,7 +962,7 @@@ F test/changes2.test 07949edcc732af28cb F test/check.test 3a7972ccbaad80d496833da8714d69d9d5d4ce9e7211af1cd2a06ae488a7de12 F test/checkfault.test da6cb3d50247169efcb20bdf57863a3ccfa1d27d9e55cd324f0680096970f014 F test/chunksize.test faea11c5d6df9d392252a8dd879e1b1d68c9d3e8b7909cbed8bcec3b60c706f1 - F test/cksumvfs.test ec349149fbda923feb93e61a16674b6355b9ff6997f70c9e8f3b7843c51ea2af -F test/cksumvfs.test c2eed4708fae44777607425ba369b642401c3771cc354d5af296ce6aab21c1c9 ++F test/cksumvfs.test 94f23cad3f996c0112d8050e1089ecf0cb2122a4cf0332b260ab4726cc709952 F test/close.test eccbad8ecd611d974cbf47278c3d4e5874faf02d811338d5d348af42d56d647c F test/closure01.test 9905883f1b171a4638f98fc764879f154e214a306d3d8daf412a15e7f3a9b1e0 F test/coalesce.test cee0dccb9fbd2d494b77234bccf9dc6c6786eb91 @@@ -2169,8 -2169,11 +2169,9 @@@ F tool/version-info.c 3b36468a90faf1bbd F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f - P 3b06d1c9b6c03f38029a8b98fef6253647878c0f8b05447ec0c8122f189c90dc - R 48d5cc70c03a653161ab38251c85b829 - U stephan - Z 136f0cc4707441ee6428a1013d4e4c6d -P bd7530bf6afdad391b223651632e1b4d59ab5ec806c7a94daadc7f09091321f4 -R 4b1ff55a2a7c8f094813855173a6bb4c -T *branch * cksumvfs-wal-fix -T *sym-cksumvfs-wal-fix * -T -sym-trunk * ++P bd7530bf6afdad391b223651632e1b4d59ab5ec806c7a94daadc7f09091321f4 5bf48c7e31904f1f7048499c630801846df89f262b32ea1e49fb6e039eaad11a ++R adf2ed8bc8e9332c08eff8a3756e14d6 ++T +closed 5bf48c7e31904f1f7048499c630801846df89f262b32ea1e49fb6e039eaad11a + U dan -Z 27676fcaac1fda11b5c8129e0f7f8f20 ++Z d762bf60b7a100696be5d3736ef9b6c0 # Remove this line to create a well-formed Fossil manifest. diff --cc manifest.uuid index d8a82a5427,45ee437a89..8399ba11db --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - bd7530bf6afdad391b223651632e1b4d59ab5ec806c7a94daadc7f09091321f4 -5bf48c7e31904f1f7048499c630801846df89f262b32ea1e49fb6e039eaad11a ++e3bd1feccaee8ff2f68b7b863769dd739e8a434fd32fed73deeeec885628311c diff --cc test/cksumvfs.test index 7b1f007e93,270b5db386..ff6a6cb010 --- a/test/cksumvfs.test +++ b/test/cksumvfs.test @@@ -50,5 -59,29 +59,36 @@@ do_execsql_test 1.4 SELECT count(b) FROM t1 } {8500} + do_execsql_test 1.5 { + PRAGMA journal_mode = wal; + DELETE FROM t1; + } {wal} + + do_execsql_test 1.6 { + PRAGMA wal_checkpoint; + } {0 26 26} + + do_execsql_test 1.7 { + WITH s(i) AS ( + VALUES(1) UNION ALL SELECT i+1 FROM s WHERE i<100 + ) + INSERT INTO t1 SELECT NULL, randomblob(5000), randomblob(i) FROM s; + SELECT count(*) FROM t1; + } {100} + + db_save_and_close + db_restore_and_reopen + + do_execsql_test 1.8 { + SELECT count(*) FROM t1; + } {100} + ++db close ++sqlite3 db test.db ++ ++do_execsql_test 1.9 { ++ SELECT count(*) FROM t1; ++} {100} ++ finish_test