Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | An unintentional fork was created due to a typo when creating branch-3.18. This check-in resolves the fork and is the 3.18.1 release candidate. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | branch-3.18 |
Files: | files | file ages | folders |
SHA3-256: |
20e5ffb1ceed514bf812ea5a2ce027b5 |
User & Date: | drh 2017-06-16 12:15:25.099 |
Context
2017-06-16
| ||
13:41 | Version 3.18.1 (check-in: 77bb46233d user: drh tags: release, branch-3.18, version-3.18.1) | |
12:15 | An unintentional fork was created due to a typo when creating branch-3.18. This check-in resolves the fork and is the 3.18.1 release candidate. (check-in: 20e5ffb1ce user: drh tags: branch-3.18) | |
2017-06-15
| ||
07:47 | Increase the version number to 3.18.1. (check-in: 4be2eba8c1 user: drh tags: branch-3.18) | |
2017-06-12
| ||
23:44 | Ensure pointer map entries are always added when a row that does use overflow pages replaces one that does not in an auto-vacuum database. Fix for [fda22108]. (check-in: 30c50f0e06 user: drh tags: branch-3.18) | |
Changes
Changes to src/btree.c.
︙ | ︙ | |||
8171 8172 8173 8174 8175 8176 8177 | goto end_insert; } oldCell = findCell(pPage, idx); if( !pPage->leaf ){ memcpy(newCell, oldCell, 4); } rc = clearCell(pPage, oldCell, &info); | | > > | > > > > | 8171 8172 8173 8174 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 | goto end_insert; } oldCell = findCell(pPage, idx); if( !pPage->leaf ){ memcpy(newCell, oldCell, 4); } rc = clearCell(pPage, oldCell, &info); if( info.nSize==szNew && info.nLocal==info.nPayload && (!ISAUTOVACUUM || szNew<pPage->minLocal) ){ /* Overwrite the old cell with the new if they are the same size. ** We could also try to do this if the old cell is smaller, then add ** the leftover space to the free list. But experiments show that ** doing that is no faster then skipping this optimization and just ** calling dropCell() and insertCell(). ** ** This optimization cannot be used on an autovacuum database if the ** new entry uses overflow pages, as the insertCell() call below is ** necessary to add the PTRMAP_OVERFLOW1 pointer-map entry. */ assert( rc==SQLITE_OK ); /* clearCell never fails when nLocal==nPayload */ if( oldCell+szNew > pPage->aDataEnd ) return SQLITE_CORRUPT_BKPT; memcpy(oldCell, newCell, szNew); return SQLITE_OK; } dropCell(pPage, idx, info.nSize, &rc); if( rc ) goto end_insert; |
︙ | ︙ |
Changes to test/autovacuum.test.
︙ | ︙ | |||
701 702 703 704 705 706 707 708 709 | execsql { INSERT INTO t1 SELECT NULL, randstr(50,50) FROM t1 } } {} do_test autovacuum-9.5 { execsql { DELETE FROM t1 WHERE rowid > (SELECT max(a)/2 FROM t1) } file size test.db } $::sqlite_pending_byte finish_test | > > > > > > > | 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 | execsql { INSERT INTO t1 SELECT NULL, randstr(50,50) FROM t1 } } {} do_test autovacuum-9.5 { execsql { DELETE FROM t1 WHERE rowid > (SELECT max(a)/2 FROM t1) } file size test.db } $::sqlite_pending_byte do_execsql_test autovacuum-10.1 { DROP TABLE t1; CREATE TABLE t1(a INTEGER PRIMARY KEY, b); INSERT INTO t1 VALUES(25, randomblob(104)); REPLACE INTO t1 VALUES(25, randomblob(1117)); PRAGMA integrity_check; } {ok} finish_test |