gitlab.com/CoiaPrant/sqlite3@v1.19.1/testdata/tcl/corruptL.test (about)

     1  # 2019-01-11
     2  #
     3  # The author disclaims copyright to this source code.  In place of
     4  # a legal notice, here is a blessing:
     5  #
     6  #    May you do good and not evil.
     7  #    May you find forgiveness for yourself and forgive others.
     8  #    May you share freely, never taking more than you give.
     9  #
    10  #***********************************************************************
    11  #
    12  
    13  set testdir [file dirname $argv0]
    14  source $testdir/tester.tcl
    15  set testprefix corruptL
    16  
    17  database_may_be_corrupt
    18  
    19  #-------------------------------------------------------------------------
    20  reset_db
    21  do_test 1.0 {
    22    sqlite3 db {}
    23    db deserialize [decode_hexdb {
    24  | size 356352 pagesize 4096 filename crash-acaae0347204ae.db
    25  | page 1 offset 0
    26  |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
    27  |     16: 10 00 01 01 00 40 20 20 00 00 00 00 d0 00 00 00   .....@  ........
    28  |     32: 40 00 ea 00 00 00 00 00 00 40 00 00 00 40 00 00   @........@...@..
    29  |     96: 00 00 00 00 0d 00 00 00 04 0e 9c 00 0f ad 0f 4f   ...............O
    30  |    112: 0e fc 0e 9c 00 00 00 00 00 00 00 00 00 00 00 00   ................
    31  |   3728: 00 00 00 00 00 00 00 00 00 00 00 00 5e 04 07 17   ............^...
    32  |   3744: 1f 1f 01 81 0b 74 61 62 6c 65 74 31 5f 70 61 72   .....tablet1_par
    33  |   3760: 65 6e 74 74 31 5f 70 61 72 65 6e 74 04 43 52 45   entt1_parent.CRE
    34  |   3776: 41 54 45 20 54 41 42 4c 45 20 22 74 31 5f 70 61   ATE TABLE .t1_pa
    35  |   3792: 72 65 6e 74 22 28 6e 6f 64 65 6e 6f 20 49 4e 54   rent.(nodeno INT
    36  |   3808: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59   EGER PRIMARY KEY
    37  |   3824: 2c 70 61 72 65 6e 74 6e 6f 64 65 29 51 03 06 17   ,parentnode)Q...
    38  |   3840: 1b 1b 01 7b 74 61 62 6c 65 74 31 5f 6e 6f 64 65   ....tablet1_node
    39  |   3856: 74 31 5f 6e 6f 64 65 03 43 52 45 41 54 45 20 54   t1_node.CREATE T
    40  |   3872: 41 42 4c 45 20 22 74 31 5f 6e 6f 64 65 22 28 6e   ABLE .t1_node.(n
    41  |   3888: 6f 64 65 6e 6f 20 49 4e 54 45 47 45 52 20 50 52   odeno INTEGER PR
    42  |   3904: 49 4d 41 52 59 20 4b 45 59 2c 64 61 74 61 29 5c   IMARY KEY,data).
    43  |   3920: 02 07 17 1d 1d 01 81 0b 74 61 62 6c 65 74 31 5f   ........tablet1_
    44  |   3936: 72 6f 77 69 64 74 31 5f 72 6f 77 69 64 02 43 52   rowidt1_rowid.CR
    45  |   3952: 45 41 54 45 20 54 41 42 4c 45 20 22 74 31 5f 72   EATE TABLE .t1_r
    46  |   3968: 6f 77 69 64 22 28 72 6f 77 69 64 20 49 4e 54 45   owid.(rowid INTE
    47  |   3984: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c   GER PRIMARY KEY,
    48  |   4000: 6e 6f 64 65 6e 6f 2c 61 30 2c 61 31 29 51 01 07   nodeno,a0,a1)Q..
    49  |   4016: 17 11 11 08 81 0f 74 61 62 6c 65 74 31 74 31 43   ......tablet1t1C
    50  |   4032: 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41   REATE VIRTUAL TA
    51  |   4048: 42 4c 45 20 74 31 20 55 53 49 4e 47 20 72 74 72   BLE t1 USING rtr
    52  |   4064: 65 65 28 69 64 2c 78 30 20 50 52 49 4d 41 52 59   ee(id,x0 PRIMARY
    53  |   4080: 20 4b 45 59 2c 70 61 72 65 6e 74 6e 6f 64 65 29    KEY,parentnode)
    54  | page 2 offset 4096
    55  |      0: 51 03 06 17 1b 1b 01 7b 74 61 62 6c 65 74 31 5f   Q.......tablet1_
    56  |     16: 6e 6f 64 65 74 31 5f 6e 6f 64 65 03 43 52 45 41   nodet1_node.CREA
    57  |     32: 54 45 20 54 41 42 4c 45 20 22 74 31 5f 6e 6f 64   TE TABLE .t1_nod
    58  |     48: 65 22 28 6e 6f 64 65 6e 6f 20 49 4e 54 45 47 45   e.(nodeno INTEGE
    59  |     64: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 64 61   R PRIMARY KEY,da
    60  |     80: 74 61 29 5c 02 07 17 1d 1d 01 81 0b 74 61 62 6c   ta).........tabl
    61  |     96: 65 74 31 5f 72 6f 77 69 64 74 31 5f 72 6f 77 69   et1_rowidt1_rowi
    62  |    112: 64 02 43 52 45 41 54 45 20 54 41 42 4c 45 00 00   d.CREATE TABLE..
    63  |    128: 01 0a 02 00 00 00 01 0e 0d 00 00 00 00 24 0e 0d   .............$..
    64  |    144: 0c 1a 06 85 50 46 60 27 70 08 00 00 00 00 00 00   ....PF`'p.......
    65  |   3824: 00 00 00 00 00 00 00 0d 0e 05 00 09 1d 00 74 6f   ..............to
    66  |   3840: 79 20 68 61 6c 66 10 0d 05 00 09 23 00 62 6f 74   y half.....#.bot
    67  |   3856: 74 6f 6d 20 68 61 6c 66 0f 0c 05 00 09 21 00 72   tom half.....!.r
    68  |   3872: 69 67 68 74 20 68 61 6c 66 0e 0b 05 00 09 1f 00   ight half.......
    69  |   3888: 6c 65 66 74 20 43 15 f6 e6 f6 46 50 34 35 24 54   left C....FP45$T
    70  |   3904: 15 44 52 05 44 14 24 c4 52 02 27 43 15 f6 e6 f6   .DR.D.$.R.'C....
    71  |   3920: 46 52 22 8e 6f 64 65 6e 6f 20 49 4e 54 45 47 45   FR..odeno INTEGE
    72  |   3936: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 64 61   R PRIMARY KEY,da
    73  |   3952: 74 61 29 5c 02 07 17 1d 1d 01 81 0b 74 61 62 6c   ta).........tabl
    74  |   3968: 65 74 31 5f 72 6f 74 74 6f 6d 20 65 64 67 65 0f   et1_rottom edge.
    75  |   3984: 07 05 00 09 21 00 72 69 67 68 74 20 65 64 67 65   ....!.right edge
    76  |   4000: 0e 06 05 00 09 1f 00 6c 65 66 74 20 65 64 67 65   .......left edge
    77  |   4016: 0b 05 05 00 09 19 00 63 65 6e 74 65 72 17 04 05   .......center...
    78  |   4032: 00 09 31 00 75 70 70 65 72 2d 72 69 67 68 74 20   ..1.upper-right 
    79  |   4048: 63 6f 72 6e 65 72 17 03 05 00 09 31 00 6c 6f 77   corner.....1.low
    80  |   4064: 65 72 2d 72 69 67 68 74 20 63 6f 72 6e 65 72 16   er-right corner.
    81  |   4080: 02 05 00 09 2f 00 75 70 70 65 72 2d 6c 65 66 74   ..../.upper-left
    82  | page 3 offset 8192
    83  |      0: 20 63 6f 72 6e 65 72 16 01 05 00 09 2f 01 8c 6f    corner...../..o
    84  |     16: 77 65 72 2d 6c 53 51 4c 69 74 65 20 66 6f 72 6d   wer-lSQLite form
    85  |     32: 61 74 20 33 00 10 00 01 01 00 40 20 20 00 00 00   at 3......@  ...
    86  |     48: 00 00 00 00 2f 00 00 0d eb 13 00 00 00 03 00 00   ..../...........
    87  |     64: 00 04 00 00 00 00 00 00 00 06 00 00 00 01 00 00   ................
    88  |     80: 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00   ................
    89  | page 6 offset 20480
    90  |    128: 00 00 00 00 00 00 00 00 97 3d 04 ae 7c 01 00 00   .........=..|...
    91  |    624: 00 00 00 00 00 00 21 97 3d 04 ae 7c 01 00 00 00   ......!.=..|....
    92  |   1120: 00 00 00 00 00 20 97 3d 04 ae 7c 01 00 00 00 00   ..... .=..|.....
    93  |   1616: 00 00 00 00 1f 97 3d 04 ae 7c 01 00 00 00 00 00   ......=..|......
    94  |   2112: 00 00 00 1e 97 3d 04 ae 7c 01 00 00 00 00 00 00   .....=..|.......
    95  |   2608: 00 00 1d 97 d3 d0 4a e7 c0 00 00 00 00 00 00 00   ......J.........
    96  |   3088: 00 00 00 00 00 00 00 00 00 00 00 00 01 f3 00 00   ................
    97  |   3600: 23 97 3d 04 ae 7c 01 00 00 00 00 00 00 00 00 00   #.=..|..........
    98  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 26   ...............&
    99  | page 8 offset 28672
   100  |      0: 0d 00 00 00 01 04 30 00 04 30 00 00 00 00 00 00   ......0..0......
   101  |   1072: 97 4d 1e 14 00 ae 7c 00 00 00 00 00 00 00 00 00   .M....|.........
   102  |   1088: 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00   ................
   103  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03   ................
   104  | page 10 offset 36864
   105  |      0: 0d 00 00 00 01 04 30 00 04 30 00 00 00 00 00 00   ......0..0......
   106  |   1072: 9a ee c1 80 fd 78 1f ce 1b ae eb b4 00 00 00 00   .....x..........
   107  |   1088: 13 20 ff 20 00 70 00 00 00 60 50 00 00 00 11 e0   . . .p...`P.....
   108  |   1104: 00 00 00 70 00 00 00 60 50 05 35 14 c6 97 46 52   ...p...`P.5...FR
   109  |   1120: 06 66 f7 26 d6 17 42 03 30 01 00 00 10 10 04 02   .f.&..B.0.......
   110  |   1136: 02 00 00 00 00 00 00 00 00 40 00 00 00 00 00 00   .........@......
   111  |   1152: 00 00 00 00 00 40 00 00 00 40 00 00 00 00 00 00   .....@...@......
   112  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05   ................
   113  | page 12 offset 45056
   114  |      0: 0d 00 00 00 01 04 30 00 04 30 e1 b4 30 97 4d 46   ......0..0..0.MF
   115  |     16: 14 00 ae 7c 00 00 00 00 00 00 00 03 00 00 43 00   ...|..........C.
   116  | page 47 offset 188416
   117  |   2512: 00 00 00 00 00 00 00 00 be 00 00 00 00 00 00 00   ................
   118  | page 87 offset 352256
   119  |   2512: 00 00 00 00 00 00 00 00 aa 00 00 00 00 00 00 00   ................
   120  | end crash-acaae0347204ae.db
   121  }]} {}
   122  
   123  do_catchsql_test 1.1 {
   124    PRAGMA cell_size_check = off;
   125    DROP INDEX t1x1;
   126  } {1 {database disk image is malformed}}
   127  
   128  do_catchsql_test 1.2 {
   129    SELECT sum(s+length(b)) FROM t1 WHERE a IN (110,10,150) AND q IS NULL;
   130  } {1 {database disk image is malformed}}
   131  
   132  do_catchsql_test 1.3 {
   133    REINDEX t1;
   134  } {1 {database disk image is malformed}}
   135  
   136  do_catchsql_test 1.4 {
   137    PRAGMA integrity_check
   138  } {1 {database disk image is malformed}}
   139  
   140  
   141  #-------------------------------------------------------------------------
   142  reset_db
   143  do_test 2.0 {
   144    sqlite3 db {}
   145    db deserialize [decode_hexdb {
   146  | size 20480 pagesize 4096 filename crash.txt.db
   147  | page 1 offset 0
   148  |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
   149  |     16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 05   .....@  ........
   150  |     32: 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 04   ................
   151  |     48: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00   ................
   152  |     96: 00 00 00 00 0d 00 00 00 05 0e 55 00 0f 74 0f 3c   ..........U..t.<
   153  |    112: 0e f9 0e d1 0e 55 00 00 00 00 00 00 00 00 00 00   .....U..........
   154  |   3664: 00 00 00 00 00 7a 05 07 15 11 11 08 81 63 76 69   .....z.......cvi
   155  |   3680: 65 77 76 31 76 31 43 52 45 41 54 45 20 56 49 45   ewv1v1CREATE VIE
   156  |   3696: 57 20 76 31 28 78 2c 79 29 20 41 53 0a 53 45 4c   W v1(x,y) AS.SEL
   157  |   3712: 45 43 54 20 74 31 2e 62 2c 74 32 2e 62 20 46 52   ECT t1.b,t2.b FR
   158  |   3728: 4f 4d 20 74 31 2c 74 32 20 57 48 45 52 45 20 74   OM t1,t2 WHERE t
   159  |   3744: 31 2e 61 3d 74 32 2e 61 20 47 52 4f 55 50 20 42   1.a=t2.a GROUP B
   160  |   3760: 59 20 31 20 48 41 56 49 4e 47 20 74 32 2e 63 20   Y 1 HAVING t2.c 
   161  |   3776: 4e 4f 54 20 4e 55 4c 4c 0a 4c 49 4d 49 54 20 31   NOT NULL.LIMIT 1
   162  |   3792: 30 26 04 06 17 11 11 01 39 74 61 62 6c 65 74 32   0&......9tablet2
   163  |   3808: 74 32 05 43 52 45 41 54 45 20 54 41 42 4c 45 20   t2.CREATE TABLE 
   164  |   3824: 74 32 28 61 2c 62 2c 63 29 41 03 06 17 15 11 01   t2(a,b,c)A......
   165  |   3840: 6b 69 6e 64 65 78 74 31 78 31 74 31 04 43 52 45   kindext1x1t1.CRE
   166  |   3856: 41 54 45 20 49 4e 44 45 58 20 73 31 78 31 20 4f   ATE INDEX s1x1 O
   167  |   3872: 4e 20 74 31 28 64 29 20 57 48 45 52 45 20 65 65   N t1(d) WHERE ee
   168  |   3888: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 36 02 06 17    IS NOT NULL6...
   169  |   3904: 17 11 01 53 69 6e 64 65 78 74 31 61 62 63 74 31   ...Sindext1abct1
   170  |   3920: 03 43 52 45 41 54 45 20 49 4e 44 45 58 20 74 31   .CREATE INDEX t1
   171  |   3936: 61 62 63 20 4f 4e 20 74 31 28 61 2c 62 2c 63 2b   abc ON t1(a,b,c+
   172  |   3952: 64 2b 65 29 81 09 01 07 17 11 11 01 81 7d 74 61   d+e)..........ta
   173  |   3968: 62 6c 65 74 31 74 31 02 43 52 45 41 54 45 20 54   blet1t1.CREATE T
   174  |   3984: 41 42 4c 45 20 74 31 28 61 2c 62 2c 63 2c 64 2c   ABLE t1(a,b,c,d,
   175  |   4000: 65 2c 66 2c 67 2c 68 2c 6a 2c 6a 6a 2c 6a 6a 6a   e,f,g,h,j,jj,jjj
   176  |   4016: 2c 6b 2c 61 61 2c 62 62 2c 63 63 2c 64 64 2c 65   ,k,aa,bb,cc,dd,e
   177  |   4032: 65 20 44 45 46 41 55 4c 54 20 33 2e 31 34 2c 0a   e DEFAULT 3.14,.
   178  |   4048: 66 66 20 44 45 46 41 55 4c 54 28 27 68 69 63 63   ff DEFAULT('hicc
   179  |   4064: 75 70 27 29 2c 67 67 20 4e 4f 54 20 4e 55 4c 4c   up'),gg NOT NULL
   180  |   4080: 20 44 45 46 41 55 4c 54 28 66 61 6c 73 65 29 29    DEFAULT(false))
   181  | page 2 offset 4096
   182  |      0: 0d 00 00 00 0a 0e 7b 00 0f dc 0f b6 0f 8f 0f 68   ...............h
   183  |     16: 0f 41 0f 1a 0e f3 0e cb 0e a3 0e 7b 00 00 00 00   .A..............
   184  |   3696: 00 00 00 00 00 00 00 00 00 00 00 26 0a 14 01 01   ...........&....
   185  |   3712: 02 08 00 00 00 00 00 00 00 00 00 00 00 00 07 19   ................
   186  |   3728: 08 09 5a 00 b4 40 09 1e b8 51 eb 85 1f 68 69 63   ..Z..@...Q...hic
   187  |   3744: 63 75 70 26 09 14 01 01 02 08 00 00 00 00 00 00   cup&............
   188  |   3760: 00 00 00 00 00 00 07 19 08 08 50 00 a0 40 09 1e   ..........P..@..
   189  |   3776: b8 51 eb 85 1f 68 69 63 63 75 70 26 08 14 01 01   .Q...hiccup&....
   190  |   3792: 02 08 00 00 00 00 00 00 00 00 00 00 00 00 07 19   ................
   191  |   3808: 08 07 46 00 8c 40 09 1e b8 51 eb 85 1f 68 69 63   ..F..@...Q...hic
   192  |   3824: 63 75 70 25 07 14 01 01 01 08 00 00 00 00 00 00   cup%............
   193  |   3840: 00 00 00 00 00 00 07 b9 08 06 3c 78 40 09 1e b8   ..........<x@...
   194  |   3856: 51 eb 85 1f 68 69 63 63 75 70 25 06 14 01 00 01   Q...hiccup%.....
   195  |   3872: 08 00 00 00 00 00 00 00 00 00 00 00 00 07 19 08   ................
   196  |   3888: 05 32 64 40 09 1e b8 51 eb 85 1f 68 69 63 63 75   .2d@...Q...hiccu
   197  |   3904: 70 25 05 14 01 01 01 08 00 00 00 00 00 00 00 00   p%..............
   198  |   3920: 00 00 00 00 07 19 08 04 28 50 40 09 1e b8 51 eb   ........(P@...Q.
   199  |   3936: 85 1f 68 69 63 63 75 70 25 04 14 01 01 01 08 00   ..hiccup%.......
   200  |   3952: 00 00 00 00 00 00 00 00 00 00 00 07 19 08 03 1e   ................
   201  |   3968: 3c 40 09 1e b8 51 eb 85 1f 68 69 63 63 75 70 25   <@...Q...hiccup%
   202  |   3984: 03 14 01 01 01 08 00 00 00 00 00 00 00 00 00 00   ................
   203  |   4000: 00 00 07 19 08 02 14 28 40 09 1e b8 51 eb 85 1f   .......(@...Q...
   204  |   4016: 68 69 63 63 75 70 24 02 14 09 01 01 08 00 00 00   hiccup$.........
   205  |   4032: 00 00 00 00 00 00 00 00 00 07 19 08 0a 14 40 09   ..............@.
   206  |   4048: 1e b8 51 eb 85 1f 68 69 63 63 75 70 22 01 14 08   ..Q...hiccup....
   207  |   4064: 08 08 07 ff ff ff ff ff ff 00 00 00 00 00 00 07   ................
   208  |   4080: 19 08 40 09 1e b8 51 eb 85 1f 68 69 63 63 75 70   ..@...Q...hiccup
   209  | page 3 offset 8192
   210  |      0: 0a 00 00 00 0a 0f aa 00 0f fa 0f f2 0f e9 0f e0   ................
   211  |     16: 0f d7 0f ce 0f c5 0f bc 0e b3 0f aa 00 00 00 00   ................
   212  |   4000: 00 00 00 00 00 00 00 00 00 00 08 05 01 01 00 01   ................
   213  |   4016: 09 5a 0a 08 05 01 01 00 01 08 50 09 08 05 01 01   .Z........P.....
   214  |   4032: 00 01 07 46 08 08 05 01 01 00 01 06 3c 07 08 05   ...F........<...
   215  |   4048: 01 01 00 01 05 32 06 08 05 01 01 00 01 04 28 05   .....2........(.
   216  |   4064: 08 05 01 01 00 01 03 1e 04 08 05 01 01 00 01 02   ................
   217  |   4080: 14 03 07 05 09 01 00 01 0a 02 05 05 08 08 00 09   ................
   218  | page 4 offset 12288
   219  |      0: 0a 00 00 00 0a 0f cf 00 0f fc 0f f7 0f f2 0f ed   ................
   220  |     16: 0f e8 0f e3 0f de 0f d9 0f d4 0f cf 00 00 00 00   ................
   221  |   4032: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04   ................
   222  |   4048: 03 08 01 0a 04 03 08 01 09 04 03 08 01 08 04 03   ................
   223  |   4064: 08 01 07 04 03 08 01 06 04 03 08 01 05 04 03 08   ................
   224  |   4080: 01 04 04 03 08 01 13 04 03 08 01 02 03 03 08 09   ................
   225  | page 5 offset 16384
   226  |      0: 0d 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00   ................
   227  | end crash.txt.db
   228  }]} {}
   229  
   230  do_execsql_test 2.1 {
   231    PRAGMA writable_schema=ON; -- bypass improved sqlite_master consistency checking
   232    INSERT INTO t1(b) VALUES(X'a0fee3669f9fddefc5cba913e4225d4b6ce2b04f26b87fad3ee6f9b7d90a1ea62a169bf41e5d32707a6ca5c3d05e4bde05c9d89eaaa8c50e74333d2e9fcd7dfe95528a3a016aac1102d825c5cd70cf99d8a88e0ea7f798d4334386518b7ad359beb168b93aba059a2a3bd93112d65b44c12b9904ea786b204d80531cdf0504bf9b203dbe927061974caf7b9f30cbc3397b61f802e732012a6663d41c3607d6f1c0dbcfd489adac05ca500c0b04439d894cd93a840159225ef73b627e178b9f84b3ffe66cf22a963a8368813ff7961fc47f573211ccec95e0220dcbb3bf429f4a50ba54d7a53784ac51bfef346e6ac8ae0d0e7c3175946e62ba2b');
   233  }
   234  
   235  do_catchsql_test 2.2 {
   236    SELECT b,c FROM t1 ORDER BY a;
   237  } {1 {database disk image is malformed}}
   238  
   239  #-------------------------------------------------------------------------
   240  reset_db
   241  do_execsql_test 3.0 {
   242    CREATE TABLE t1(a, b, c, d INTEGER PRIMARY KEY);
   243    CREATE TABLE t2(a, b, c, d INTEGER PRIMARY KEY);
   244  
   245    INSERT INTO t1(a, b, c, d) VALUES (1, 2, 3, 100), (4, 5, 6, 101);
   246    INSERT INTO t2(a, b, c, d) VALUES (1, 100, 3, 1000), (4, 101, 6, 1001);
   247  
   248    CREATE INDEX t1a ON t1(a);
   249    CREATE INDEX t2a ON t2(a, b, c);
   250  
   251    PRAGMA writable_schema = 1;
   252    UPDATE sqlite_master SET sql = 'CREATE INDEX t2a ON t2(a)' WHERE name='t2a';
   253  }
   254  
   255  db close
   256  sqlite3 db test.db
   257  
   258  do_catchsql_test 3.1 {
   259    INSERT INTO t1 SELECT * FROM t2;
   260  } {1 {database disk image is malformed}}
   261  
   262  #-------------------------------------------------------------------------
   263  reset_db
   264  do_test 4.0 {
   265    sqlite3 db {}
   266    db deserialize [decode_hexdb {
   267  | size 4096 pagesize 512 filename crash-6b48ba69806134.db
   268  | page 1 offset 0
   269  |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
   270  |     16: 02 00 01 01 00 40 20 20 00 ff ff ff ff 00 00 07   .....@  ........
   271  |     32: 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 04   ................
   272  |     48: 00 00 00 00 00 00 00 05 00 eb 00 01 00 00 00 00   ................
   273  |     80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c   ................
   274  |     96: 00 2e 2c 50 0d 00 00 00 06 01 06 00 01 da 01 b0   ..,P............
   275  |    112: 05 56 01 86 01 2a 01 06 00 00 00 00 00 00 00 00   .V...*..........
   276  |    128: 00 ff 00 00 ff ff ff e1 00 00 00 00 00 00 00 00   ................
   277  |    144: 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00   ................
   278  |    160: 00 00 00 00 00 00 00 00 f2 00 00 00 00 00 00 00   ................
   279  |    176: 00 00 f9 ff ff ff ff ff ff ff 00 00 00 00 00 fb   ................
   280  |    208: 00 00 00 00 00 00 00 00 1e 00 00 00 fe 00 00 00   ................
   281  |    224: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ca 00   ................
   282  |    256: 00 00 00 00 ef ff 22 07 06 17 11 11 01 31 74 61   .............1ta
   283  |    272: 62 6c 65 74 38 38 74 04 43 52 45 41 54 45 20 54   blet88t.CREATE T
   284  |    288: 41 42 4c 45 20 74 34 28 87 29 2a 06 06 17 13 11   ABLE t4(.)*.....
   285  |    304: 01 3f 69 4f 64 65 78 74 33 78 74 33 05 43 52 45   .?iOdext3xt3.CRE
   286  |    320: 41 54 45 20 49 6e 44 45 58 20 74 33 78 20 4f 4e   ATE InDEX t3x ON
   287  |    336: 20 74 33 28 78 29 2e 04 06 17 15 11 01 45 69 6e    t3(x).......Ein
   288  |    352: 64 65 2e 74 32 63 64 74 3d 05 43 52 45 41 54 45   de.t2cdt=.CREATE
   289  |    368: 20 49 4e 44 45 58 20 74 32 63 64 20 4f 4e 20 74    INDEX t2cd ON t
   290  |    384: 32 28 0a 0c 44 29 28 05 06 17 11 11 01 3d 74 61   2(..D)(......=ta
   291  |    400: 62 6c 65 d4 33 74 33 04 43 52 45 41 54 45 20 54   ble.3t3.CREATE T
   292  |    416: 41 42 4c 45 20 74 33 28 63 2c 78 2c 65 2c 66 29   ABLE t3(c,x,e,f)
   293  |    432: 28 02 06 17 11 11 01 3d 74 61 62 6c 65 74 32 74   (......=tablet2t
   294  |    448: 32 03 43 52 45 41 54 45 20 54 41 42 4c 45 20 74   2.CREATE TABLE t
   295  |    464: 32 28 63 2c 64 2c 65 2c 66 29 24 01 06 17 11 11   2(c,d,e,f)$.....
   296  |    480: 01 35 74 60 62 6c 65 74 31 74 31 02 43 52 45 41   .5t`blet1t1.CREA
   297  |    496: 54 45 20 54 41 42 4c 45 20 74 30 28 61 2c 62 29   TE TABLE t0(a,b)
   298  | page 2 offset 512
   299  |      0: 0d 00 ff 11 04 01 cf 00 01 fa 01 f3 01 de 01 cf   ................
   300  |     32: 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 13   ................
   301  |     48: 00 00 00 00 00 00 00 00 00 00 00 01 00 20 00 00   ............. ..
   302  |     64: 00 00 00 00 00 00 f8 ff ff ff 00 00 00 00 00 00   ................
   303  |    160: 01 64 00 00 00 00 00 80 ff ff ff 00 00 00 00 00   .d..............
   304  |    176: 00 00 00 00 00 00 00 00 1f 00 00 00 00 00 00 03   ................
   305  |    192: 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00   ..@.............
   306  |    288: 00 00 00 00 00 00 ff ff ff e9 00 00 00 00 00 00   ................
   307  |    336: 01 00 00 ff ff 00 00 00 00 00 00 00 00 00 00 00   ................
   308  |    368: 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ...............
   309  |    384: 00 de ff 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
   310  |    464: 00 00 00 00 00 13 76 65 6e 65 69 67 68 74 13 03   ......veneight..
   311  |    480: 03 40 07 07 14 00 54 45 20 49 4e 44 45 58 20 74   .@....TE INDEX t
   312  |    496: 32 63 64 20 4f 4e 20 74 32 28 0a 0c 44 09 01 02   2cd ON t2(..D...
   313  | page 3 offset 1024
   314  |      0: 0d 00 00 00 48 01 54 00 01 f7 01 ec 01 c5 01 aa   ....H.T.........
   315  |     16: 30 34 28 87 29 2a 06 06 17 13 11 01 3f 69 4f 64   04(.)*......?iOd
   316  |     32: 65 79 74 33 78 74 33 6d 6d 6d 6d 6d 6d 7d 6d 6d   eyt3xt3mmmmmm.mm
   317  |     48: 6d 41 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d   mAmmmmmmmmmmmmmm
   318  |     64: 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 66 6d 6d 6d 6d   mmmmmmmmmmmfmmmm
   319  |     80: 6d 4e 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d   mNmmmmmmmmmmmmmm
   320  |     96: 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d   mmmmmmmmmmmmmmmm
   321  |    112: 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d   mmmmmmmmmmmmmmmm
   322  |    128: 6d 6d 6d 6d 6d 00 00 00 00 00 00 00 00 00 00 00   mmmmm...........
   323  |    160: 80 00 00 00 00 00 00 03 00 00 00 ff e4 00 00 00   ................
   324  |    208: 00 00 00 00 00 00 00 00 00 00 00 00 00 c5 00 00   ................
   325  |    240: 14 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00   ................
   326  |    256: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0f ec   ................
   327  |    304: 00 00 00 00 19 08 05 17 17 17 17 65 69 67 68 74   ...........eight
   328  |    320: 65 69 67 68 74 73 65 00 00 00 00 00 00 00 00 00   eightse.........
   329  |    336: 00 00 00 00 19 08 05 17 17 17 17 65 69 67 68 74   ...........eight
   330  |    352: 65 69 67 68 74 73 65 01 65 6e 00 00 00 10 25 07   eightse.en....%.
   331  |    368: 07 6e 25 07 07 07 40 18 00 00 00 00 00 00 40 18   .n%...@.......@.
   332  |    384: 00 00 00 00 00 00 40 14 00 00 00 00 00 00 40 14   ......@.......@.
   333  |    400: 00 00 00 00 00 00 09 06 05 01 01 01 01 04 04 03   ................
   334  |    416: 03 07 05 05 01 01 09 09 02 02 19 04 05 17 17 17   ................
   335  |    432: 17 10 65 76 65 6e 65 69 67 68 74 65 69 67 68 74   ..eveneighteight
   336  |    448: 73 65 76 65 6e 25 03 05 07 07 07 07 40 14 00 00   seven%......@...
   337  |    464: 00 00 00 00 40 18 00 00 00 00 00 00 40 18 00 00   ....@.......@...
   338  |    480: 00 00 00 00 40 14 00 00 00 00 e8 f6 09 02 00 00   ....@...........
   339  |    496: 00 00 00 00 00 00 00 00 00 00 64 00 00 00 00 02   ..........d.....
   340  | page 4 offset 1536
   341  |      0: 0d 00 00 00 00 02 00 00 00 00 00 00 00 00 00 fa   ................
   342  |     16: 1f a1 07 00 00 00 00 00 01 00 00 00 00 00 00 00   ................
   343  |     32: 00 00 00 00 00 00 00 00 00 00 00 00 00 73 69 6d   .............sim
   344  |     48: 70 6c 65 00 00 00 00 00 00 00 00 00 00 00 00 00   ple.............
   345  |     80: 00 00 00 00 00 10 00 00 00 00 00 00 01 00 00 00   ................
   346  |     96: 00 00 00 00 00 00 00 00 00 00 00 00 00 fe ff ff   ................
   347  |    112: ff 00 00 00 00 00 00 00 00 00 00 00 4a 00 00 00   ............J...
   348  |    144: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00   ................
   349  |    176: e5 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00   ................
   350  |    208: 00 00 00 00 00 00 00 00 00 00 36 36 00 00 00 00   ..........66....
   351  |    240: 00 00 00 6c 00 00 00 00 00 00 00 00 00 00 00 00   ...l............
   352  |    256: 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
   353  |    320: 00 00 00 00 00 00 00 00 01 00 00 02 00 80 00 00   ................
   354  |    336: 00 00 00 00 00 19 08 05 17 17 17 17 65 69 67 68   ............eigh
   355  |    352: 74 65 69 67 68 74 73 65 76 65 6e 73 65 76 65 6e   teightsevenseven
   356  |    368: 25 07 05 07 07 07 07 40 18 00 00 00 00 00 00 40   %......@.......@
   357  |    384: 18 00 20 00 00 00 40 00 14 00 00 00 00 00 00 40   .. ...@........@
   358  |    400: 14 00 00 00 00 00 1c 09 06 05 01 01 01 01 04 04   ................
   359  |    416: 03 03 07 05 05 01 01 00 00 00 00 00 00 00 00 00   ................
   360  |    448: 74 73 65 76 65 6e 00 80 ff ff 00 00 00 00 00 aa   tseven..........
   361  |    464: 00 9e 00 00 00 00 00 00 00 00 00 00 00 70 6f 72   .............por
   362  |    480: 74 65 72 00 00 00 00 00 00 00 00 00 00 00 00 00   ter.............
   363  |    496: 00 00 00 00 00 00 29 00 00 00 00 00 00 00 00 00   ......).........
   364  | page 5 offset 2048
   365  |      0: 0a 00 00 00 08 01 96 00 01 fa 01 c5 01 f2 01 bc   ................
   366  |     16: 01 dc 01 a6 01 96 01 cc 00 00 00 00 00 00 00 00   ................
   367  |    112: 00 00 00 09 00 00 00 00 01 00 00 00 00 00 00 00   ................
   368  |    160: 74 72 69 67 62 ff ff ff ff fc 00 00 00 00 00 00   trigb...........
   369  |    240: 00 00 00 00 00 00 00 00 00 00 ff 00 00 00 00 00   ................
   370  |    256: e5 ff ff ff 00 00 54 00 00 00 00 00 00 00 00 00   ......T.........
   371  |    304: 00 00 00 00 00 00 09 00 00 00 00 00 00 00 00 00   ................
   372  |    400: 00 00 00 00 00 09 00 00 00 00 01 00 00 00 00 00   ................
   373  |    448: 00 00 74 72 69 67 62 ff ff ff ff fc 00 00 07 05   ..trigb.........
   374  |    464: 05 01 01 09 09 02 02 19 04 05 17 17 17 17 10 65   ...............e
   375  |    480: 76 65 6e 65 69 67 68 74 65 40 18 00 00 00 00 01   veneighte@......
   376  |    496: 02 03 07 04 01 01 01 03 04 02 05 04 09 01 ff fd   ................
   377  | end crash-6b48ba69806134.db
   378  }]} {}
   379  
   380  set res {1 {database disk image is malformed}}
   381  ifcapable oversize_cell_check {
   382    set res {1 {no such table: t3}}
   383  }
   384  do_catchsql_test 4.1 {
   385    PRAGMA writable_schema=ON; -- bypass improved sqlite_master consistency checking
   386    INSERT INTO t3 SELECT * FROM t2;
   387  } $res
   388  
   389  #-------------------------------------------------------------------------
   390  reset_db
   391  do_test 5.0 {
   392    sqlite3 db {}
   393    db deserialize [decode_hexdb {
   394  | size 192512 pagesize 4096 filename crash-9ae5502296c949.db
   395  | page 1 offset 0
   396  |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
   397  |     16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 2f   .....@  ......./
   398  |     32: 00 00 00 1b 00 00 00 13 00 00 00 03 00 00 00 04   ................
   399  |     48: 00 00 00 00 00 00 00 06 00 00 00 01 00 00 00 00   ................
   400  |     64: 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00   ................
   401  |     96: 00 00 00 00 0d 00 00 00 04 0e e2 00 0f 96 0f 44   ...............D
   402  |    112: 0f 10 0e e2 00 00 00 00 00 00 00 00 00 00 00 00   ................
   403  |   3808: 00 00 2c 04 06 17 15 11 01 41 69 6e 64 65 78 74   ..,......Aindext
   404  |   3824: 31 78 32 74 31 06 43 52 45 41 54 45 20 49 4e 44   1x2t1.CREATE IND
   405  |   3840: 45 58 20 74 31 78 32 20 4f 4e 20 74 31 28 62 29   EX t1x2 ON t1(b)
   406  |   3856: 32 03 06 17 15 11 01 4d 69 6e 64 65 78 74 31 78   2......Mindext1x
   407  |   3872: 31 74 31 05 43 52 45 41 54 45 20 49 4e 44 45 58   1t1.CREATE INDEX
   408  |   3888: 20 74 31 78 31 20 4f 4e 20 74 31 28 67 2b 68 2c    t1x1 ON t1(g+h,
   409  |   3904: 6a 2c 6b 29 50 02 06 17 2b 2b 01 59 74 61 62 6c   j,k)P...++.Ytabl
   410  |   3920: 65 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65   esqlite_sequence
   411  |   3936: 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 04   sqlite_sequence.
   412  |   3952: 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 71 6c   CREATE TABLE sql
   413  |   3968: 69 74 65 5f 73 65 71 75 65 6e 63 65 28 6e 61 6d   ite_sequence(nam
   414  |   3984: 65 2c 73 65 71 29 68 01 07 17 11 11 01 81 3b 74   e,seq)h.......;t
   415  |   4000: 61 62 6c 65 74 31 74 31 03 43 52 45 41 54 45 20   ablet1t1.CREATE 
   416  |   4016: 54 41 42 4c 45 20 74 31 28 61 20 49 4e 54 45 47   TABLE t1(a INTEG
   417  |   4032: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 41   ER PRIMARY KEY A
   418  |   4048: 55 54 4f 49 4e 43 52 45 4d 45 4e 54 2c 0a 62 2c   UTOINCREMENT,.b,
   419  |   4064: 63 2c 64 2c 65 2c 66 2c 67 2c 68 2c 6a 2c 6b 2c   c,d,e,f,g,h,j,k,
   420  |   4080: 6c 2c 6d 2c 6e 2c 6f 2c 70 2c 71 2c 72 2c 73 29   l,m,n,o,p,q,r,s)
   421  | page 2 offset 4096
   422  |      0: 01 00 00 00 00 01 00 00 00 00 01 00 00 00 00 01   ................
   423  |     16: 00 00 00 00 02 10 00 00 00 05 00 00 00 03 02 00   ................
   424  |     32: 00 00 00 05 00 00 00 03 02 00 00 00 00 05 00 00   ................
   425  |     48: 00 03 02 00 00 00 00 05 00 00 00 03 02 00 00 00   ................
   426  |     64: 00 05 00 00 00 03 02 00 00 00 00 05 00 00 00 03   ................
   427  |     80: 02 00 00 00 00 05 00 00 00 03 02 00 00 00 00 05   ................
   428  |     96: 00 00 00 03 02 00 00 00 00 05 00 00 00 03 05 00   ................
   429  |    112: 00 00 03 03 00 00 00 23 02 00 00 00 00 03 00 00   .......#........
   430  |    128: 00 23 02 00 00 00 00 03 00 00 00 23 02 00 00 00   .#.........#....
   431  |    144: 00 03 00 00 00 23 02 00 00 00 00 03 00 00 00 23   .....#.........#
   432  |    160: 05 00 00 00 06 05 00 00 00 06 02 00 00 00 00 03   ................
   433  |    176: 00 00 00 06 02 00 00 00 00 03 00 00 00 24 02 00   .............$..
   434  |    192: 00 00 00 03 00 00 00 24 02 00 00 00 00 03 00 00   .......$........
   435  |    208: 00 24 02 00 00 00 00 02 00 00 00 00 03 00 00 00   .$..............
   436  |    224: 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   $...............
   437  | page 3 offset 8192
   438  |      0: 05 00 00 00 09 0f d0 00 00 00 00 19 0f fb 0f f6   ................
   439  |     16: 0f f1 0f ec 0f e7 0f e2 0f dc 0f d6 0f d0 0f a0   ................
   440  |     32: 0f a0 0f a0 0f a0 0f a0 0f a0 0f a0 0f a0 0f a0   ................
   441  |   1072: 00 97 4c 0a 14 00 ae 7c 00 00 00 00 00 00 00 00   ..L....|........
   442  |   1088: 00 00 00 00 00 00 00 09 00 00 00 00 00 00 00 00   ................
   443  |   4000: 0f ac 00 06 00 00 00 00 00 30 00 00 00 00 00 00   .........0......
   444  |   4048: 00 00 00 16 81 2a 00 00 00 14 81 16 00 00 00 12   .....*..........
   445  |   4064: 81 02 00 00 00 10 6e 00 00 00 0e 5a 00 00 00 0c   ......n....Z....
   446  |   4080: 46 00 00 00 0a 32 00 00 00 08 1e 00 00 00 18 0a   F....2..........
   447  | page 4 offset 12288
   448  |      0: 0d 00 00 00 01 0f f7 00 0f f7 00 00 00 00 00 00   ................
   449  |   4080: 00 00 00 00 00 00 00 07 01 03 11 02 74 31 00 be   ............t1..
   450  | page 5 offset 16384
   451  |      0: 0a 0f 7c 00 0a 0f 74 00 0f f9 0f eb 0f dd 0f cf   ..|...t.........
   452  |     16: 0f c1 0f b3 0f a4 0f 94 0f 84 0f 74 0f 74 0f 74   ...........t.t.t
   453  |     32: 0f 74 0f 74 0f 74 0f 74 0f 74 0f 74 0f 74 00 00   .t.t.t.t.t.t.t..
   454  |   3952: 00 00 00 00 07 05 00 00 00 02 00 be 0f 8c 00 08   ................
   455  |   3968: 00 00 00 00 07 05 00 00 00 02 00 aa 0f 9c 00 08   ................
   456  |   3984: 00 00 00 00 07 05 00 00 00 02 00 96 0f ac 00 08   ................
   457  |   4000: 00 00 00 00 07 05 00 00 00 02 00 82 0f ba 00 07   ................
   458  |   4016: 00 00 00 06 05 00 00 00 01 6e 0f c8 00 07 00 00   .........n......
   459  |   4032: 00 06 05 00 00 00 01 5a 0f d6 00 07 00 00 00 06   .......Z........
   460  |   4048: 05 00 00 00 01 46 0f e4 00 07 00 00 00 06 05 00   .....F..........
   461  |   4064: 00 00 01 32 0f f2 00 07 00 00 00 06 05 00 00 00   ...2............
   462  |   4080: 01 1e 00 00 00 07 00 00 00 06 05 00 00 00 01 0a   ................
   463  | page 6 offset 20480
   464  |      0: 02 00 00 00 01 0e 0d 00 00 00 00 24 0e 0d 0c 1a   ...........$....
   465  |     16: 06 55 04 66 02 77 00 88 00 00 00 00 00 00 00 00   .U.f.w..........
   466  |    128: 00 00 00 00 00 00 00 00 97 3d 04 ae 7c 01 00 00   .........=..|...
   467  |    624: 00 00 00 00 00 00 21 97 3d 04 ae 7c 01 00 00 00   ......!.=..|....
   468  |   1120: 00 00 00 00 00 20 97 3d 04 ae 7c 01 00 00 00 00   ..... .=..|.....
   469  |   1616: 00 00 00 00 1f 97 3d 04 ae 7c 01 00 00 00 00 00   ......=..|......
   470  |   2112: 00 00 00 1e 97 3d 04 ae 7c 01 00 00 00 00 00 00   .....=..|.......
   471  |   2608: 00 00 1d 97 3d 04 ae 7c 01 00 00 00 00 00 00 00   ....=..|........
   472  |   3088: 00 00 00 00 00 00 00 00 00 00 00 00 01 f3 00 00   ................
   473  |   3600: 23 97 3d 04 ae 7c 01 00 00 00 00 00 00 00 00 00   #.=..|..........
   474  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 26   ...............&
   475  | page 8 offset 28672
   476  |      0: 0d 00 00 00 01 04 30 00 04 30 00 00 00 00 00 00   ......0..0......
   477  |   1072: 97 4d 1e 14 00 ae 7c 00 00 00 00 00 00 00 00 00   .M....|.........
   478  |   1088: 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00   ................
   479  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03   ................
   480  | page 10 offset 36864
   481  |    256: 0d 00 00 00 01 04 30 00 04 30 00 00 00 00 00 00   ......0..0......
   482  |   1072: 97 4d 32 14 00 ae 7c 00 00 00 00 00 00 00 00 00   .M2...|.........
   483  |   1088: 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00   ................
   484  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05   ................
   485  | page 12 offset 45056
   486  |      0: 0d 00 00 00 01 04 30 00 04 30 00 00 00 00 00 00   ......0..0......
   487  |   1072: 97 4d 46 14 00 ae 7c 00 00 00 00 00 00 00 00 00   .MF...|.........
   488  |   1088: 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00   ................
   489  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07   ................
   490  | page 14 offset 53248
   491  |      0: 0d 00 00 00 01 04 30 00 04 30 00 00 00 00 00 00   ......0..0......
   492  |   1072: 97 4d 5a 14 00 ae 7c 00 00 00 00 00 00 00 00 00   .MZ...|.........
   493  |   1088: 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00   ................
   494  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09   ................
   495  | page 16 offset 61440
   496  |      0: 0d 00 00 00 01 04 30 00 04 30 00 00 00 00 00 00   ......0..0......
   497  |   1072: 97 4d 6e 14 00 ae 7c 00 00 00 00 00 00 00 00 00   .Mn...|.........
   498  |   1088: 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00   ................
   499  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0b   ................
   500  | page 18 offset 69632
   501  |      0: 0d 00 00 00 01 04 2f 00 04 2f 00 00 00 00 00 00   ....../../......
   502  |   1056: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 97   ................
   503  |   1072: 4d 81 02 14 00 ae 7c 00 00 00 00 00 00 00 00 00   M.....|.........
   504  |   1088: 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00   ................
   505  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0d   ................
   506  | page 20 offset 77824
   507  |      0: 0d 00 00 00 01 04 2f 00 04 2f 00 00 00 00 00 00   ....../../......
   508  |   1056: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 97   ................
   509  |   1072: 4d 81 16 14 00 ae 7c 00 00 00 00 00 00 00 00 00   M.....|.........
   510  |   1088: 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00   ................
   511  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0f   ................
   512  | page 22 offset 86016
   513  |      0: 0d 00 00 00 01 04 2f 00 04 2f 00 00 00 00 00 00   ....../../......
   514  |   1056: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 97   ................
   515  |   1072: 4d 81 2a 14 00 ae 7c 00 00 00 00 00 00 00 00 00   M.*...|.........
   516  |   1088: 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00   ................
   517  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11   ................
   518  | page 24 offset 94208
   519  |      0: 0d 00 00 00 01 04 31 00 04 31 00 00 00 00 00 00   ......1..1......
   520  |   1072: 00 97 4c 0a 14 00 ae 7c 00 00 00 00 00 00 00 00   ..L....|........
   521  |   1088: 00 00 00 00 00 00 00 09 00 00 00 00 00 00 00 00   ................
   522  | page 25 offset 98304
   523  |      0: 0d 00 00 00 01 04 2f 00 04 2f 00 00 00 00 00 00   ....../../......
   524  |   1056: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 97   ................
   525  |   1072: 4d 81 3e 14 00 ae 7c 00 00 00 00 00 00 00 00 00   M.>...|.........
   526  |   1088: 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00   ................
   527  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 13   ................
   528  | page 26 offset 102400
   529  |   2512: 00 00 00 00 00 00 00 0a 00 00 00 00 00 00 00 00   ................
   530  | page 27 offset 106496
   531  |      0: 00 00 00 00 00 00 00 12 00 00 00 07 00 00 00 1d   ................
   532  |     16: 00 00 00 09 00 00 00 1f 00 00 00 0b 00 00 00 21   ...............!
   533  |     32: 00 00 00 0d 00 00 00 25 00 00 00 0f 00 00 00 19   .......%........
   534  |     48: 00 00 00 11 00 00 00 29 00 00 00 13 00 00 00 2b   .......).......+
   535  |     64: 00 00 00 15 00 00 00 2d 00 00 00 2e 00 00 00 17   .......-........
   536  | page 28 offset 110592
   537  |   2512: 00 00 00 00 00 00 00 1e 00 00 00 00 00 00 00 00   ................
   538  | page 30 offset 118784
   539  |   2512: 00 00 00 00 00 00 00 32 00 00 00 00 00 00 00 00   .......2........
   540  | page 32 offset 126976
   541  |   2512: 00 00 00 00 00 00 00 46 00 00 00 00 00 00 00 00   .......F........
   542  | page 34 offset 135168
   543  |   2512: 00 00 00 00 00 00 00 5a 00 00 00 00 00 00 00 00   .......Z........
   544  | page 35 offset 139264
   545  |      0: 0a 08 44 00 05 02 77 00 0e 11 0a 33 06 55 02 77   ..D...w....3.U.w
   546  |     16: 04 66 00 88 00 88 00 88 00 00 00 00 00 00 00 00   .f..............
   547  |    128: 00 00 00 00 00 00 00 00 04 66 01 ef 00 00 00 00   .........f......
   548  |    624: 00 00 00 00 00 00 00 97 3d 04 ae 7c 01 00 00 00   ........=..|....
   549  |   1120: 00 00 00 00 00 20 97 3d 04 ae 7c 01 00 00 00 00   ..... .=..|.....
   550  |   1616: 00 00 00 00 22 97 3d 04 ae 7c 01 00 00 00 00 00   ......=..|......
   551  |   2112: 00 00 00 1e 0c 22 01 ef 00 00 00 00 00 00 00 00   ................
   552  |   2608: 00 00 00 97 3d 04 ae 7c 01 00 00 00 00 00 00 00   ....=..|........
   553  |   3104: 00 1c 00 00 01 ef 00 00 00 00 00 00 00 00 00 00   ................
   554  |   3600: 00 97 3d 04 ae 7c 01 00 00 00 00 00 00 00 00 00   ..=..|..........
   555  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1a   ................
   556  | page 36 offset 143360
   557  |      0: 0a 08 44 00 04 02 77 00 06 55 02 77 04 66 0e 11   ..D...w..U.w.f..
   558  |     16: 00 88 00 88 00 88 0e 11 00 00 00 00 00 00 00 00   ................
   559  |    128: 00 00 00 00 00 00 00 00 04 76 01 ef 00 00 00 00   .........v......
   560  |    624: 00 00 00 00 00 00 00 97 3e 04 ae 7c 02 00 00 00   ........>..|....
   561  |   1120: 00 00 00 00 00 2a 97 3e 04 ae 7c 02 00 00 00 00   .....*.>..|.....
   562  |   1616: 00 00 00 00 2c 97 3e 04 ae 7c 02 00 00 00 00 00   ....,.>..|......
   563  |   2112: 00 00 00 28 00 00 05 cd 00 00 00 00 00 00 00 00   ...(............
   564  |   3600: 00 97 3e 04 ae 7c 02 00 00 00 00 00 00 00 00 00   ..>..|..........
   565  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2f   .............../
   566  | page 38 offset 151552
   567  |   2512: 00 00 00 00 00 00 00 6e 00 00 00 00 00 00 00 00   .......n........
   568  | page 40 offset 159744
   569  |   2512: 00 00 00 00 00 00 00 00 82 00 00 00 00 00 00 00   ................
   570  | page 42 offset 167936
   571  |   2512: 00 00 00 00 00 00 00 00 96 00 00 00 00 00 00 00   ................
   572  | page 44 offset 176128
   573  |   2512: 00 00 00 00 00 00 00 00 aa 00 00 00 00 00 00 00   ................
   574  | page 47 offset 188416
   575  |   2512: 00 00 00 00 00 00 00 00 be 00 00 00 00 00 00 00   ................
   576  | end crash-9ae5502296c949.db
   577  }]} {}
   578  
   579  do_catchsql_test 5.1 {
   580    INSERT INTO t1(b) VALUES(zeroblob(40000));
   581  } {1 {database disk image is malformed}}
   582  
   583  do_catchsql_test 5.2 {
   584    DROP INDEX t1x2;
   585  } {0 {}}
   586  
   587  do_catchsql_test 5.3 {
   588    INSERT INTO t1(b) VALUES(zeroblob(40000));
   589  } {1 {database disk image is malformed}}
   590  
   591  #-------------------------------------------------------------------------
   592  reset_db
   593  do_test 6.0 {
   594    sqlite3 db {}
   595    db deserialize [decode_hexdb {
   596  | size 20480 pagesize 4096 filename crash-d260f001fa015c.db
   597  | page 1 offset 0
   598  |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
   599  |     16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 05   .....@  ........
   600  |     32: 00 00 00 00 00 ff ff f0 00 00 00 02 00 00 00 04   ................
   601  |     48: 00 00 00 00 00 00 00 64 00 00 00 01 00 00 00 00   .......d........
   602  |     96: 00 00 00 00 0d 0f f8 00 04 0e ce 00 0f 4c 0f d3   .............L..
   603  |    112: 0e fa 0e ce 00 00 00 00 00 00 00 00 00 00 00 00   ................
   604  |   3776: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2a 04   ..............*.
   605  |   3792: 06 17 13 11 01 3f 69 6e 64 65 78 74 31 62 74 31   .....?indext1bt1
   606  |   3808: 05 43 52 45 41 54 45 20 49 4e 44 45 58 20 74 31   .CREATE INDEX t1
   607  |   3824: 62 20 4f 4e 20 74 31 28 62 29 50 03 06 17 2b 2b   b ON t1(b)P...++
   608  |   3840: 01 59 74 61 62 6c 65 73 71 6c 69 74 65 5f 73 65   .Ytablesqlite_se
   609  |   3856: 71 75 65 6e 63 65 73 71 6c 69 74 65 5f 73 65 71   quencesqlite_seq
   610  |   3872: 75 65 6e 63 65 04 43 52 45 41 54 45 20 54 41 42   uence.CREATE TAB
   611  |   3888: 4c 45 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e   LE sqlite_sequen
   612  |   3904: 63 65 28 6e 61 6d 65 2c 73 65 71 29 81 04 01 07   ce(name,seq)....
   613  |   3920: 17 11 11 01 81 73 74 61 62 6c 65 74 31 74 31 02   .....stablet1t1.
   614  |   3936: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 31 28   CREATE TABLE t1(
   615  |   3952: 61 20 52 45 41 4c 20 4e 4f 54 20 4e 55 4c 4c 20   a REAL NOT NULL 
   616  |   3968: 44 45 46 41 55 4c 54 28 32 35 2b 33 32 29 2c 62   DEFAULT(25+32),b
   617  |   3984: 20 46 4c 4f 41 54 2c 63 20 44 4f 55 42 4c 45 20    FLOAT,c DOUBLE 
   618  |   4000: 55 4e 49 51 55 45 2c 0a 64 20 43 4c 4f 42 2c 65   UNIQUE,.d CLOB,e
   619  |   4016: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59    INTEGER PRIMARY
   620  |   4032: 20 4b 45 59 20 41 55 54 4f 49 4e 43 52 45 4d 45    KEY AUTOINCREME
   621  |   4048: 4e 54 29 23 02 06 17 37 11 01 00 69 6e 64 65 78   NT)#...7...index
   622  |   4064: 73 71 6c 69 74 65 5f 61 75 74 6f 69 6e 64 65 78   sqlite_autoindex
   623  |   4080: 5f 74 31 5f 31 74 31 05 00 00 00 08 00 00 00 00   _t1_1t1.........
   624  | page 2 offset 4096
   625  |      0: 0d 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00   ................
   626  | page 3 offset 8192
   627  |      0: 0a 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00   ................
   628  | page 4 offset 12288
   629  |      0: 0d 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00   ................
   630  | page 5 offset 16384
   631  |      0: 0a 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00   ................
   632  | end crash-d260f001fa015c.db
   633  }]} {}
   634  
   635  do_catchsql_test 6.1 {
   636    BEGIN;
   637      INSERT INTO t1(b) VALUES(1);
   638      INSERT INTO t1(b) VALUES(2);
   639    COMMIT;
   640  } {1 {malformed database schema (t1b) - invalid rootpage}}
   641  
   642  #-------------------------------------------------------------------------
   643  reset_db
   644  do_test 7.0 {
   645    sqlite3 db {}
   646    db deserialize [decode_hexdb {
   647  | size 20480 pagesize 4096 filename crash-8391315d75edff.db
   648  | page 1 offset 0
   649  |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
   650  |     16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 05   .....@  ........
   651  |     32: 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 04   ................
   652  |     48: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00   ................
   653  |     96: 00 00 00 00 0d 00 00 00 05 0e 55 00 0f 74 0f 3c   ..........U..t.<
   654  |    112: 0e f9 0e d1 0e 55 00 00 00 00 00 00 00 00 00 00   .....U..........
   655  |   3664: 00 00 00 00 00 7a 05 07 15 11 11 08 81 63 76 69   .....z.......cvi
   656  |   3680: 65 77 76 31 76 31 43 52 45 41 54 45 20 56 49 45   ewv1v1CREATE VIE
   657  |   3696: 57 20 76 31 28 78 2c 69 29 20 41 53 0a 53 45 4c   W v1(x,i) AS.SEL
   658  |   3712: 45 43 54 20 74 31 2e 62 2c 74 32 2e 62 20 46 52   ECT t1.b,t2.b FR
   659  |   3728: 4f 4d 20 74 31 2c 74 32 20 57 48 45 52 45 20 74   OM t1,t2 WHERE t
   660  |   3744: 31 2e 61 3d 74 32 2e 61 20 47 52 4f 55 50 20 42   1.a=t2.a GROUP B
   661  |   3760: 59 20 31 20 48 41 56 49 4e 47 20 74 32 2e 63 20   Y 1 HAVING t2.c 
   662  |   3776: 4e 4f 54 20 4e 55 4c 4c 0a 4c 49 4d 49 54 20 31   NOT NULL.LIMIT 1
   663  |   3792: 30 26 04 06 17 11 11 01 39 74 61 62 6c 65 74 32   0&......9tablet2
   664  |   3808: 74 32 05 43 52 45 41 54 45 20 54 41 42 4c 45 20   t2.CREATE TABLE 
   665  |   3824: 74 32 28 61 2c 62 2c 63 29 41 03 06 17 15 11 01   t2(a,b,c)A......
   666  |   3840: 6b 69 6e 64 65 78 74 31 78 31 74 31 03 43 52 45   kindext1x1t1.CRE
   667  |   3856: 41 54 45 20 49 4e 44 45 58 20 74 31 78 31 20 4f   ATE INDEX t1x1 O
   668  |   3872: 4e 20 74 31 28 64 29 20 57 48 45 52 45 20 65 65   N t1(d) WHERE ee
   669  |   3888: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 36 02 06 17    IS NOT NULL6...
   670  |   3904: 17 11 01 53 69 6e 64 65 78 74 31 61 62 63 74 31   ...Sindext1abct1
   671  |   3920: 03 43 52 45 41 54 45 20 49 4e 44 45 58 20 74 31   .CREATE INDEX t1
   672  |   3936: 61 62 63 20 4f 4e 20 74 31 28 61 2c 62 2c 63 2b   abc ON t1(a,b,c+
   673  |   3952: 64 2b 65 29 81 09 01 07 17 11 11 01 81 7d 74 61   d+e)..........ta
   674  |   3968: 62 6c 65 74 31 74 31 02 43 52 45 41 54 45 20 54   blet1t1.CREATE T
   675  |   3984: 41 42 4c 45 20 74 31 28 61 2c 62 2c 63 2c 64 2c   ABLE t1(a,b,c,d,
   676  |   4000: 65 2c 66 2c 67 2c 68 2c 6a 2c 6a 6a 2c 6a 6a 6a   e,f,g,h,j,jj,jjj
   677  |   4016: 2c 6b 2c 61 61 2c 62 69 8c 63 63 2c 64 64 2c 65   ,k,aa,bi.cc,dd,e
   678  |   4032: 65 20 44 45 46 41 55 4c 54 20 33 2e 31 34 2c 0a   e DEFAULT 3.14,.
   679  |   4048: 66 66 20 44 45 46 41 55 4c 54 28 27 68 69 63 63   ff DEFAULT('hicc
   680  |   4064: 75 70 27 29 2c 67 67 20 4e 4f 54 20 4e 55 4c 4c   up'),gg NOT NULL
   681  |   4080: 20 44 45 46 41 55 4c 54 28 66 61 6c 73 65 29 29    DEFAULT(false))
   682  | page 2 offset 4096
   683  |      0: 0d 00 00 00 0a 0e 7b 00 0f dc 0f b6 0f 8f 0f 68   ...............h
   684  |     16: 0f 41 0f 1a 0e f3 0e cb 0e a3 0e 22 00 00 00 00   .A..............
   685  |   3696: 00 00 00 00 00 00 00 00 00 00 00 26 0a 14 01 01   ...........&....
   686  |   3712: 02 08 00 00 00 00 00 00 00 00 00 00 00 00 07 19   ................
   687  |   3728: 08 09 5a 00 b4 40 09 1e b8 51 eb 95 1f 68 69 63   ..Z..@...Q...hic
   688  |   3744: 63 75 70 26 09 14 01 01 02 08 00 00 00 00 00 00   cup&............
   689  |   3760: 00 00 00 00 00 00 07 19 08 08 50 00 a0 40 09 1e   ..........P..@..
   690  |   3776: b8 51 eb 85 1f 68 69 63 63 74 70 26 08 14 01 01   .Q...hicctp&....
   691  |   3792: 03 08 00 00 00 00 00 00 00 00 00 00 00 00 07 19   ................
   692  |   3808: 08 07 46 00 8c 40 09 1e b8 51 eb 85 1f 68 69 63   ..F..@...Q...hic
   693  |   3824: 63 75 70 25 07 14 01 01 01 08 00 00 00 00 00 00   cup%............
   694  |   3840: 00 00 00 00 00 10 07 19 08 06 3c 78 40 09 1e b8   ..........<x@...
   695  |   3856: 51 eb 85 1f 68 69 63 63 75 70 25 06 14 01 01 01   Q...hiccup%.....
   696  |   3872: 08 00 00 00 00 00 00 00 00 00 00 00 00 07 19 08   ................
   697  |   3888: 05 32 64 40 09 1e b8 51 eb 85 1f 68 69 63 63 75   .2d@...Q...hiccu
   698  |   3904: 70 25 05 14 01 01 01 08 00 00 00 00 00 00 00 00   p%..............
   699  |   3920: 00 00 00 00 07 19 08 04 28 50 40 09 1e b8 51 eb   ........(P@...Q.
   700  |   3936: 85 1f 68 69 63 63 75 70 25 04 14 01 00 f1 08 00   ..hiccup%.......
   701  |   3952: 00 00 00 00 00 00 00 00 00 00 00 07 19 08 03 1e   ................
   702  |   3968: 3c 40 09 1e b8 51 eb 85 1f 68 69 63 63 75 70 25   <@...Q...hiccup%
   703  |   3984: 03 14 01 01 01 08 00 00 00 00 00 00 00 00 00 00   ................
   704  |   4000: 00 00 07 19 08 02 14 28 40 09 1e b8 51 eb 85 1f   .......(@...Q...
   705  |   4016: 68 69 63 63 75 70 24 02 14 09 01 01 08 00 00 00   hiccup$.........
   706  |   4032: 00 00 00 00 00 00 00 00 00 07 19 08 0a 14 40 09   ..............@.
   707  |   4048: 1e b8 51 eb 85 1f 68 69 63 63 75 70 22 01 14 08   ..Q...hiccup....
   708  |   4064: 08 08 08 00 00 00 00 00 00 00 00 00 00 00 00 07   ................
   709  |   4080: 19 08 40 09 1e b8 51 eb 85 1f 68 69 63 63 75 70   ..@...Q...hiccup
   710  | page 3 offset 8192
   711  |      0: 0a 00 00 00 0a 0f aa 00 0f fa 0f f2 0f e9 0f e0   ................
   712  |     16: 0f d7 0f ce 0f c5 0f bc 0f b3 0f aa 00 00 00 00   ................
   713  |   4000: 00 00 00 00 00 00 00 00 00 00 08 05 01 01 00 01   ................
   714  |   4016: 09 5a 0a d8 05 01 01 00 01 08 50 09 08 05 01 01   .Z........P.....
   715  |   4032: 00 01 07 46 08 08 05 01 01 00 01 06 3c 07 08 05   ...F........<...
   716  |   4048: 01 01 00 01 05 32 06 08 05 01 01 00 01 04 28 05   .....2........(.
   717  |   4064: 08 05 01 02 60 01 03 1e 04 08 05 01 01 00 01 02   ....`...........
   718  |   4080: 14 03 07 05 09 01 00 01 0a 02 05 05 08 08 00 09   ................
   719  | page 4 offset 12288
   720  |      0: 0a 00 00 00 0a 0f cf 00 0f fc 0f f7 0f f2 0f ed   ................
   721  |     16: 0f e8 0f e3 0f de 0f d9 0f d4 0f cf 00 00 00 00   ................
   722  |   4032: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04   ................
   723  |   4048: 03 08 01 0a 04 03 08 01 09 04 03 08 01 08 04 03   ................
   724  |   4064: 08 01 07 04 03 08 01 06 04 03 08 01 05 04 03 08   ................
   725  |   4080: 01 04 04 03 08 01 03 04 03 08 01 02 03 03 08 09   ................
   726  | page 5 offset 16384
   727  |      0: 0d 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00   ................
   728  | end crash-8391315d75edff.db
   729  }]} {}
   730  
   731  do_catchsql_test 7.1 {
   732    SELECT * FROM sqlite_master;
   733  } {1 {malformed database schema (t1x1) - invalid rootpage}}
   734  
   735  #-------------------------------------------------------------------------
   736  reset_db
   737  do_test 8.0 {
   738    sqlite3 db {}
   739    db deserialize [decode_hexdb {
   740  | size 2048 pagesize 512 filename a.db
   741  | page 1 offset 0
   742  |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
   743  |     16: 02 00 01 01 00 40 20 20 ff ff 00 0c 00 00 00 07   .....@  ........
   744  |     32: 0b 00 00 00 00 00 00 00 00 00 00 08 9c 00 00 04   ................
   745  |     48: 00 00 00 e0 09 00 00 01 00 00 00 01 00 00 00 00   ................
   746  |     64: 00 00 00 00 f2 ff 00 00 00 00 00 00 00 00 00 00   ................
   747  |     80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c   ................
   748  |     96: 00 2e 2c 50 0d 00 00 00 06 01 06 00 01 da 01 b0   ..,P............
   749  |    112: 05 56 01 86 01 2a 01 06 00 00 00 00 00 06 00 00   .V...*..........
   750  |    128: 00 ff 00 00 ff ff ff e1 00 00 00 00 00 00 00 00   ................
   751  |    144: 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00   ................
   752  |    160: 00 00 00 00 00 00 00 00 f2 00 00 00 00 00 00 00   ................
   753  |    176: 00 00 f9 ff ff ff ff ff ff ff 00 00 00 5f 00 fb   ............._..
   754  |    192: 00 00 00 00 00 00 00 00 00 e1 ff 00 00 00 00 00   ................
   755  |    208: 00 00 10 00 00 00 00 00 1e 00 00 00 fe 00 00 00   ................
   756  |    224: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ca 00   ................
   757  |    240: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35   ...............5
   758  |    256: 00 00 00 00 ef ff 22 07 06 17 11 11 01 30 39 38   .............098
   759  |    272: 62 6c 65 74 38 38 74 04 43 52 45 41 54 45 20 54   blet88t.CREATE T
   760  |    288: 41 42 4c 45 20 74 34 28 87 29 2a 06 06 17 13 11   ABLE t4(.)*.....
   761  |    304: 01 3f 69 4f 64 65 78 74 33 78 74 40 05 43 52 45   .?iOdext3xt@.CRE
   762  |    320: 41 54 45 20 49 6e 44 45 58 20 74 33 78 20 4f 4e   ATE InDEX t3x ON
   763  |    336: 20 74 33 28 78 29 2e 04 06 17 15 11 01 45 69 6e    t3(x).......Ein
   764  |    352: 00 04 00 00 34 63 64 74 3d 05 43 52 45 41 54 45   ....4cdt=.CREATE
   765  |    368: 20 49 4e 44 45 58 20 63 74 64 32 20 4f 4e 20 74    INDEX ctd2 ON t
   766  |    384: 32 28 0a 0c 44 29 28 05 06 17 11 11 01 3d 74 6c   2(..D)(......=tl
   767  |    400: 62 61 d4 65 33 74 33 04 43 52 45 41 54 45 20 54   ba.e3t3.CREATE T
   768  |    416: 41 42 4c 45 20 74 33 28 63 2c 78 2c 65 2c 66 29   ABLE t3(c,x,e,f)
   769  |    432: 28 02 06 17 11 11 01 3d 74 61 62 6c 65 74 32 74   (......=tablet2t
   770  |    448: 32 03 43 52 45 41 54 45 20 54 41 42 4c 45 20 74   2.CREATE TABLE t
   771  |    464: 32 28 63 2c 64 2c 65 2c 66 29 24 01 06 17 11 11   2(c,d,e,f)$.....
   772  |    480: 01 35 74 60 62 6c 65 74 31 74 31 02 43 52 45 41   .5t`blet1t1.CREA
   773  |    496: 54 45 20 54 41 42 4c 45 20 74 30 28 61 2c 62 29   TE TABLE t0(a,b)
   774  | page 2 offset 512
   775  |      0: 0d 00 ff 11 04 01 cf 80 01 fa 01 09 00 de 01 cf   ................
   776  |     16: 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00   ................
   777  |     32: 00 00 08 00 00 00 00 00 00 11 00 00 00 00 00 13   ................
   778  |     48: 00 00 00 00 00 00 00 00 00 00 00 01 00 e0 ff ff   ................
   779  |     64: ff d2 ff ff ff 00 f8 ff ff ff 00 00 00 00 00 00   ................
   780  |     80: 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
   781  |     96: 00 00 00 00 ff de 00 00 00 00 00 00 00 00 00 00   ................
   782  |    112: 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00   .............@..
   783  |    128: 2a 00 00 00 00 00 00 00 00 f7 00 00 00 00 00 00   *...............
   784  |    144: 00 00 00 00 00 21 00 00 00 00 00 00 00 00 00 00   .....!..........
   785  |    160: 01 64 00 00 00 00 04 80 ff ff ff 00 00 00 00 00   .d..............
   786  |    176: 00 00 00 00 00 00 00 00 1f 00 00 00 00 00 00 00   ................
   787  |    192: 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00   ..@.............
   788  |    208: b5 00 00 00 00 00 00 40 00 00 00 00 00 00 00 00   .......@........
   789  |    224: 00 00 00 f6 00 ee ff ff ff 00 00 00 00 00 00 00   ................
   790  |    272: f2 00 00 00 00 00 00 00 00 00 f9 ff ff ff ff ff   ................
   791  |    288: ff ff 00 00 00 5f 00 fb 00 00 00 00 00 00 00 00   ....._..........
   792  |    320: 1e 00 00 00 fe 00 00 00 00 00 00 00 00 00 00 00   ................
   793  |    336: 00 00 00 00 00 00 ca 00 00 00 00 00 00 00 ff ec   ................
   794  |    352: 00 00 00 00 00 00 00 32 00 00 00 00 ef ff 22 07   .......2........
   795  |    368: 06 17 11 11 01 30 74 61 62 6c 65 74 38 38 74 04   .....0tablet88t.
   796  |    384: 43 52 45 41 54 45 20 54 41 42 4c 45 20 8c cb d7   CREATE TABLE ...
   797  |    400: 78 d6 d5 f9 f9 17 13 11 01 3f 69 4f 64 65 78 74   x........?iOdext
   798  |    416: 33 78 74 33 05 43 52 45 41 54 45 26 49 6e 44 45   3xt3.CREATE&InDE
   799  |    432: 58 20 74 33 78 00 00 00 00 00 00 00 00 00 00 00   X t3x...........
   800  |    464: 00 00 00 00 00 13 76 65 6e 65 69 67 68 74 13 03   ......veneight..
   801  |    480: 03 40 07 07 15 00 54 45 20 49 4e 44 45 58 20 74   .@....TE INDEX t
   802  |    496: 31 63 64 20 4f 4e 20 74 ce d7 f5 f0 44 09 01 02   1cd ON t....D...
   803  | page 3 offset 1024
   804  |      0: 0d 00 00 00 48 01 54 00 01 f6 e2 ec 01 c5 01 aa   ....H.T.........
   805  |     16: 30 34 28 87 29 32 06 f5 16 13 11 01 8e 61 24 64   04(.)2.......a$d
   806  |     32: 65 78 74 37 78 1f 33 6d 6d 6d 6d 6d 00 00 04 06   ext7x.3mmmmm....
   807  |     48: 6d 41 6d 6d 6e 6d 6d 00 00 02 00 6d 6d 6d 6d 6d   mAmmnmm....mmmmm
   808  |     64: 15 11 01 45 45 45 45 45 45 45 45 45 45 45 45 45   ...EEEEEEEEEEEEE
   809  |     80: 45 45 45 45 45 45 45 45 45 45 45 00 45 63 74 64   EEEEEEEEEEE.Ectd
   810  |     96: 34 20 4f 4e 20 61 62 6c 5d 74 38 38 74 04 43 52   4 ON abl]t88t.CR
   811  |    112: 45 41 54 45 20 54 41 42 4c 45 20 74 34 28 87 29   EATE TABLE t4(.)
   812  |    128: 2a 06 06 13 13 01 00 00 00 4f 64 6e 78 74 33 44   *........Odnxt3D
   813  |    144: 74 13 05 43 52 45 41 54 45 20 49 6e 44 45 00 00   t..CREATE InDE..
   814  |    160: 00 00 00 00 00 00 00 f9 ff ff ff ff ff ff ff 00   ................
   815  |    176: 00 00 5f 00 fb 00 00 2d 00 00 00 00 00 00 00 00   .._....-........
   816  |    192: 00 00 00 00 00 00 00 00 00 00 00 00 00 1e 00 00   ................
   817  |    208: 00 fe 00 00 00 00 17 15 11 01 45 69 6e 64 65 2e   ..........Einde.
   818  |    224: 5b 38 63 64 74 3d 05 43 52 45 41 54 45 20 49 4e   [8cdt=.CREATE IN
   819  |    240: 44 45 58 20 63 20 64 32 20 4f 4e 20 74 32 28 0a   DEX c d2 ON t2(.
   820  |    256: 0c 44 32 05 00 10 00 00 11 11 3d 74 6c 62 61 d4   .D2.......=tlba.
   821  |    272: 65 33 74 33 04 43 52 45 41 54 45 20 54 41 42 4c   e3t3.CREATE TABL
   822  |    288: 45 20 74 36 ff ff 7f ff 43 52 45 41 54 45 20 49   E t6....CREATE I
   823  |    304: 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 28   sqlite_sequence(
   824  |    320: 0a 0c 44 29 28 05 06 17 11 11 01 3d 74 6c 62 61   ..D)(......=tlba
   825  |    336: 20 00 00 00 33 04 43 52 45 41 54 45 20 54 41 42    ...3.CREATE TAB
   826  |    352: 4c 45 20 74 33 28 63 2c 78 2c 65 2c 66 29 28 02   LE t3(c,x,e,f)(.
   827  |    368: 06 00 00 7f ff 40 41 54 45 20 49 6e 44 45 58 20   .....@ATE InDEX 
   828  |    384: 74 33 78 20 4f 4e 20 74 31 28 78 29 2e 04 06 17   t3x ON t1(x)....
   829  |    400: 15 11 01 45 69 6e 64 65 2e 74 34 63 64 74 3d 05   ...Einde.t4cdt=.
   830  |    416: 00 00 00 00 00 00 00 00 00 00 00 4d 00 00 00 00   ...........M....
   831  |    432: 01 00 00 00 00 00 00 05 00 00 10 00 00 00 00 00   ................
   832  |    448: 00 01 00 00 00 00 01 00 00 00 00 07 40 14 00 00   ............@...
   833  |    464: 00 00 21 00 40 18 00 00 00 00 00 00 40 1c 00 00   ..!.@.......@...
   834  |    480: 00 00 ff ff ff 00 00 00 5f 00 fb 00 00 2d 00 00   ........_....-..
   835  |    496: 00 00 00 1e 00 00 00 fe 00 00 64 00 00 ff fb 02   ..........d.....
   836  | page 4 offset 1536
   837  |      0: 0d 00 39 00 00 02 00 00 00 00 00 00 00 00 00 00   ..9.............
   838  | end a.db
   839  }]} {}
   840  
   841  set res {1 {database disk image is malformed}}
   842  ifcapable oversize_cell_check {
   843    set res {1 {no such table: t3}}
   844  }
   845  do_catchsql_test 8.1 {
   846    PRAGMA writable_schema=ON; -- bypass improved sqlite_master consistency checking
   847    INSERT INTO t3 SELECT * FROM t2;
   848  } $res
   849  
   850  #-------------------------------------------------------------------------
   851  reset_db
   852  do_test 9.0 {
   853    sqlite3 db {}
   854    db deserialize [decode_hexdb {
   855  | size 8192 pagesize 4096 filename crash-ab10597e4e1c32.db
   856  | page 1 offset 0
   857  |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
   858  |     16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 00   .....@  ........
   859  |     96: 00 00 00 00 0d 00 00 00 01 0f d6 00 0f d6 00 00   ................
   860  |   4048: 00 00 00 00 00 00 28 01 06 17 11 11 01 3d 74 61   ......(......=ta
   861  |   4064: 62 6c 65 74 31 74 31 02 43 52 45 41 54 45 20 54   blet1t1.CREATE T
   862  |   4080: 41 42 4c 45 20 74 31 28 61 2c 62 2c 63 2c 64 29   ABLE t1(a,b,c,d)
   863  | page 2 offset 4096
   864  |      0: 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
   865  | end crash-ab10597e4e1c32.db
   866  }]} {}
   867  
   868  do_execsql_test 9.1 {
   869    SAVEPOINT one;
   870  }
   871  do_catchsql_test 9.3 {
   872    INSERT INTO t1(b,c) VALUES(5,6);
   873  } {1 {database disk image is malformed}}
   874  do_execsql_test 9.3 {
   875    ROLLBACK TO one;
   876  }
   877  
   878  #-------------------------------------------------------------------------
   879  reset_db
   880  do_test 10.0 {
   881    sqlite3 db {}
   882    db deserialize [decode_hexdb {
   883  | size 180224 pagesize 4096 filename crash-41390d95d613b6.db
   884  | page 1 offset 0
   885  |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
   886  |     16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 00   .....@  ........
   887  |     96: 00 00 00 00 0d 00 00 00 04 0e e2 00 0f 96 0f 44   ...............D
   888  |    112: 0f 10 0e e2 00 00 00 00 00 00 00 00 00 00 00 00   ................
   889  |   3808: 00 00 2c 14 06 17 15 11 01 41 69 6e 64 65 78 74   ..,......Aindext
   890  |   3824: 41 78 33 74 31 06 43 52 45 41 54 45 20 49 4e 44   Ax3t1.CREATE IND
   891  |   3840: 45 58 20 74 31 78 32 20 4f 4e 20 74 31 28 62 29   EX t1x2 ON t1(b)
   892  |   3856: 32 03 06 17 15 11 01 4d 69 6e 64 65 78 74 31 88   2......Mindext1.
   893  |   3872: 31 74 31 05 43 52 45 41 54 45 20 49 4e 44 45 58   1t1.CREATE INDEX
   894  |   3888: 20 74 31 78 31 20 4f 4e 20 74 31 28 67 2b 68 2c    t1x1 ON t1(g+h,
   895  |   3904: 6a 2d 6b 29 50 02 06 17 2b 2b 01 59 74 61 62 6c   j-k)P...++.Ytabl
   896  |   3920: 65 73 71 6c 69 74 65 5e 73 65 71 74 65 6e 63 65   esqlite^seqtence
   897  |   3936: 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 04   sqlite_sequence.
   898  |   3952: 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 71 6c   CREATE TABLE sql
   899  |   3968: 69 74 65 5f 73 65 71 75 65 6e 63 65 28 6e 61 6d   ite_sequence(nam
   900  |   3984: 65 2c 73 65 71 29 68 00 07 17 11 11 01 81 3b 74   e,seq)h.......;t
   901  |   4000: 61 62 6c 65 74 31 74 31 03 43 52 45 41 54 45 20   ablet1t1.CREATE 
   902  |   4016: 54 41 42 4c 45 20 74 31 28 61 20 49 4e 54 45 47   TABLE t1(a INTEG
   903  |   4032: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 41   ER PRIMARY KEY A
   904  |   4048: 55 54 4f 49 4e 43 52 45 4d 45 4e 54 2c 0a 62 2c   UTOINCREMENT,.b,
   905  |   4064: 63 2c 64 2c 65 2c 66 2c 67 2c 68 2c 6a 2c 6b 2c   c,d,e,f,g,h,j,k,
   906  |   4080: 6c 2c 6d 2c 6e 2c 6f 2c 70 2c 71 2c 72 2c 73 29   l,m,n,o,p,q,r,s)
   907  | page 2 offset 4096
   908  |      0: 01 00 00 00 00 01 00 00 10 00 01 00 00 00 00 01   ................
   909  |     16: 00 00 00 00 02 00 0f f0 00 15 00 00 00 03 02 00   ................
   910  |     32: 00 00 d9 05 00 00 00 03 02 00 00 00 00 05 00 00   ................
   911  |     48: 10 03 02 00 00 00 00 05 00 00 00 03 02 00 00 00   ................
   912  |     64: 00 05 00 00 00 02 62 00 00 00 00 05 00 00 00 03   ......b.........
   913  |     80: 02 00 00 00 00 05 00 00 00 03 02 00 00 00 00 05   ................
   914  |     96: 00 00 00 03 02 00 00 00 00 05 00 00 00 03 05 00   ................
   915  |    112: 00 00 03 03 01 00 00 23 02 00 00 4f 00 02 00 00   .......#...O....
   916  |    128: 10 25 02 00 00 00 00 03 00 00 00 23 02 00 00 00   .%.........#....
   917  |    144: 00 03 00 00 00 23 02 00 00 00 00 03 00 00 00 23   .....#.........#
   918  |    160: 05 00 08 90 06 05 00 00 00 06 01 ff 00 00 00 03   ................
   919  |    176: 00 00 00 06 02 00 00 00 00 02 ff 00 00 00 00 00   ................
   920  | page 3 offset 8192
   921  |      0: 05 00 00 00 09 0f d0 00 00 00 00 19 0f fb 0f f6   ................
   922  |     16: 0f f1 10 ec ec e7 0f e2 0f dc 0f d6 0f 00 00 00   ................
   923  |   1072: 00 97 4c 0a 24 00 ae 00 00 00 00 00 00 00 00 00   ..L.$...........
   924  |   4048: 00 00 00 16 83 39 ff ff ff 14 81 16 00 00 00 12   .....9..........
   925  |   4064: 81 02 00 00 00 10 6e 00 00 00 0e 5a 00 00 00 0c   ......n....Z....
   926  |   4080: 46 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   F...............
   927  | page 4 offset 12288
   928  |   1072: 97 4d 32 14 00 ae 00 00 00 00 00 00 00 00 00 00   .M2.............
   929  |   4080: 00 00 00 00 00 00 00 07 01 03 11 02 74 31 00 bd   ............t1..
   930  | page 5 offset 16384
   931  |      0: fa 0f 7c 00 0a 0f 74 00 0f f9 0f eb 0f dd 0f cf   ..|...t.........
   932  |     16: 0f c1 0f b3 0f a4 0e 94 0f 84 0f 74 0f 74 0f 74   ...........t.t.t
   933  |     32: 0f 74 0f 64 0f 00 00 00 00 00 00 00 00 00 00 00   .t.d............
   934  |   3952: 00 00 00 00 07 05 00 00 00 02 00 be 0f 8c 10 07   ................
   935  |   3968: ff ff 00 00 07 05 00 00 00 02 00 aa 0f 9b f0 08   ................
   936  |   3984: c8 00 00 00 37 06 00 00 00 01 00 96 0f ac 00 08   ....7...........
   937  |   4000: 00 00 00 b3 07 15 00 10 00 02 00 82 0f ba 00 07   ................
   938  |   4016: 00 00 00 06 05 00 00 00 01 6e 0f c8 00 07 00 00   .........n......
   939  |   4032: 00 06 05 00 00 00 01 5a 03 f6 00 07 00 00 00 06   .......Z........
   940  |   4048: 05 00 00 00 01 46 0f e4 00 07 00 00 10 06 05 00   .....F..........
   941  |   4064: 00 00 01 32 10 02 00 07 00 00 00 07 05 00 00 00   ...2............
   942  |   4080: 01 1d ff ff ff 07 10 00 00 06 05 00 00 00 01 0a   ................
   943  | page 6 offset 20480
   944  |    624: 00 00 00 00 00 21 97 00 00 00 00 00 00 00 00 00   .....!..........
   945  |   1120: 00 00 00 00 00 24 57 3e 00 00 00 00 00 00 00 00   .....$W>........
   946  |   1616: 00 00 00 00 1f 97 00 00 00 00 00 00 00 00 00 00   ................
   947  |   2112: 00 00 00 1e 97 3d 00 00 00 00 00 00 00 00 00 00   .....=..........
   948  |   2608: 00 1d 97 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
   949  | page 8 offset 28672
   950  |   1184: 00 00 00 00 00 00 00 00 00 97 4d 1e 13 ff ae 7c   ..........M....|
   951  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90   ................
   952  | page 9 offset 32768
   953  |    256: 0d 01 c0 00 01 04 30 00 04 30 00 00 00 00 00 00   ......0..0......
   954  | page 10 offset 36864
   955  |      0: 0d 00 22 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
   956  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05   ................
   957  | page 12 offset 45056
   958  |      0: 0d 00 00 00 01 04 30 00 00 00 00 00 00 00 00 00   ......0.........
   959  | page 14 offset 53248
   960  |      0: 0d 00 00 00 01 04 30 00 04 30 00 00 00 00 00 00   ......0..0......
   961  |   1072: 96 4d 5a 14 00 00 00 00 00 00 00 00 00 00 00 00   .MZ.............
   962  | page 16 offset 61440
   963  |      0: 0d 00 00 00 01 04 30 00 04 30 00 00 00 00 00 00   ......0..0......
   964  |   1072: 97 4d 6e 14 00 ae 7b ff ff ff ff 00 00 00 00 00   .Mn.............
   965  | page 18 offset 69632
   966  |   1056: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 97   ................
   967  |   1072: 4d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   M...............
   968  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0d   ................
   969  | page 20 offset 77824
   970  |   1056: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 97   ................
   971  |   1072: 4d 81 16 14 00 ae 00 00 00 00 00 00 00 00 00 00   M...............
   972  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0f   ................
   973  | page 22 offset 86016
   974  |      0: 0d 00 00 00 01 04 2f 00 04 2f 01 00 00 00 00 00   ....../../......
   975  |   1056: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 97   ................
   976  |   1072: 4d 81 2a 14 00 00 00 00 00 00 00 00 00 00 00 00   M.*.............
   977  | page 24 offset 94208
   978  |   1072: 00 97 4c 0a 14 00 ae 7c 00 00 00 00 00 00 00 00   ..L....|........
   979  | page 25 offset 98304
   980  |   1056: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 97   ................
   981  |   1072: 4d 81 3e 14 00 ae 7c 00 00 18 ff 00 00 00 00 00   M.>...|.........
   982  | page 27 offset 106496
   983  |      0: 00 00 00 00 00 00 00 12 00 00 00 07 00 00 00 1d   ................
   984  |     16: 00 00 00 09 00 00 00 1f 00 00 00 0b 00 00 00 21   ...............!
   985  |     32: 00 00 00 0d 00 10 00 25 00 00 00 0f 00 00 00 27   .......%.......'
   986  |     48: 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 00   ................
   987  | page 32 offset 126976
   988  |   2512: 00 00 00 00 00 00 00 45 21 00 00 00 00 00 00 00   .......E!.......
   989  | page 35 offset 139264
   990  |      0: 00 0a 08 44 00 05 02 77 00 0e 11 0a 92 00 00 00   ...D...w........
   991  |   1120: 00 00 00 00 00 20 97 00 00 00 00 00 00 00 00 00   ..... ..........
   992  |   1616: 00 00 00 00 22 00 00 00 00 00 00 00 00 00 00 00   ................
   993  |   2608: 00 00 00 97 3d 04 00 00 00 00 00 00 00 00 00 00   ....=...........
   994  |   3104: 00 1c 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
   995  |   3600: 00 97 3d 04 ae 7c 00 00 00 00 00 00 00 00 00 00   ..=..|..........
   996  |   4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1a   ................
   997  | page 36 offset 143360
   998  |      0: 0a 08 44 00 04 02 00 00 00 00 00 00 00 00 00 00   ..D.............
   999  |   1120: 00 00 00 00 00 2a 97 3e 04 00 00 00 00 00 00 00   .....*.>........
  1000  |   1616: 00 00 00 00 2c 97 3e 00 00 00 00 00 00 00 00 00   ....,.>.........
  1001  |   2112: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 38   ...............8
  1002  |   2128: 00 00 05 cd 00 00 00 00 00 00 00 00 00 00 00 00   ................
  1003  |   3600: 00 97 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
  1004  | page 38 offset 151552
  1005  |   2464: 00 00 00 00 00 00 00 00 00 6e 00 00 00 00 00 00   .........n......
  1006  | page 40 offset 159744
  1007  |   2512: 00 00 00 00 00 00 00 00 82 00 00 00 00 00 00 00   ................
  1008  | page 42 offset 167936
  1009  |   2512: 00 00 00 00 00 00 00 96 00 00 00 00 00 00 00 00   ................
  1010  | page 44 offset 176128
  1011  |   2512: 00 00 00 00 00 00 00 00 aa 00 00 00 00 00 00 00   ................
  1012  | end crash-41390d95d613b6.db
  1013  }]} {}
  1014  
  1015  do_catchsql_test 10.1 {
  1016    PRAGMA writable_schema=ON; -- bypass improved sqlite_master consistency checking
  1017    SELECT * FROM t1 WHERE a<='2019-05-09' ORDER BY a DESC;
  1018  } {1 {database disk image is malformed}}
  1019  
  1020  
  1021  #-------------------------------------------------------------------------
  1022  reset_db
  1023  do_test 11.0 {
  1024    sqlite3 db {}
  1025    db deserialize [decode_hexdb {
  1026  | size 595 pagesize 512 filename x.db
  1027  | page 1 offset 0
  1028  |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
  1029  |     16: 02 00 00 01 00 40 20 20 00 01 00 0c 00 00 00 07   .....@  ........
  1030  |     32: 00 00 00 05 07 a1 1f fa 00 00 00 08 00 00 00 04   ................
  1031  |     48: 00 00 01 00 00 49 00 00 00 00 00 05 00 00 00 00   .....I..........
  1032  |     80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1c   ................
  1033  |     96: 00 2e 2c 50 0d 00 00 00 06 01 06 00 01 da 01 b0   ..,P............
  1034  |    112: 01 56 01 86 01 2a 01 06 00 00 62 00 00 00 00 00   .V...*....b.....
  1035  |    128: 00 ed e2 78 74 64 33 ff 43 52 45 41 54 45 20 49   ...xtd3.CREATE I
  1036  |    144: 4e 44 45 58 20 74 33 78 20 4f 4e 20 74 33 28 38   NDEX t3x ON t3(8
  1037  |    160: 29 2e 04 06 17 15 11 01 45 69 6e 64 65 68 74 32   ).......Eindeht2
  1038  |    176: 63 64 74 31 e5 43 52 45 41 54 45 20 49 4e 44 45   cdt1.CREATE INDE
  1039  |    192: 58 20 74 32 63 c4 20 4f 4e 20 74 32 28 63 2c 64   X t2c. ON t2(c,d
  1040  |    208: 29 28 05 06 17 01 11 11 3d 74 61 6c 36 74 62 74   )(......=tal6tbt
  1041  |    224: 65 32 04 43 52 45 41 54 45 20 54 41 42 4c 45 20   e2.CREATE TABLE 
  1042  |    240: 74 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00   t...............
  1043  |    256: 00 00 00 00 00 00 22 07 06 17 11 11 01 30 e8 03   .............0..
  1044  |    272: 62 6c 65 74 34 74 35 02 43 52 45 41 54 45 20 54   blet4t5.CREATE T
  1045  |    288: 41 42 4c 45 20 74 34 28 94 29 2a 06 06 17 13 11   ABLE t4(.)*.....
  1046  |    304: 01 3f 69 33 74 6e 65 78 78 74 64 33 ff 43 52 45   .?i3tnexxtd3.CRE
  1047  |    320: 41 54 45 20 49 4e 44 45 58 20 74 33 78 20 4f 4e   ATE INDEX t3x ON
  1048  |    336: 20 74 31 28 38 29 2e 04 06 17 15 11 01 45 69 6e    t1(8).......Ein
  1049  |    352: 64 65 68 74 32 63 64 74 31 e5 43 52 45 41 54 45   deht2cdt1.CREATE
  1050  |    368: 20 49 4e 44 45 58 20 74 32 63 c4 20 4f 4e 20 74    INDEX t2c. ON t
  1051  |    384: 32 28 63 2c 64 29 28 05 06 17 01 11 11 3d 74 61   2(c,d)(......=ta
  1052  |    400: 6c 32 74 62 74 65 32 04 43 52 45 41 54 45 20 54   l2tbte2.CREATE T
  1053  |    416: 41 42 4c 45 20 74 33 28 63 2c 78 2c 65 2c 66 29   ABLE t3(c,x,e,f)
  1054  |    432: 28 02 06 17 11 11 01 3d 74 61 9e 93 65 74 32 74   (......=ta..et2t
  1055  |    448: 32 03 43 52 45 41 54 45 20 54 41 42 4c 45 20 74   2.CREATE TABLE t
  1056  |    464: 32 28 63 2c 64 2c 65 2c 66 29 24 01 06 17 11 11   2(c,d,e,f)$.....
  1057  |    480: 01 35 55 61 62 6c 88 74 31 74 31 02 43 52 45 41   .5Uabl.t1t1.CREA
  1058  |    496: 54 45 20 54 41 42 4c 45 20 74 31 28 61 2c 62 29   TE TABLE t1(a,b)
  1059  | page 2 offset 512
  1060  |      0: 0d 00 00 00 0d 25 00 01 cf 00 01 fa 01 f3 01 de   .....%..........
  1061  |     16: 01 00 00 00 fd 00 00 0d 00 00 00 00 45 20 54 41   ............E TA
  1062  |     32: 42 4c 45 20 74 34 28 94 29 2a 06 06 17 13 11 01   BLE t4(.)*......
  1063  |     48: 3f 69 33 74 6e 65 78 78 74 64 33 ff 43 52 45 a0   ?i3tnexxtd3.CRE.
  1064  |     64: a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 74 13 11 01   ............t...
  1065  |     80: 49 45 74 00 00 00 00 00 00 00 00 00 00 00 00 00   IEt.............
  1066  | end x.db
  1067  }]} {}
  1068  
  1069  do_catchsql_test 11.1 {
  1070    PRAGMA writable_schema=ON; -- bypass improved sqlite_master consistency checking
  1071    DELETE FROM t3 WHERE x IN (SELECT x FROM t4);
  1072  } {1 {database disk image is malformed}}
  1073  
  1074  #-------------------------------------------------------------------------
  1075  reset_db
  1076  do_test 12.0 {
  1077    sqlite3 db {}
  1078    db deserialize [decode_hexdb {
  1079  | size 12288 pagesize 4096 filename crash-e6d070858a3a85.db
  1080  | page 1 offset 0
  1081  |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
  1082  |     16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 00   .....@  ........
  1083  |     96: 00 00 00 00 0d 00 00 00 02 0f 8f 00 0f bf 0f 8f   ................
  1084  |   3968: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2e   ................
  1085  |   3984: 02 06 17 15 11 01 45 69 6e 64 65 78 74 31 63 62   ......Eindext1cb
  1086  |   4000: 74 31 03 43 52 45 41 54 45 20 49 4e 44 45 58 20   t1.CREATE INDEX 
  1087  |   4016: 74 31 63 62 20 4f 4e 20 74 31 28 63 2c 62 29 3f   t1cb ON t1(c,b)?
  1088  |   4032: 01 06 17 11 11 01 6b 74 61 62 6c 65 74 31 74 31   ......ktablet1t1
  1089  |   4048: 02 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 31   .CREATE TABLE t1
  1090  |   4064: 28 61 20 49 4e 54 2c 20 62 20 49 4e 54 2c 20 43   (a INT, b INT, C
  1091  |   4080: 20 49 4e 54 20 44 45 46 41 55 4c 54 20 31 36 29    INT DEFAULT 16)
  1092  | page 2 offset 4096
  1093  |      0: 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
  1094  |   4000: 00 00 00 00 00 00 00 00 07 0b 04 01 01 01 63 63   ..............cc
  1095  |   4016: 11 05 0a 04 00 00 01 11 05 09 04 08 08 01 0f 05   ................
  1096  |   4032: 08 04 00 00 01 01 56 07 04 01 08 01 07 10 07 06   ......V.........
  1097  |   4048: 14 01 01 01 06 08 10 06 05 04 f5 00 01 05 10 07   ................
  1098  |   4064: 04 04 01 01 01 04 03 10 06 03 04 01 09 01 03 10   ................
  1099  |   4080: 06 02 04 01 00 01 02 10 06 01 04 09 01 01 02 10   ................
  1100  | page 3 offset 8192
  1101  |      0: 0a 00 00 00 0b 0f b0 00 0f f9 0f f2 0f eb 0f e4   ................
  1102  |     16: 0f dd 0f d6 0f 9f 0f c7 0f be 00 00 00 00 00 00   ................
  1103  |   4016: 07 04 01 01 01 11 e2 0b 06 04 91 00 01 11 0a 07   ................
  1104  |   4032: 04 01 01 01 10 08 06 07 04 01 01 01 10 04 04 06   ................
  1105  |   4048: 04 01 01 09 10 02 06 04 01 0a 01 10 00 00 00 00   ................
  1106  | end crash-e6d070858a3a85.db
  1107  }]} {}
  1108  
  1109  do_catchsql_test 12.1 {
  1110    SELECT CAST((SELECT b FROM t1 WHERE 16=c) AS int) FROM t1 WHERE 16=c;
  1111  } {1 {database disk image is malformed}}
  1112  
  1113  #-------------------------------------------------------------------------
  1114  reset_db
  1115  do_test 13.0 {
  1116    sqlite3 db {}
  1117    db deserialize [decode_hexdb {
  1118  | size 8192 pagesize 4096 filename crash-81dd2952aef34f.db
  1119  | page 1 offset 0
  1120  |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
  1121  |     16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 02   .....@  ........
  1122  |     32: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 04   ................
  1123  |     48: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00   ................
  1124  |     96: 00 00 00 00 0d 00 00 00 01 0f c4 00 0f c4 00 00   ................
  1125  |   4032: 00 00 00 00 3a 11 06 17 11 11 01 61 74 61 62 6c   ....:......atabl
  1126  |   4048: 65 74 31 74 31 02 43 52 45 41 54 45 20 54 41 42   et1t1.CREATE TAB
  1127  |   4064: 4c 45 20 74 31 28 61 20 49 4e 54 45 47 45 52 20   LE t1(a INTEGER 
  1128  |   4080: 50 52 49 4d 41 52 59 20 4b 45 59 2c 62 2c 63 29   PRIMARY KEY,b,c)
  1129  | page 2 offset 4096
  1130  |      0: 0d 07 70 00 02 0f eb 00 0f fa 00 00 00 00 00 00   ..p.............
  1131  |   4064: 00 00 00 00 00 00 00 00 00 00 00 05 bf ff ff ff   ................
  1132  |   4080: ff ff ff ff ff 04 00 01 00 02 04 01 00 00 00 00   ................
  1133  | end crash-81dd2952aef34f.db
  1134  }]} {}
  1135  
  1136  do_catchsql_test 13.1 {
  1137    WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x-2019 FROM c WHERE x<2)
  1138      INSERT INTO t1(b,c) SELECT last_insert_rowid(), x FROM c;
  1139  } {1 {database disk image is malformed}}
  1140  
  1141  #-------------------------------------------------------------------------
  1142  reset_db
  1143  do_test 14.0 {
  1144    sqlite3 db {}
  1145    db deserialize [decode_hexdb {
  1146  | size 512 pagesize 65536 filename clusterfuzz-testcase-minimized-sqlite3_dbfuzz2_fuzzer-4806406219825152
  1147  | page 1 offset 0
  1148  |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
  1149  |     16: 00 01 02 01 00 40 20 20 00 63 2e 78 00 00 00 07   .....@  .c.x....
  1150  |     32: 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 04   ................
  1151  |     48: 00 00 00 00 00 00 01 00 35 05 43 00 04 00 00 00   ........5.C.....
  1152  |     80: 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 0c   ................
  1153  |     96: 00 2e 2c 50 0d 00 00 00 03 00 00 00 01 da 01 b0   ..,P............
  1154  |    112: 01 56 01 86 01 2a 01 02 00 00 00 00 00 00 00 1c   .V...*..........
  1155  |    128: 00 38 80 b2 e6 0e 00 00 00 00 00 00 00 00 00 10   .8..............
  1156  |    144: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01   ................
  1157  |    160: 00 00 00 00 00 00 00 00 00 00 00 00 45 20 54 41   ............E TA
  1158  |    256: 00 00 00 00 00 00 22 07 06 17 11 11 01 35 74 61   .............5ta
  1159  |    272: 62 6c 00 10 00 00 34 07 43 52 54 45 20 54 41 42   bl....4.CRTE TAB
  1160  |    288: 4c 45 20 74 33 28 63 2e 78 2c 65 2c 66 15 28 3a   LE t3(c.x,e,f.(:
  1161  |    304: 06 17 11 11 01 65 78 8c cc 87 85 35 05 43 72 45   .....ex....5.CrE
  1162  |    320: 41 54 48 20 49 4e 44 45 58 20 74 33 78 20 4f 4e   ATH INDEX t3x ON
  1163  |    336: 20 74 33 28 78 39 2e 04 06 17 15 11 01 45 69 6e    t3(x9.......Ein
  1164  |    352: 64 65 78 74 32 63 64 74 32 05 43 52 45 41 54 45   dext2cdt2.CREATE
  1165  |    368: 20 49 4e 44 45 58 20 74 32 63 64 20 4f 4e 20 74    INDEX t2cd ON t
  1166  |    384: 32 28 63 2a 44 29 28 05 fa e8 ee ed 01 3d 74 63   2(c*D)(......=tc
  1167  |    400: 62 6c 65 74 33 74 33 07 43 52 45 41 54 45 20 54   blet3t3.CREATE T
  1168  |    416: 41 42 4c 45 20 74 33 28 63 2e 78 2c 65 2c 66 15   ABLE t3(c.x,e,f.
  1169  |    432: 28 3a 06 17 11 11 01 3d 74 61 62 6c 65 74 32 74   (:.....=tablet2t
  1170  |    448: 32 03 43 52 45 41 54 45 20 54 41 42 4c 45 20 74   2.CREATE TABLE t
  1171  |    464: 32 28 63 2c 64 2c 65 2c 66 29 24 01 06 17 11 11   2(c,d,e,f)$.....
  1172  |    480: 01 35 74 61 62 6c 65 74 31 74 31 02 43 52 45 41   .5tablet1t1.CREA
  1173  |    496: 54 45 20 54 41 42 4c 45 20 74 31 28 61 2c 63 29   TE TABLE t1(a,c)
  1174  | end clusterfuzz-testcase-minimized-sqlite3_dbfuzz2_fuzzer-4806406219825152
  1175  }]} {}
  1176  
  1177  extra_schema_checks 0
  1178  do_catchsql_test 14.1 {
  1179    PRAGMA integrity_check;
  1180  } {1 {database disk image is malformed}}
  1181  
  1182  # If SQLITE_OMIT_ALTERTABLE is defined, omit this file.
  1183  ifcapable altertable {
  1184    do_catchsql_test 14.2 {
  1185      ALTER TABLE t1 RENAME TO alkjalkjdfiiiwuer987lkjwer82mx97sf98788s9789s; 
  1186    } {1 {database disk image is malformed}}
  1187  }
  1188  extra_schema_checks 1
  1189  
  1190  #-------------------------------------------------------------------------
  1191  reset_db
  1192  do_test 15.0 {
  1193    sqlite3 db {}
  1194    db deserialize [decode_hexdb {
  1195  | size 28672 pagesize 4096 filename crash-3afa1ca9e9c1bd.db
  1196  | page 1 offset 0
  1197  |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
  1198  |     16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 07   .....@  ........
  1199  |     32: 00 00 00 00 00 00 00 00 00 00 00 06 00 00 00 04   ................
  1200  |     48: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00   ................
  1201  |     96: 00 00 00 00 0d 00 00 00 06 0e 88 00 0f b8 0f 6d   ...............m
  1202  |    112: 0f 3a 0f 0b 0e d5 0e 88 01 00 00 00 00 00 00 00   .:..............
  1203  |   3712: 00 00 00 00 00 00 00 00 4b 06 06 17 25 25 01 5b   ........K...%%.[
  1204  |   3728: 74 61 62 6c 65 73 71 6c 69 74 65 5f 73 74 61 74   tablesqlite_stat
  1205  |   3744: 31 73 71 6c 69 74 65 5f 73 74 61 74 31 07 43 52   1sqlite_stat1.CR
  1206  |   3760: 45 41 54 45 20 54 41 42 4c 45 20 73 71 6c 69 74   EATE TABLE sqlit
  1207  |   3776: 65 5f 73 74 61 74 31 28 74 62 6c 2c 69 64 78 2c   e_stat1(tbl,idx,
  1208  |   3792: 73 74 61 74 29 34 05 06 17 13 11 01 53 69 6e 64   stat)4......Sind
  1209  |   3808: 65 78 63 31 63 63 31 06 43 52 45 41 54 45 20 55   exc1cc1.CREATE U
  1210  |   3824: 4e 49 51 55 45 20 49 4e 44 45 58 20 63 31 63 20   NIQUE INDEX c1c 
  1211  |   3840: 4f 4e 20 63 31 28 63 2c 20 62 29 2d 04 06 17 13   ON c1(c, b)-....
  1212  |   3856: 11 01 45 69 6e 64 65 78 63 31 64 63 31 05 43 52   ..Eindexc1dc1.CR
  1213  |   3872: 45 41 54 45 20 49 4e 44 45 58 20 63 31 64 20 4f   EATE INDEX c1d O
  1214  |   3888: 4e 20 63 31 28 64 2c 20 62 29 31 03 06 17 13 11   N c1(d, b)1.....
  1215  |   3904: 01 4d 69 6e 64 65 78 62 31 63 62 31 05 43 52 45   .Mindexb1cb1.CRE
  1216  |   3920: 41 54 45 20 55 4e 49 51 55 45 20 49 4e 44 45 58   ATE UNIQUE INDEX
  1217  |   3936: 20 62 31 63 20 4f 4e 20 62 31 28 63 29 49 02 06    b1c ON b1(c)I..
  1218  |   3952: 17 11 11 0f 7f 74 61 62 6c 65 63 31 63 31 03 43   .....tablec1c1.C
  1219  |   3968: 52 45 41 54 45 20 54 41 42 4c 45 20 63 31 28 61   REATE TABLE c1(a
  1220  |   3984: 20 49 4e 54 20 50 52 49 4d 41 52 59 20 4b 45 59    INT PRIMARY KEY
  1221  |   4000: 2c 20 62 2c 20 63 2c 20 64 29 20 57 49 54 48 4f   , b, c, d) WITHO
  1222  |   4016: 55 54 20 52 4f 57 49 44 46 01 06 17 11 11 01 79   UT ROWIDF......y
  1223  |   4032: 74 61 62 6c 65 62 31 62 31 02 43 52 45 41 54 45   tableb1b1.CREATE
  1224  |   4048: 20 54 41 42 4c 45 20 62 31 28 61 20 49 4e 54 20    TABLE b1(a INT 
  1225  |   4064: 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 62 2c 20   PRIMARY KEY, b, 
  1226  |   4080: 63 29 20 57 49 54 48 4f 55 54 20 52 4f 57 49 44   c) WITHOUT ROWID
  1227  | page 2 offset 4096
  1228  |      0: 0a 00 00 00 07 0f ca 00 0f fa 0f f2 0f ea 0f e2   ................
  1229  |     16: 0f da 00 00 00 01 00 00 00 00 00 00 00 00 00 00   ................
  1230  |   4032: 00 00 00 00 00 00 00 00 00 00 07 04 01 0f 01 06   ................
  1231  |   4048: 67 07 07 04 01 0f 01 06 66 06 07 04 01 0f 01 05   g.......f.......
  1232  |   4064: 65 05 07 04 01 0f 01 04 64 04 07 04 01 0f 01 03   e.......d.......
  1233  |   4080: 63 03 07 04 01 0f 01 02 62 0f 05 04 09 0f 09 61   c.......b......a
  1234  | page 3 offset 8192
  1235  |      0: 0a 00 00 00 07 0f bd 00 0f f9 0f ef 0f e5 0f db   ................
  1236  |     16: 0f d1 0f c7 0f bd 00 00 00 00 01 00 00 00 00 00   ................
  1237  |   4016: 00 00 00 00 00 00 00 00 00 00 00 00 00 09 05 01   ................
  1238  |   4032: 0f 01 01 07 61 07 07 09 05 01 0f 01 01 06 61 06   ....a.........a.
  1239  |   4048: 06 09 05 01 0f 01 01 05 61 05 05 09 05 01 0f 01   ........a.......
  1240  |   4064: 01 04 61 04 04 09 05 01 0f 01 01 03 61 03 03 09   ..a.........a...
  1241  |   4080: 05 01 0f 01 01 02 61 0f 02 06 05 09 0f 09 09 61   ......a........a
  1242  | page 4 offset 12288
  1243  |      0: 0a 00 00 00 07 0f d8 00 0f fc 0f f0 0f ea 0f e4   ................
  1244  |     16: 0f de 0f d8 0f f6 00 00 00 00 00 00 00 00 00 00   ................
  1245  |   4048: 00 00 00 00 00 00 00 00 05 03 01 01 07 07 05 03   ................
  1246  |   4064: 01 01 06 06 05 03 01 01 05 05 05 03 01 01 04 04   ................
  1247  |   4080: 05 03 01 01 03 03 05 03 01 01 0f 02 03 03 09 09   ................
  1248  | page 5 offset 16384
  1249  |      0: 0a 00 00 00 07 0f ca 00 0f fa 0f f2 0f ea 0f 00   ................
  1250  |   4032: 00 00 00 00 00 00 00 00 00 00 07 04 01 0f 01 07   ................
  1251  |   4048: 61 07 07 04 01 0f 01 06 61 06 07 04 01 0f 01 05   a.......a.......
  1252  |   4064: 61 05 07 04 01 1f 01 04 61 04 07 04 01 0f 01 03   a.......a.......
  1253  |   4080: 61 03 07 04 01 0f 01 02 61 02 05 04 09 0f 09 61   a.......a......a
  1254  | page 6 offset 20480
  1255  |      0: 0a 00 00 00 07 0f ca 00 0f fa 0f ea 0f e2 00 00   ................
  1256  |   4032: 00 00 00 00 00 00 00 00 00 00 07 04 01 0f 01 07   ................
  1257  |   4048: 61 07 07 04 01 0f 01 06 61 06 07 04 01 0f 01 05   a.......a.......
  1258  |   4064: 61 05 07 04 01 0f 01 04 61 04 07 04 01 0f 01 03   a.......a.......
  1259  |   4080: 61 03 07 04 01 0f 01 0f 61 02 05 04 09 0f 09 61   a.......a......a
  1260  | page 7 offset 24576
  1261  |      0: 0d 00 00 00 05 0f 1c 00 0f f0 0f e0 0f d3 0f c5   ................
  1262  |     16: 0f b8 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
  1263  |   4016: 00 00 00 00 00 00 00 00 0b 05 04 11 11 13 62 31   ..............b1
  1264  |   4032: 62 31 37 20 31 0c 04 04 11 13 13 62 31 62 31 63   b17 1......b1b1c
  1265  |   4048: 37 20 31 0b 03 04 11 11 13 63 31 63 31 37 20 31   7 1......c1c17 1
  1266  |   4064: 0e 02 04 11 13 07 63 31 63 31 64 37 20 31 20 31   ......c1c1d7 1 1
  1267  |   4080: 0e 01 04 11 13 17 63 31 63 31 63 37 20 31 00 00   ......c1c1c7 1..
  1268  | end crash-3afa1ca9e9c1bd.db
  1269  }]} {}
  1270  
  1271  extra_schema_checks 0
  1272  do_execsql_test 15.1 {
  1273    PRAGMA cell_size_check = 0;
  1274    UPDATE c1 SET c= NOT EXISTS(SELECT 1 FROM c1 ORDER BY (SELECT 1 FROM c1 ORDER BY a)) +10 WHERE d BETWEEN 4 AND 7;
  1275  } {}
  1276  extra_schema_checks 1
  1277  
  1278  #-------------------------------------------------------------------------
  1279  reset_db
  1280  do_execsql_test 16.0 {
  1281    CREATE TABLE t1(w, x, y, z, UNIQUE(w, x), UNIQUE(y, z));
  1282    INSERT INTO t1 VALUES(1, 1, 1, 1);
  1283  
  1284    CREATE TABLE t1idx(x, y, i INTEGER, PRIMARY KEY(x)) WITHOUT ROWID;
  1285    INSERT INTO t1idx VALUES(10, NULL, 5);
  1286  
  1287    PRAGMA writable_schema = 1;
  1288    UPDATE sqlite_master SET rootpage = (
  1289      SELECT rootpage FROM sqlite_master WHERE name='t1idx'
  1290    ) WHERE type = 'index';
  1291  }
  1292  
  1293  extra_schema_checks 0
  1294  db close
  1295  sqlite3 db test.db
  1296  extra_schema_checks 1
  1297  
  1298  do_catchsql_test 16.1 {
  1299    PRAGMA writable_schema = ON;
  1300    INSERT INTO t1(rowid, w, x, y, z) VALUES(5, 10, 11, 10, NULL);
  1301  } {1 {database disk image is malformed}}
  1302  
  1303  #-------------------------------------------------------------------------
  1304  # Test that corruption is reported from within a checkpoint if the 
  1305  # expected final size of the database (according to the last commit
  1306  # frame in the wal file) is greater than the combined initial sizes 
  1307  # of the database and wal file.
  1308  #
  1309  if {[wal_is_capable]} {
  1310    reset_db
  1311    do_execsql_test 17.0 {
  1312      CREATE TABLE t1(o INTEGER PRIMARY KEY, t UNIQUE);
  1313      INSERT INTO t1(t) VALUES(randomblob(123));
  1314      INSERT INTO t1(t) SELECT randomblob(123) FROM t1;
  1315      INSERT INTO t1(t) SELECT randomblob(123) FROM t1;
  1316      INSERT INTO t1(t) SELECT randomblob(123) FROM t1;
  1317      INSERT INTO t1(t) SELECT randomblob(123) FROM t1;
  1318      INSERT INTO t1(t) SELECT randomblob(123) FROM t1;
  1319      INSERT INTO t1(t) SELECT randomblob(123) FROM t1;
  1320      INSERT INTO t1(t) SELECT randomblob(123) FROM t1;
  1321      INSERT INTO t1(t) SELECT randomblob(123) FROM t1;
  1322      INSERT INTO t1(t) SELECT randomblob(123) FROM t1;
  1323    
  1324      PRAGMA journal_mode = wal;
  1325      INSERT INTO t1 VALUES(-1, 'b');
  1326    } {wal}
  1327    
  1328    do_test 17.1 {
  1329      set fd [open test.db r+]
  1330      chan truncate $fd 2048
  1331      file size test.db
  1332    } {2048}
  1333    
  1334    do_catchsql_test 17.2 {
  1335      PRAGMA wal_checkpoint
  1336    } {1 {database disk image is malformed}}
  1337    
  1338    do_test 17.3 {
  1339      close $fd
  1340    } {}
  1341  }
  1342  
  1343  #-------------------------------------------------------------------------
  1344  reset_db
  1345  do_test 18.0 {
  1346    sqlite3 db {}
  1347    db deserialize [decode_hexdb {
  1348  .open --hexdb
  1349  | size 12288 pagesize 4096 filename crash-40d5739835cbdb.db
  1350  | page 1 offset 0
  1351  |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
  1352  |     16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 00   .....@  ........
  1353  |     96: 00 00 00 00 0d 00 00 00 02 0f 4e 00 0f a2 0f 4e   ..........N....N
  1354  |   3904: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 02   ..............R.
  1355  |   3920: 07 17 11 11 01 81 0f 74 61 62 6c 65 74 32 74 32   .......tablet2t2
  1356  |   3936: 03 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 32   .CREATE TABLE t2
  1357  |   3952: 28 61 20 49 4e 54 2c 20 62 20 49 4e 54 45 47 45   (a INT, b INTEGE
  1358  |   3968: 52 2c 20 50 52 49 4d 41 52 59 20 4b 45 59 28 61   R, PRIMARY KEY(a
  1359  |   3984: 2c 62 29 29 20 57 49 54 48 4f 55 54 20 52 4f 57   ,b)) WITHOUT ROW
  1360  |   4000: 49 44 5c 01 07 16 11 11 01 81 23 74 61 62 6c 65   ID........#table
  1361  |   4016: 74 31 74 31 02 43 52 45 41 54 45 20 54 41 42 4c   t1t1.CREATE TABL
  1362  |   4032: 45 20 74 31 28 61 20 49 4e 54 20 50 52 49 4d 41   E t1(a INT PRIMA
  1363  |   4048: 52 59 20 4b 45 59 2c 20 62 20 54 45 58 54 2c 20   RY KEY, b TEXT, 
  1364  |   4064: 63 20 54 45 58 54 2c 20 64 20 49 4e 54 45 47 45   c TEXT, d INTEGE
  1365  |   4080: 52 29 20 57 49 54 48 4f 55 54 20 52 4f 57 49 44   R) WITHOUT ROWID
  1366  | page 2 offset 4096
  1367  |      0: 0a 00 00 00 06 0f a7 00 0f f4 0f e5 0f d5 0f c5   ................
  1368  |     16: 0f b6 0f 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
  1369  |   4000: 00 00 00 00 00 00 00 0f 05 01 15 13 01 06 65 7f   ..............e.
  1370  |   4016: 25 6e 73 69 78 06 0e 05 01 13 15 03 b5 6f 64 64   %nsix........odd
  1371  |   4032: 66 69 76 65 05 0f 05 01 15 15 01 04 65 76 65 61   five........evea
  1372  |   4048: e6 6f 75 82 04 0f 05 01 13 17 01 03 6f 64 64 74   .ou.........oddt
  1373  |   4064: 68 72 61 15 03 0e 05 01 15 12 01 02 64 76 64 6e   hra.........dvdn
  1374  |   4080: 74 77 6f 02 00 00 00 00 00 00 00 00 00 00 00 00   two.............
  1375  | page 3 offset 8192
  1376  |   2816: 00 00 00 00 00 00 00 00 00 00 00 06 03 02 01 00   ................
  1377  |   2832: c8 07 06 03 02 01 00 c7 11 06 03 02 01 02 a6 52   ...............R
  1378  |   2848: 06 d5 02 01 10 c5 1b 06 03 02 00 ef c4 53 06 03   .............S..
  1379  |   2864: 02 01 00 c3 22 06 04 02 01 00 c2 26 06 03 02 01   ...........&....
  1380  |   2880: 00 c2 1e 02 b3 02 01 00 c0 3a 06 03 3c 01 00 bf   .........:..<...
  1381  |   2896: 2c 06 03 02 01 00 be 27 00 83 02 01 01 bd 15 06   ,......'........
  1382  |   2912: 03 02 01 00 bc 21 06 03 02 01 00 bb 54 16 13 02   .....!......T...
  1383  |   2928: 01 09 9a 0a 06 03 02 01 00 b9 53 06 03 02 01 00   ..........S.....
  1384  |   2944: b8 52 06 13 02 01 00 b7 1e 06 03 02 01 00 b6 34   .R.............4
  1385  |   2960: 06 13 02 01 00 b5 3a 05 f3 12 01 00 b4 45 05 03   ......:......E..
  1386  |   2976: 02 00 00 b4 6f 06 03 02 01 00 b2 03 06 03 02 01   ....o...........
  1387  |   2992: 00 b1 63 06 03 02 01 00 b0 24 06 03 02 01 00 9f   ..c......$......
  1388  |   3008: ac 06 03 02 01 00 a2 2f 07 03 02 01 01 ad 21 06   ......./......!.
  1389  |   3024: 03 02 01 fb cd 5b 06 c0 01 f1 00 ab 23 06 03 02   .....[......#...
  1390  |   3040: 01 00 aa 5b 06 03 02 01 00 a3 ce 06 02 03 01 00   ...[............
  1391  |   3056: a8 0e 06 03 02 01 00 a7 0c 06 02 f1 01 00 a6 0d   ................
  1392  |   3072: 06 03 02 01 00 95 25 06 03 02 01 00 a4 17 06 03   ......%.........
  1393  |   3088: 02 01 00 a3 09 06 03 02 01 00 a2 51 06 03 02 02   ...........Q....
  1394  |   3104: 00 a1 40 06 01 e2 00 00 a0 4b 06 13 02 00 00 9e   ..@......K......
  1395  |   3120: 5d 06 03 02 01 10 9e 81 06 03 02 01 00 9d 42 06   ].............B.
  1396  |   3136: 03 69 01 00 9c 48 06 03 02 01 00 9b 48 06 03 01   .i...H......H...
  1397  |   3152: 01 00 9a 09 06 03 02 01 00 99 2f 06 03 02 01 00   ........../.....
  1398  |   3168: 98 3a 06 03 02 01 00 97 24 06 03 02 01 00 96 4a   .:......$......J
  1399  |   3184: 06 03 02 11 00 f9 50 02 93 02 01 00 94 2f 06 03   ......P....../..
  1400  |   3200: 02 11 04 93 1a 06 03 01 04 e0 92 1a 06 03 02 01   ................
  1401  |   3216: 00 91 27 06 03 02 01 00 90 23 06 03 02 01 00 8f   ..'......#......
  1402  |   3232: 3b 06 03 02 01 00 8e 46 06 16 02 01 00 8d 1d 07   ;......F........
  1403  |   3248: 23 12 01 00 8c 5a 06 03 02 01 00 8a 39 06 03 02   #....Z......9...
  1404  |   3264: 00 ff 84 b5 06 03 02 01 00 89 07 06 03 02 11 00   ................
  1405  |   3280: 88 02 06 03 02 01 00 87 19 06 03 02 01 00 86 4d   ...............M
  1406  |   3296: 06 13 12 00 00 85 4b 06 03 02 01 00 84 37 06 13   ......K......7..
  1407  |   3312: 02 01 00 83 2c 06 03 02 01 00 81 60 06 13 02 11   ....,......`....
  1408  |   3328: 00 81 3b 06 03 02 01 0a b0 5a 06 03 01 01 7f 22   ..;......Z......
  1409  |   3344: 05 03 01 01 7e 21 05 03 01 01 7d 0b 15 03 01 02   ....~!..........
  1410  |   3360: 7b 08 05 03 06 91 7b 22 05 03 01 01 7a 58 05 03   ............zX..
  1411  |   3376: 01 01 7a 4f 05 03 01 01 78 49 05 03 01 01 77 16   ..zO....xI....w.
  1412  |   3392: 05 03 01 01 76 5f 05 03 01 01 75 0f 05 03 01 01   ....v_....u.....
  1413  |   3408: 74 2f 05 03 01 01 3f 1f 05 03 01 02 72 14 05 03   t/....?.....r...
  1414  |   3424: 00 f1 71 08 05 03 01 01 70 0c 05 03 01 47 7f 29   ..q.....p....G.)
  1415  |   3440: 05 03 01 01 6e 57 05 03 01 01 6d 33 05 13 00 f1   ....nW....m3....
  1416  |   3456: 6c 0b 05 03 01 01 6b 49 05 03 01 01 69 05 05 03   l.....kI....i...
  1417  |   3472: 01 02 ed 23 00 00 01 00 00 00 00 00 00 00 00 00   ...#............
  1418  | end crash-40d5739835cbdb.db
  1419  }]} {}
  1420  
  1421  ifcapable json1 {
  1422  do_catchsql_test 18.1 {
  1423    SELECT 
  1424      json_group_array(c) OVER win4 
  1425    FROM t1
  1426      WINDOW win4 AS (
  1427          ORDER BY a COLLATE nocase RANGE BETWEEN 1.0 PRECEDING AND CURRENT ROW
  1428      )
  1429  } {1 {JSON cannot hold BLOB values}}
  1430  } ;# ifcapable json1
  1431  
  1432  #-------------------------------------------------------------------------
  1433  reset_db
  1434  do_test 19.0 {
  1435    sqlite3 db {}
  1436    db deserialize [decode_hexdb {
  1437  .open --hexdb
  1438  | size 20480 pagesize 4096 filename crash-f022eb0ce64d27.db
  1439  | page 1 offset 0
  1440  |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
  1441  |     16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 05   .....@  ........
  1442  |     32: 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 04   ................
  1443  |     48: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00   ................
  1444  |     96: 00 00 00 00 0d 0f f8 00 04 0e d2 00 0f 08 0f d3   ................
  1445  |    112: 0f ae 0e d2 00 00 00 00 00 00 00 00 00 00 00 00   ................
  1446  |   3792: 00 00 34 04 06 17 0f 11 01 57 69 6e 64 65 78 61   ..4......Windexa
  1447  |   3808: 74 31 05 43 52 45 41 54 45 20 55 4e 49 51 55 45   t1.CREATE UNIQUE
  1448  |   3824: 20 49 4e 44 45 58 20 61 20 4f 4e 20 74 31 28 61    INDEX a ON t1(a
  1449  |   3840: 2c 20 30 20 7c 20 61 29 81 23 01 07 17 11 11 01   , 0 | a).#......
  1450  |   3856: 82 31 74 61 62 6c 65 74 31 74 31 02 43 52 45 41   .1tablet1t1.CREA
  1451  |   3872: 54 45 20 54 41 42 4c 45 20 74 31 28 0a 20 20 20   TE TABLE t1(.   
  1452  |   3888: 20 67 63 62 20 41 53 20 28 62 2a 31 29 2c 0a 20    gcb AS (b*1),. 
  1453  |   3904: 20 20 20 61 20 49 34 54 45 47 45 52 20 50 52 49      a I4TEGER PRI
  1454  |   3920: 4d 41 52 59 20 4b 45 59 2c 0a 20 20 20 20 67 63   MARY KEY,.    gc
  1455  |   3936: 63 20 41 53 20 28 74 32 2b 30 29 2c 0a 20 20 20   c AS (t2+0),.   
  1456  |   3952: 20 62 20 55 4e 49 51 55 45 2c 0a 20 20 20 20 67    b UNIQUE,.    g
  1457  |   3968: 63 61 20 41 53 20 28 31 2a 61 2b 30 29 2c 0a 20   ca AS (1*a+0),. 
  1458  |   3984: 20 20 20 74 32 20 55 4e 49 51 55 45 0a 20 20 29      t2 UNIQUE.  )
  1459  |   4000: 20 57 49 54 48 4f 55 54 20 52 4f 57 49 44 23 03    WITHOUT ROWID#.
  1460  |   4016: 06 17 37 11 01 00 69 6e 64 65 78 73 71 6c 69 74   ..7...indexsqlit
  1461  |   4032: 65 5f 61 75 74 6f 69 6e 64 65 78 5f 74 31 5f 33   e_autoindex_t1_3
  1462  |   4048: 74 31 02 23 02 06 17 37 11 01 00 69 6e 64 65 78   t1.#...7...index
  1463  |   4064: 73 71 6c 69 74 65 5f 61 75 74 6f 69 6e 64 65 78   sqlite_autoindex
  1464  |   4080: 5f 74 31 5f 32 74 31 02 00 00 00 08 00 00 00 00   _t1_2t1.........
  1465  | page 2 offset 4096
  1466  |      0: 0a 00 00 00 05 0f d8 00 0f f8 0f f8 9f e8 0f e0   ................
  1467  |     16: 0f d8 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
  1468  |   4048: 00 00 00 00 00 00 00 00 07 04 01 02 00 0f 13 88   ................
  1469  |   4064: 07 04 01 02 00 0e 0f a0 07 04 01 02 00 0d 0b b8   ................
  1470  |   4080: 07 04 01 02 00 0c 07 d0 07 04 01 02 00 0b 03 e8   ................
  1471  | page 5 offset 16384
  1472  |      0: 0a 00 00 00 05 0f e2 00 0f fa 0f f4 0f ee 0f e8   ................
  1473  |     16: 0f e2 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
  1474  |   4064: 00 00 05 03 01 01 0f 0f 05 03 01 01 0e 0e 05 03   ................
  1475  |   4080: 01 01 0d 0d 05 03 01 01 0c 0c 05 03 01 01 0b 0b   ................
  1476  | end crash-f022eb0ce64d27.db
  1477  }]} {}
  1478  
  1479  do_execsql_test 19.1 {
  1480    PRAGMA writable_schema=ON;
  1481  }
  1482  
  1483  set err "UNIQUE constraint failed: index 'a'"
  1484  ifcapable oversize_cell_check {
  1485    set err "database disk image is malformed"
  1486  }
  1487  do_catchsql_test 19.2 {
  1488    UPDATE t1 SET a=1;
  1489  } [list 1 $err]
  1490  
  1491  finish_test