SQLite

Check-in [255f1eefa3]
Login

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: 255f1eefa373153942c67b18b22177933657911d
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
Side-by-Side Diff Ignore Whitespace Patch
Changes to src/btree.c.
4803
4804
4805
4806
4807
4808
4809




4810
4811
4812
4813
4814
4815
4816
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