Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix for ticket [5e10420e8d]. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
255f1eefa373153942c67b18b2217793 |
User & Date: | dan 2010-08-23 15:41:24.000 |
References
2010-08-24
| ||
12:05 | Pull the incremental_vacuum bug fix ([255f1eefa373153942c67b18b]) and the R-tree segfault bug fix ([7f2f71cc9e3c39093f09231f44]) into the 3.6.23 branch. Increase the version number to 3.6.23.3. (check-in: bcbdecd854 user: drh tags: branch-3.6.23) | |
01:59 | Cherrypick the incremental_vacuum bug fix ([255f1eefa373153942c67b18b]) into the apple-osx 3.6.23 branch. (check-in: 60f16838cc user: drh tags: apple-osx-3623) | |
2010-08-23
| ||
17:08 | • Fixed ticket [5e10420e8d]: Free-list corruption in incremental-vacuum mode plus 5 other changes (artifact: cfdf952b96 user: drh) | |
Context
2010-08-23
| ||
17:09 | Update the version number in preparation for the 3.7.2 release. (check-in: 77889510fa user: drh tags: trunk) | |
15:41 | Fix for ticket [5e10420e8d]. (check-in: 255f1eefa3 user: dan tags: trunk) | |
15:26 | Update the "showdb" debug utility to handle 64K pages and with extra options to decode the freelist structure. (check-in: 1070918e3b user: drh tags: trunk) | |
Changes
Changes to src/btree.c.
︙ | ︙ | |||
4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 | if( rc ){ goto end_allocate_page; } if( k==0 ){ if( !pPrevTrunk ){ memcpy(&pPage1->aData[32], &pTrunk->aData[0], 4); }else{ memcpy(&pPrevTrunk->aData[0], &pTrunk->aData[0], 4); } }else{ /* The trunk page is required by the caller but it contains ** pointers to free-list leaves. The first leaf becomes a trunk ** page in this case. */ | > > > > | 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 | if( rc ){ goto end_allocate_page; } if( k==0 ){ if( !pPrevTrunk ){ memcpy(&pPage1->aData[32], &pTrunk->aData[0], 4); }else{ rc = sqlite3PagerWrite(pPrevTrunk->pDbPage); if( rc!=SQLITE_OK ){ goto end_allocate_page; } memcpy(&pPrevTrunk->aData[0], &pTrunk->aData[0], 4); } }else{ /* The trunk page is required by the caller but it contains ** pointers to free-list leaves. The first leaf becomes a trunk ** page in this case. */ |
︙ | ︙ |
Added test/tkt-5e10420e8d.test.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | # 2010 August 23 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # set testdir [file dirname $argv0] source $testdir/tester.tcl do_execsql_test tkt-5e10420e8d.1 { PRAGMA page_size = 1024; PRAGMA auto_vacuum = incremental; CREATE TABLE t1(x); CREATE TABLE t2(x); CREATE TABLE t3(x); } {} do_execsql_test tkt-5e10420e8d.2 { INSERT INTO t3 VALUES(randomblob(500 + 1024*248)); INSERT INTO t1 VALUES(randomblob(1500)); INSERT INTO t2 VALUES(randomblob(500 + 1024*248)); DELETE FROM t3; DELETE FROM t2; DELETE FROM t1; } {} do_execsql_test tkt-5e10420e8d.3 { PRAGMA incremental_vacuum(248) } {} do_execsql_test tkt-5e10420e8d.4 { PRAGMA incremental_vacuum(1) } {} db close sqlite3 db test.db do_execsql_test tkt-5e10420e8d.5 { PRAGMA integrity_check; } {ok} finish_test |