Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Enhance the scrub utility program so that it does a FULL checkpoint prior to starting the backup, to ensure that the database file content matches what needs to be backed up without having to look at the WAL file. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | scrub-backup |
Files: | files | file ages | folders |
SHA1: |
ab1c5ce50f139070d7a322f43132a93c |
User & Date: | drh 2016-05-17 21:17:51.530 |
Context
2016-05-18
| ||
21:03 | Add the "scrub" utility program that simultaneously backs-up a live database and erases all deleted content. (check-in: c981ab2a47 user: drh tags: trunk) | |
2016-05-17
| ||
21:17 | Enhance the scrub utility program so that it does a FULL checkpoint prior to starting the backup, to ensure that the database file content matches what needs to be backed up without having to look at the WAL file. (Closed-Leaf check-in: ab1c5ce50f user: drh tags: scrub-backup) | |
17:11 | Merge the latest changes from trunk. (check-in: 5021dfe1f3 user: drh tags: scrub-backup) | |
Changes
Changes to ext/misc/scrub.c.
︙ | ︙ | |||
160 161 162 163 164 165 166 | SQLITE_OPEN_READWRITE | SQLITE_OPEN_URI | SQLITE_OPEN_PRIVATECACHE, 0); if( p->rcErr ){ scrubBackupErr(p, "cannot open source database: %s", sqlite3_errmsg(p->dbSrc)); return; } | | > > > > > > > | 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | SQLITE_OPEN_READWRITE | SQLITE_OPEN_URI | SQLITE_OPEN_PRIVATECACHE, 0); if( p->rcErr ){ scrubBackupErr(p, "cannot open source database: %s", sqlite3_errmsg(p->dbSrc)); return; } p->rcErr = sqlite3_exec(p->dbSrc, "SELECT 1 FROM sqlite_master; BEGIN;", 0, 0, 0); if( p->rcErr ){ scrubBackupErr(p, "cannot start a read transaction on the source database: %s", sqlite3_errmsg(p->dbSrc)); return; } rc = sqlite3_wal_checkpoint_v2(p->dbSrc, "main", SQLITE_CHECKPOINT_FULL, 0, 0); if( rc ){ scrubBackupErr(p, "cannot checkpoint the source database"); return; } pStmt = scrubBackupPrepare(p, p->dbSrc, "PRAGMA page_size"); if( pStmt==0 ) return; rc = sqlite3_step(pStmt); if( rc==SQLITE_ROW ){ p->szPage = sqlite3_column_int(pStmt, 0); }else{ |
︙ | ︙ |