Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add comment explaining checksum mechanism. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | wal |
Files: | files | file ages | folders |
SHA1: |
3e9ef5153ebf0543ad0f75a7561f73d2 |
User & Date: | dan 2010-04-24 19:07:29.000 |
Context
2010-04-26
| ||
00:04 | Begin moving WAL-specific I/O into the VFS. This checkin contains VFS infrastructure but it is untested and is not yet hooked up to the WAL. The version number is bumped to 3.7.0 because of the VFS extension. (check-in: f5e615c28c user: drh tags: wal) | |
2010-04-24
| ||
19:07 | Add comment explaining checksum mechanism. (check-in: 3e9ef5153e user: dan tags: wal) | |
18:44 | Fix bugs in WAL mode rollback. (check-in: 31215969f5 user: dan tags: wal) | |
Changes
Changes to src/log.c.
︙ | ︙ | |||
312 313 314 315 316 317 318 319 | #define LOG_SUMMARY_MUTEX SQLITE_MUTEX_STATIC_LRU static LogSummary *pLogSummary = 0; /* ** Generate an 8 byte checksum based on the data in array aByte[] and the ** initial values of aCksum[0] and aCksum[1]. The checksum is written into ** aCksum[] before returning. */ | > > > > > > > > > > > > > < < | 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 | #define LOG_SUMMARY_MUTEX SQLITE_MUTEX_STATIC_LRU static LogSummary *pLogSummary = 0; /* ** Generate an 8 byte checksum based on the data in array aByte[] and the ** initial values of aCksum[0] and aCksum[1]. The checksum is written into ** aCksum[] before returning. ** ** The range of bytes to checksum is treated as an array of 32-bit ** little-endian unsigned integers. For each integer X in the array, from ** start to finish, do the following: ** ** aCksum[0] += X; ** aCksum[1] += aCksum[0]; ** ** For the calculation above, use 64-bit unsigned accumulators. Before ** returning, truncate the values to 32-bits as follows: ** ** aCksum[0] = (u32)(aCksum[0] + (aCksum[0]>>24)); ** aCksum[1] = (u32)(aCksum[1] + (aCksum[1]>>24)); */ static void logChecksumBytes(u8 *aByte, int nByte, u32 *aCksum){ u64 sum1 = aCksum[0]; u64 sum2 = aCksum[1]; u32 *a32 = (u32 *)aByte; u32 *aEnd = (u32 *)&aByte[nByte]; assert( (nByte&0x00000003)==0 ); if( SQLITE_LITTLEENDIAN ){ #ifdef SQLITE_DEBUG u8 *a = (u8 *)a32; assert( *a32==(a[0] + (a[1]<<8) + (a[2]<<16) + (a[3]<<24)) ); #endif |
︙ | ︙ | |||
1662 1663 1664 1665 1666 1667 1668 | u32 iFrame; /* Next frame address */ u8 aFrame[LOG_FRAME_HDRSIZE]; /* Buffer to assemble frame-header in */ PgHdr *p; /* Iterator to run through pList with. */ u32 aCksum[2]; /* Checksums */ PgHdr *pLast; /* Last frame in list */ int nLast = 0; /* Number of extra copies of last page */ | | | 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 | u32 iFrame; /* Next frame address */ u8 aFrame[LOG_FRAME_HDRSIZE]; /* Buffer to assemble frame-header in */ PgHdr *p; /* Iterator to run through pList with. */ u32 aCksum[2]; /* Checksums */ PgHdr *pLast; /* Last frame in list */ int nLast = 0; /* Number of extra copies of last page */ assert( LOG_FRAME_HDRSIZE==(4 * 2 + 2*sizeof(u32)) ); assert( pList ); /* If this is the first frame written into the log, write the log ** header to the start of the log file. See comments at the top of ** this file for a description of the log-header format. */ assert( LOG_FRAME_HDRSIZE>=LOG_HDRSIZE ); |
︙ | ︙ |