Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Comment clarifications in wal.c. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
a029be10172e2e6a2ef4e3eb2ea1bd0c |
User & Date: | drh 2010-05-18 12:56:50.000 |
Context
2010-05-18
| ||
13:27 | Mark the shared-memory in the WAL implementation as volatile. (check-in: 0a6787908e user: drh tags: trunk) | |
12:56 | Comment clarifications in wal.c. (check-in: a029be1017 user: drh tags: trunk) | |
2010-05-17
| ||
20:16 | Remove an unreachable test from wal.c. (check-in: 7162c45673 user: drh tags: trunk) | |
Changes
Changes to src/wal.c.
︙ | ︙ | |||
18 19 20 21 22 23 24 | #include "wal.h" /* ** WRITE-AHEAD LOG (WAL) FILE FORMAT ** ** A wal file consists of a header followed by zero or more "frames". | | | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include "wal.h" /* ** WRITE-AHEAD LOG (WAL) FILE FORMAT ** ** A wal file consists of a header followed by zero or more "frames". ** The file header is 12 bytes in size and consists of the following three ** big-endian 32-bit unsigned integer values: ** ** 0: Database page size, ** 4: Randomly selected salt value 1, ** 8: Randomly selected salt value 2. ** ** Immediately following the header are zero or more frames. Each |
︙ | ︙ | |||
40 41 42 43 44 45 46 | ** 8: Checksum value 1. ** 12: Checksum value 2. */ /* ** WAL-INDEX FILE FORMAT ** | | | | < < < < < < | 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | ** 8: Checksum value 1. ** 12: Checksum value 2. */ /* ** WAL-INDEX FILE FORMAT ** ** The wal-index consists of a 32-byte header region, followed by an ** 8-byte region that contains no useful data (used to apply byte-range locks ** in some implementations), followed by the data region. ** ** The contents of both the header and data region are specified in terms ** of 1, 2 and 4 byte unsigned integers. All integers are stored in ** machine-endian order. The wal-index is not a persistent file and ** so it does not need to be portable across archtectures. ** ** A wal-index file is essentially a shadow-pager map. It contains a ** mapping from database page number to the set of locations in the wal ** file that contain versions of the database page. When a database ** client needs to read a page of data, it first queries the wal-index ** to determine if the required version of the page is stored in ** the wal. If so, the page is read from the wal. If not, the page is ** read from the database file. ** ** Whenever a transaction is appended to the wal or a checkpoint transfers ** data from the wal into the database file, the wal-index is ** updated accordingly. */ /* Object declarations */ typedef struct WalIndexHdr WalIndexHdr; typedef struct WalIterator WalIterator; |
︙ | ︙ | |||
1393 1394 1395 1396 1397 1398 1399 | iOffset += nPgsz; } rc = sqlite3OsSync(pWal->pWalFd, sync_flags); } assert( pWal->pWiData==0 ); | | | 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 | iOffset += nPgsz; } rc = sqlite3OsSync(pWal->pWalFd, sync_flags); } assert( pWal->pWiData==0 ); /* Append data to the wal-index. It is not necessary to lock the ** wal-index to do this as the RESERVED lock held on the db file ** guarantees that there are no other writers, and no data that may ** be in use by existing readers is being overwritten. */ iFrame = pWal->hdr.iLastPg; for(p=pList; p && rc==SQLITE_OK; p=p->pDirty){ iFrame++; |
︙ | ︙ |