From: dan Date: Thu, 10 Aug 2023 21:20:34 +0000 (+0000) Subject: Add tests for structured-exception-handling and wal2. Fix a problem with the same. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fheads%2Fwal2-shm-exceptions;p=thirdparty%2Fsqlite.git Add tests for structured-exception-handling and wal2. Fix a problem with the same. FossilOrigin-Name: 87242777ec869d698c5c78283b98677105e8b5a8b0d8b71a696b8460d4303783 --- diff --git a/manifest b/manifest index 7664ce83c8..c5504f82b3 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Experimental\smerge\sof\sthe\swal-shm-exceptions\sand\swal2\sbranches. -D 2023-08-10T18:58:07.618 +C Add\stests\sfor\sstructured-exception-handling\sand\swal2.\sFix\sa\sproblem\swith\sthe\ssame. +D 2023-08-10T21:20:34.013 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -728,7 +728,7 @@ F src/vdbetrace.c fe0bc29ebd4e02c8bc5c1945f1d2e6be5927ec12c06d89b03ef2a4def34bf8 F src/vdbevtab.c 57fa8f56478e5b5cb558cb425e7878515e0a105c54f96f1d1bbf4b9433529254 F src/vtab.c 1ecf8c3745d29275688d583e12822fa984d421e0286b5ef50c137bc3bf6d7a64 F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9 -F src/wal.c 15cf63e763e2613c89f5dd20e150e715f4dcc836a0488342a1ab60939ff4951e +F src/wal.c 1ea71da11648befe8be082d0ef6adad144435a827d7ae1593da1bf375482c21d F src/wal.h a3e64f463acf027f041c2081841e15e8c81c56d0daa45e308df423d9d66fd5a7 F src/walker.c 7c7ea0115345851c3da4e04e2e239a29983b61fb5b038b94eede6aba462640e2 F src/where.c b8917792f1e0dbfa28fb29e6cd3d560060d69667be0ba4c491cbc772363264f5 @@ -1873,7 +1873,7 @@ F test/walprotocol2.test 7e4bedd5ee83607e2928ac438bf7332a396b980d3e02aa0746509ce F test/walro.test cb438d05ba0d191f10b688e39c4f0cd5b71569a1d1f4440e5bdf3c6880e08c20 F test/walro2.test 33955a6fd874dd9724005e17f77fef89d334b3171454a1256fe4941a96766cdc F test/walrofault.test c70cb6e308c443867701856cce92ad8288cd99488fa52afab77cca6cfd51af68 -F test/walseh1.test 82da37763b0d87942dccd191e58321532ce3d44b87ef36e04ff9ce13f382bbae +F test/walseh1.test 5971f753bd3504ac485ef2dd228894f6bbd20f6711f8e6ee65d62c7dc1a134c8 F test/walsetlk.test 34c901443b31ab720afc463f5b236c86ca5c4134402573dce91aa0761de8db5a F test/walshared.test 42e3808582504878af237ea02c42ca793e8a0efaa19df7df26ac573370dbc7a3 F test/walslow.test c05c68d4dc2700a982f89133ce103a1a84cc285f @@ -2065,11 +2065,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P ae7f3bcb5babfa50084f5b4d3c5663489dbf306440706152642b7f0fb47fa1f5 3ed89c344fcb3b7ee8b764d95144643e42e053e1116150d6eda8355fbd6669df -R 6d5e54ac94c2b0ca3b4f8e1bb783c1f1 -T *branch * wal2-shm-exceptions -T *sym-wal2-shm-exceptions * -T -sym-wal2 * +P fd58c616244dc70a2d6c17b62830398cea8177366828260882df5ab1f361a347 +R 8c982794323889a4cb5909db4c119431 U dan -Z 906ed34078bfe0eb7b259e1913b75925 +Z fd542a929c1ac4ec2e467c191acdf6ca # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index c62ef76cad..0d3d5fdd09 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -fd58c616244dc70a2d6c17b62830398cea8177366828260882df5ab1f361a347 \ No newline at end of file +87242777ec869d698c5c78283b98677105e8b5a8b0d8b71a696b8460d4303783 \ No newline at end of file diff --git a/src/wal.c b/src/wal.c index 3e7207a5c6..b96a0c6be5 100644 --- a/src/wal.c +++ b/src/wal.c @@ -3119,12 +3119,14 @@ int sqlite3WalClose( if( isWalMode2(pWal)==0 ) break; - walCkptInfo(pWal)->nBackfill = 0; - walidxSetFile(&pWal->hdr, !walidxGetFile(&pWal->hdr)); - pWal->writeLock = 1; - walIndexWriteHdr(pWal); - pWal->writeLock = 0; - + SEH_TRY { + walCkptInfo(pWal)->nBackfill = 0; + walidxSetFile(&pWal->hdr, !walidxGetFile(&pWal->hdr)); + pWal->writeLock = 1; + walIndexWriteHdr(pWal); + pWal->writeLock = 0; + } + SEH_EXCEPT( rc = SQLITE_IOERR_IN_PAGE; ) } } diff --git a/test/walseh1.test b/test/walseh1.test index c3a655f534..e61e2edca7 100644 --- a/test/walseh1.test +++ b/test/walseh1.test @@ -56,15 +56,22 @@ proc test_system_errno {db expect} { } } -do_execsql_test 1.0 { - PRAGMA journal_mode = wal; +foreach {tn jmode} { + 1 wal + 2 wal2 +} { + +reset_db + +do_execsql_test $tn.1.0 " + PRAGMA journal_mode = $jmode; CREATE TABLE t1(x, y); INSERT INTO t1 VALUES(1, 2); INSERT INTO t1 VALUES(3, 4); -} {wal} +" $jmode faultsim_save_and_close -do_faultsim_test 1 -faults seh -prep { +do_faultsim_test $tn.1 -faults seh -prep { catch { db2 close } faultsim_restore_and_reopen execsql { SELECT * FROM sqlite_schema } @@ -79,7 +86,7 @@ catch { db2 close } faultsim_save_and_close -do_faultsim_test 2 -faults seh -prep { +do_faultsim_test $tn.2 -faults seh -prep { catch { db close } faultsim_restore_and_reopen } -body { @@ -89,7 +96,7 @@ do_faultsim_test 2 -faults seh -prep { if {$testrc} { test_system_errno db $::seh_errno } } -do_faultsim_test 3 -faults seh -prep { +do_faultsim_test $tn.3 -faults seh -prep { catch { db close } faultsim_restore_and_reopen } -body { @@ -100,7 +107,7 @@ do_faultsim_test 3 -faults seh -prep { if {$testrc} { test_system_errno db $::seh_errno } } -do_faultsim_test 4 -faults seh -prep { +do_faultsim_test $tn.4 -faults seh -prep { catch { db close } faultsim_restore_and_reopen } -body { @@ -113,7 +120,7 @@ do_faultsim_test 4 -faults seh -prep { } catch { db close } -do_faultsim_test 5 -faults seh -prep { +do_faultsim_test $tn.5 -faults seh -prep { catch { db close } faultsim_restore_and_reopen execsql { @@ -132,7 +139,7 @@ do_faultsim_test 5 -faults seh -prep { } catch { db close } -do_faultsim_test 6 -faults seh -prep { +do_faultsim_test $tn.6 -faults seh -prep { catch { db close } faultsim_restore_and_reopen } -body { @@ -145,6 +152,8 @@ do_faultsim_test 6 -faults seh -prep { } catch { db close } +} + finish_test