Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Changes to the comments describing the Pager.setMaster variable in pager.c. Add an assert() statement to verify that two master journal pointers are not written to a single journal file. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
ad78ccacb00e2f8a5ca93e2c9006266d |
User & Date: | dan 2010-07-30 11:31:13.000 |
Context
2010-07-30
| ||
16:44 | Remove a test from sqlite3PagerCommitPhaseOne which is now always true after the multi-file transaction fix. (check-in: 6758f6a8ec user: drh tags: trunk) | |
14:39 | Merge trunk changes into experimental again. (check-in: 87e0f4e184 user: dan tags: experimental) | |
11:31 | Changes to the comments describing the Pager.setMaster variable in pager.c. Add an assert() statement to verify that two master journal pointers are not written to a single journal file. (check-in: ad78ccacb0 user: dan tags: trunk) | |
11:20 | Cherry-pick the multi-file transaction fix for ticket [f3e5abed55] out of the experimental branch. (check-in: 40f7f0a583 user: drh tags: trunk) | |
Changes
Changes to src/pager.c.
︙ | ︙ | |||
278 279 280 281 282 283 284 | ** It is cleared at the end of each transaction. ** ** It is used when committing or otherwise ending a transaction. If ** the dbModified flag is clear then less work has to be done. ** ** journalStarted ** | | | < < > | | | | < | | > > > > > > > > | > > | | | | 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 | ** It is cleared at the end of each transaction. ** ** It is used when committing or otherwise ending a transaction. If ** the dbModified flag is clear then less work has to be done. ** ** journalStarted ** ** This flag is set during a write-transaction after the first ** journal-header is written and synced to disk. ** ** After this has happened, new pages appended to the database ** do not need the PGHDR_NEED_SYNC flag set, as they do not need ** to wait for a journal sync before they can be written out to ** the database file (see function pager_write()). ** ** setMaster ** ** When PagerCommitPhaseOne() is called to commit a transaction, it may ** (or may not) specify a master-journal name to be written into the ** journal file before it is synced to disk. ** ** Whether or not a journal file contains a master-journal pointer affects ** the way in which the journal file is finalized after the transaction is ** committed or rolled back when running in "journal_mode=PERSIST" mode. ** If a journal file does not contain a master-journal pointer, it is ** finalized by overwriting the first journal header with zeroes. If, ** on the other hand, it does contain a master-journal pointer, the ** journal file is finalized by truncating it to zero bytes, just as if ** the connection were running in "journal_mode=truncate" mode. ** ** Journal files that contain master journal pointers cannot be finalized ** simply by overwriting the first journal-header with zeroes, as the ** master journal pointer could interfere with hot-journal rollback of any ** subsequently interrupted transaction that reuses the journal file. ** ** The flag is cleared as soon as the journal file is finalized (either ** by PagerCommitPhaseTwo or PagerRollback). If an IO error prevents the ** journal file from being successfully finalized, the setMaster flag ** is cleared anyway. ** ** doNotSpill, doNotSyncSpill ** ** When enabled, cache spills are prohibited. The doNotSpill variable ** inhibits all cache spill and doNotSyncSpill inhibits those spills that ** would require a journal sync. The doNotSyncSpill is set and cleared ** by sqlite3PagerWrite() in order to prevent a journal sync from happening |
︙ | ︙ | |||
1069 1070 1071 1072 1073 1074 1075 | static int writeMasterJournal(Pager *pPager, const char *zMaster){ int rc; /* Return code */ int nMaster; /* Length of string zMaster */ i64 iHdrOff; /* Offset of header in journal file */ i64 jrnlSize; /* Size of journal file on disk */ u32 cksum = 0; /* Checksum of string zMaster */ | > > | | 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 | static int writeMasterJournal(Pager *pPager, const char *zMaster){ int rc; /* Return code */ int nMaster; /* Length of string zMaster */ i64 iHdrOff; /* Offset of header in journal file */ i64 jrnlSize; /* Size of journal file on disk */ u32 cksum = 0; /* Checksum of string zMaster */ assert( pPager->setMaster==0 ); if( !zMaster || pPager->journalMode==PAGER_JOURNALMODE_MEMORY || pPager->journalMode==PAGER_JOURNALMODE_OFF ){ return SQLITE_OK; } pPager->setMaster = 1; assert( isOpen(pPager->jfd) ); |
︙ | ︙ |