Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a problem causing the database to be truncated to the wrong size after an incremental-vacuum is performed on a database in full auto-vacuum mode. (CVS 5094) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
ed98df24a3362c2d20f52bb1ce679787 |
User & Date: | danielk1977 2008-05-07 07:13:16.000 |
Context
2008-05-07
| ||
12:29 | Omit mutex variables in the pager when threadsafe is disabled. (CVS 5095) (check-in: d15d0bbab0 user: drh tags: trunk) | |
07:13 | Fix a problem causing the database to be truncated to the wrong size after an incremental-vacuum is performed on a database in full auto-vacuum mode. (CVS 5094) (check-in: ed98df24a3 user: danielk1977 tags: trunk) | |
02:42 | Only look for config.h if the autoconf-based build is being used, and don't inline it into the amalgamation. (CVS 5093) (check-in: 7df9ef2c82 user: mlcreech tags: trunk) | |
Changes
Changes to src/btree.c.
1 2 3 4 5 6 7 8 9 10 11 | /* ** 2004 April 6 ** ** 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. ** ************************************************************************* | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | /* ** 2004 April 6 ** ** 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. ** ************************************************************************* ** $Id: btree.c,v 1.456 2008/05/07 07:13:16 danielk1977 Exp $ ** ** This file implements a external (disk-based) database using BTrees. ** See the header comment on "btreeInt.h" for additional information. ** Including a description of file format and an overview of operation. */ #include "btreeInt.h" |
︙ | ︙ | |||
2317 2318 2319 2320 2321 2322 2323 | while( rc==SQLITE_OK ){ rc = incrVacuumStep(pBt, nFin); } if( rc==SQLITE_DONE ){ assert(nFin==0 || pBt->nTrunc==0 || nFin<=pBt->nTrunc); rc = SQLITE_OK; | | | 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 | while( rc==SQLITE_OK ){ rc = incrVacuumStep(pBt, nFin); } if( rc==SQLITE_DONE ){ assert(nFin==0 || pBt->nTrunc==0 || nFin<=pBt->nTrunc); rc = SQLITE_OK; if( pBt->nTrunc && nFin ){ rc = sqlite3PagerWrite(pBt->pPage1->pDbPage); put4byte(&pBt->pPage1->aData[32], 0); put4byte(&pBt->pPage1->aData[36], 0); pBt->nTrunc = nFin; } } if( rc!=SQLITE_OK ){ |
︙ | ︙ |
Changes to test/incrvacuum2.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2007 May 04 # # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing the incremental vacuum feature. # | | > | 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 | # 2007 May 04 # # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing the incremental vacuum feature. # # $Id: incrvacuum2.test,v 1.5 2008/05/07 07:13:16 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # If this build of the library does not support auto-vacuum, omit this # whole file. ifcapable {!autovacuum || !pragma} { finish_test return } # If the OMIT_INCRBLOB symbol was defined at compile time, there # is no zeroblob() function available. So create a similar # function here using Tcl. It doesn't return a blob, but it returns # data of the required length, which is good enough for this # test file. ifcapable !incrblob { proc zeroblob {n} { string repeat 0 $n } db function zeroblob zeroblob } # Create a database in incremental vacuum mode that has many # pages on the freelist. # do_test incrvacuum2-1.1 { execsql { PRAGMA page_size=1024; |
︙ | ︙ | |||
118 119 120 121 122 123 124 | execsql { PRAGMA incremental_vacuum(1) } list [file size test.db] [file size test2.db] } {26624 3072} } | > > > > > > > | > > > > > > > | > > > > | 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | execsql { PRAGMA incremental_vacuum(1) } list [file size test.db] [file size test2.db] } {26624 3072} } do_test incrvacuum2-3.1 { execsql { PRAGMA auto_vacuum = 'full'; BEGIN; CREATE TABLE abc(a); INSERT INTO abc VALUES(randstr(1500,1500)); COMMIT; } } {} do_test incrvacuum2-3.2 { execsql { BEGIN; DELETE FROM abc; PRAGMA incremental_vacuum; COMMIT; } } {} integrity_check incremental2-3.3 finish_test |