Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | In a checkpoint, figure out if it is possible to checkpoint any frames at all before creating the wal-iterator. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
044b0b65e716bffeddedbd1b0360c4c3 |
User & Date: | dan 2018-03-02 16:52:47.523 |
References
2018-03-05
| ||
23:23 | Fix walIteratorInit() so that it always leaves the iterator as a NULL pointer if an OOM occurs. This fixes an assertion fault introduced by check-in [044b0b65e716bff]. (check-in: e5ce256aa1 user: drh tags: trunk) | |
Context
2018-03-02
| ||
20:00 | In sqlite3_checker, wrap the call to "SELECT checkfreelist()" in a transaction. (check-in: 02906e55d7 user: dan tags: trunk) | |
17:59 | Update this branch with recent checkpoint related changes from trunk. (check-in: fb6b793860 user: dan tags: begin-concurrent) | |
16:52 | In a checkpoint, figure out if it is possible to checkpoint any frames at all before creating the wal-iterator. (check-in: 044b0b65e7 user: dan tags: trunk) | |
15:42 | Optimize the obscure case of running a checkpoint against a very large wal file for which a large percentage of the frames have already been checkpointed. (check-in: 0f5057dffa user: dan tags: trunk) | |
Changes
Changes to src/wal.c.
︙ | ︙ | |||
1785 1786 1787 1788 1789 1790 1791 | szPage = walPagesize(pWal); testcase( szPage<=32768 ); testcase( szPage>=65536 ); pInfo = walCkptInfo(pWal); if( pInfo->nBackfill<pWal->hdr.mxFrame ){ | < < < < < < < | 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 | szPage = walPagesize(pWal); testcase( szPage<=32768 ); testcase( szPage>=65536 ); pInfo = walCkptInfo(pWal); if( pInfo->nBackfill<pWal->hdr.mxFrame ){ /* EVIDENCE-OF: R-62920-47450 The busy-handler callback is never invoked ** in the SQLITE_CHECKPOINT_PASSIVE mode. */ assert( eMode!=SQLITE_CHECKPOINT_PASSIVE || xBusy==0 ); /* Compute in mxSafeFrame the index of the last frame of the WAL that is ** safe to write into the database. Frames beyond mxSafeFrame might ** overwrite database pages that are in use by active readers and thus |
︙ | ︙ | |||
1828 1829 1830 1831 1832 1833 1834 | xBusy = 0; }else{ goto walcheckpoint_out; } } } | > | > > > > > | 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 | xBusy = 0; }else{ goto walcheckpoint_out; } } } /* Allocate the iterator */ if( pInfo->nBackfill<mxSafeFrame ){ rc = walIteratorInit(pWal, pInfo->nBackfill, &pIter); assert( rc==SQLITE_OK || pIter==0 ); } if( pIter && (rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_READ_LOCK(0),1))==SQLITE_OK ){ i64 nSize; /* Current size of database file */ u32 nBackfill = pInfo->nBackfill; pInfo->nBackfillAttempted = mxSafeFrame; |
︙ | ︙ |