diff options
author | drh <> | 2025-06-17 19:10:33 +0000 |
---|---|---|
committer | drh <> | 2025-06-17 19:10:33 +0000 |
commit | df8aa3745a5f74c676c79077296eeea7fc2062f1 (patch) | |
tree | f8c3a294c2f8cfd0a72efbae2d974ca5c618126f /src | |
parent | 110055cd6c0cf0f5fdb170e9bedac21f4480afe6 (diff) | |
parent | 79a746b1f2280bc303e3c1ec2d67cac519817381 (diff) | |
download | sqlite-df8aa3745a5f74c676c79077296eeea7fc2062f1.tar.gz sqlite-df8aa3745a5f74c676c79077296eeea7fc2062f1.zip |
Avoid writing frames with no checksums into the wal file if a
savepoint is rolled back after dirty pages have already been
spilled into the wal file.
FossilOrigin-Name: 5973f9b9aa828ec9274b02a124b95f452c58235eaafffbdda1c32b4ae2d5616d
Diffstat (limited to 'src')
-rw-r--r-- | src/wal.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -3781,6 +3781,7 @@ int sqlite3WalUndo(Wal *pWal, int (*xUndo)(void *, Pgno), void *pUndoCtx){ if( iMax!=pWal->hdr.mxFrame ) walCleanupHash(pWal); } SEH_EXCEPT( rc = SQLITE_IOERR_IN_PAGE; ) + pWal->iReCksum = 0; } return rc; } @@ -3828,6 +3829,9 @@ int sqlite3WalSavepointUndo(Wal *pWal, u32 *aWalData){ walCleanupHash(pWal); } SEH_EXCEPT( rc = SQLITE_IOERR_IN_PAGE; ) + if( pWal->iReCksum>pWal->hdr.mxFrame ){ + pWal->iReCksum = 0; + } } return rc; |