Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Relax an over-zealous assert() in sqlite3WalUndo(). |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
8f9d22d58c75ad7476c1eea8ba296347 |
User & Date: | drh 2010-05-04 17:20:09.000 |
Context
2010-05-04
| ||
17:38 | Be sure to release all wal-index locks before closing the wal-index. (check-in: b15b67fa14 user: drh tags: trunk) | |
17:20 | Relax an over-zealous assert() in sqlite3WalUndo(). (check-in: 8f9d22d58c user: drh tags: trunk) | |
16:33 | Take care not to invoke the xShmClose method of the VFS with a NULL shared memory object. (check-in: 1465d3842c user: drh tags: trunk) | |
Changes
Changes to src/wal.c.
︙ | ︙ | |||
1072 1073 1074 1075 1076 1077 1078 | }else if( pWal->lockState==SQLITE_SHM_WRITE ){ rc = walSetLock(pWal, SQLITE_SHM_READ); } return rc; } /* | < < < > | 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 | }else if( pWal->lockState==SQLITE_SHM_WRITE ){ rc = walSetLock(pWal, SQLITE_SHM_READ); } return rc; } /* ** If any data has been written (but not committed) to the log file, this ** function moves the write-pointer back to the start of the transaction. ** ** Additionally, the callback function is invoked for each frame written ** to the log since the start of the transaction. If the callback returns ** other than SQLITE_OK, it is not invoked again and the error code is ** returned to the caller. ** ** Otherwise, if the callback function does not return an error, this ** function returns SQLITE_OK. */ int sqlite3WalUndo(Wal *pWal, int (*xUndo)(void *, Pgno), void *pUndoCtx){ int rc = SQLITE_OK; Pgno iMax = pWal->hdr.iLastPg; Pgno iFrame; walIndexReadHdr(pWal, 0); for(iFrame=pWal->hdr.iLastPg+1; iFrame<=iMax && rc==SQLITE_OK; iFrame++){ assert( pWal->lockState==SQLITE_SHM_WRITE ); rc = xUndo(pUndoCtx, pWal->pWiData[walIndexEntry(iFrame)]); } walIndexUnmap(pWal); return rc; } /* Return an integer that records the current (uncommitted) write |
︙ | ︙ |