aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <>2025-06-17 19:10:33 +0000
committerdrh <>2025-06-17 19:10:33 +0000
commitdf8aa3745a5f74c676c79077296eeea7fc2062f1 (patch)
treef8c3a294c2f8cfd0a72efbae2d974ca5c618126f /src
parent110055cd6c0cf0f5fdb170e9bedac21f4480afe6 (diff)
parent79a746b1f2280bc303e3c1ec2d67cac519817381 (diff)
downloadsqlite-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.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/wal.c b/src/wal.c
index 1fd5b201c..41018b584 100644
--- a/src/wal.c
+++ b/src/wal.c
@@ -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;