Avoid some performance problems in the recover extension when recovering strategicall...
[sqlite.git] / ext / recover / recovercorrupt2.test
blob6c216308f0902ed9319978d24b3daa17ec328138
1 # 2022 August 28
3 # The author disclaims copyright to this source code.  In place of
4 # a legal notice, here is a blessing:
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.
10 #***********************************************************************
13 source [file join [file dirname [info script]] recover_common.tcl]
14 set testprefix recovercorrupt2
16 do_execsql_test 1.0 {
17   PRAGMA page_size = 512;
18   CREATE TABLE t1(a INTEGER PRIMARY KEY, b, c);
19   INSERT INTO t1 VALUES(1, 2, 3);
20   INSERT INTO t1 VALUES(2, hex(randomblob(100)), randomblob(200));
21   CREATE INDEX i1 ON t1(b, c);
22   CREATE TABLE t2(a PRIMARY KEY, b, c) WITHOUT ROWID;
23   INSERT INTO t2 VALUES(1, 2, 3);
24   INSERT INTO t2 VALUES(2, hex(randomblob(100)), randomblob(200));
25   ANALYZE;
26   PRAGMA writable_schema = 1;
27   UPDATE sqlite_schema SET sql = 'CREATE INDEX i1 ON o(world)' WHERE name='i1'; 
28   DELETE FROM sqlite_schema WHERE name='sqlite_stat4';
31 do_test 1.1 {
32   set R [sqlite3_recover_init db main test.db2]
33   $R run
34   $R finish
35 } {}
37 sqlite3 db2 test.db2
38 do_execsql_test -db db2 1.2 {
39   SELECT sql FROM sqlite_schema
40 } {
41   {CREATE TABLE t1(a INTEGER PRIMARY KEY, b, c)}
42   {CREATE TABLE t2(a PRIMARY KEY, b, c) WITHOUT ROWID} 
43   {CREATE TABLE sqlite_stat1(tbl,idx,stat)} 
45 db2 close
47 do_execsql_test 1.3 {
48   PRAGMA writable_schema = 1;
49   UPDATE sqlite_schema SET sql = 'CREATE TABLE t2 syntax error!' WHERE name='t2';
52 do_test 1.4 {
53   set R [sqlite3_recover_init db main test.db2]
54   $R run
55   $R finish
56 } {}
58 sqlite3 db2 test.db2
59 do_execsql_test -db db2 1.5 {
60   SELECT sql FROM sqlite_schema
61 } {
62   {CREATE TABLE t1(a INTEGER PRIMARY KEY, b, c)}
63   {CREATE TABLE sqlite_stat1(tbl,idx,stat)} 
65 db2 close
67 #-------------------------------------------------------------------------
69 reset_db
70 do_test 2.0 {
71   sqlite3 db {}
72   db deserialize [decode_hexdb {
73 | size 8192 pagesize 4096 filename x3.db
74 | page 1 offset 0
75 |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
76 |     16: 10 00 01 01 00 40 20 20 00 00 00 02 00 00 00 02   .....@  ........
77 |     32: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 04   ................
78 |     48: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00   ................
79 |     80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02   ................
80 |     96: 00 2e 63 00 0d 00 00 00 01 0f d8 00 0f d8 00 00   ..c.............
81 |   4048: 00 00 00 00 00 00 00 00 26 01 06 17 11 11 01 39   ........&......9
82 |   4064: 74 61 62 6c 65 74 31 74 31 02 43 52 45 41 54 45   tablet1t1.CREATE
83 |   4080: 20 54 41 42 4c 45 20 74 31 28 61 2c 62 2c 63 29    TABLE t1(a,b,c)
84 | page 2 offset 4096
85 |      0: 0d 00 00 00 01 0f ce 00 0f ce 00 00 00 00 00 00   ................
86 |   4032: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff   ..............(.
87 |   4048: ff ff ff ff ff ff ff 28 04 27 25 23 61 61 61 61   .........'%#aaaa
88 |   4064: 61 61 61 61 61 61 61 61 61 62 62 62 62 62 62 62   aaaaaaaaabbbbbbb
89 |   4080: 62 62 62 62 62 63 63 63 63 63 63 63 63 63 63 63   bbbbbccccccccccc
90 | end x3.db
91 }]} {}
93 do_test 2.1 {
94   set R [sqlite3_recover_init db main test.db2]
95   $R run
96   $R finish
97 } {}
99 sqlite3 db2 test.db2
100 do_execsql_test -db db2 2.2 {
101   SELECT sql FROM sqlite_schema
102 } {
103   {CREATE TABLE t1(a,b,c)}
105 do_execsql_test -db db2 2.3 {
106   SELECT * FROM t1
107 } {}
108 db2 close
110 #-------------------------------------------------------------------------
112 reset_db
113 do_test 3.0 {
114   sqlite3 db {}
115   db deserialize [decode_hexdb {
116   .open --hexdb
117   | size 4096 pagesize 1024 filename corrupt032.txt.db
118   | page 1 offset 0
119   |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
120   |     16: 04 00 01 01 08 40 20 20 00 00 00 02 00 00 00 03   .....@  ........
121   |     32: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 04   ................
122   |     48: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00   ................
123   |     80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02   ................
124   |     96: 00 2e 24 80 0d 00 00 00 01 03 d4 00 03 d4 00 00   ..$.............
125   |    976: 00 00 00 00 22 01 06 17 11 11 01 31 74 61 62 6c   ...........1tabl
126   |    992: 65 74 31 74 31 02 43 52 45 41 54 45 20 54 41 42   et1t1.CREATE TAB
127   |   1008: 4c 45 20 74 31 28 78 29 00 00 00 00 00 00 00 00   LE t1(x)........
128   | page 2 offset 1024
129   |      0: 0d 00 00 00 01 02 06 00 02 06 00 00 00 00 00 00   ................
130   |    512: 00 00 00 00 00 00 8b 60 01 03 97 46 00 00 00 00   .......`...F....
131   |   1008: 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00   ................
132   | end corrupt032.txt.db
133 }]} {}
135 do_test 3.1 {
136   set R [sqlite3_recover_init db main test.db2]
137   $R run
138   $R finish
139 } {}
141 #-------------------------------------------------------------------------
143 reset_db
144 do_test 4.0 {
145   sqlite3 db {}
146   db deserialize [decode_hexdb {
147   .open --hexdb
148   | size 4096 pagesize 4096 filename crash-00f2d3627f1b43.db
149   | page 1 offset 0
150   |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
151   |     16: 00 01 01 02 00 40 20 20 01 00 ff 00 42 01 10 01   .....@  ....B...
152   |     32: ef 00 00 87 00 ff ff ff f0 01 01 10 ff ff 00 00   ................
153   | end crash-00f2d3627f1b43.db
154 }]} {}
156 do_test 4.1 {
157   set R [sqlite3_recover_init db main test.db2]
158   catch { $R run }
159   list [catch { $R finish } msg] $msg
160 } {1 {unable to open database file}}
162 #-------------------------------------------------------------------------
164 reset_db
165 do_test 5.0 {
166   sqlite3 db {}
167   db deserialize [decode_hexdb {
168 .open --hexdb
169 | size 16384 pagesize 4096 filename crash-7b75760a4c5f15.db
170 | page 1 offset 0
171 |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
172 |     16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 04   .....@  ........
173 |     32: 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 00   ................
174 |     96: 00 00 00 00 0d 00 00 00 03 0f 4e 00 0f bc 0f 90   ..........N.....
175 |    112: 0f 4e 00 00 00 00 00 00 00 00 00 00 00 00 00 00   .N..............
176 |   3904: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 03   ..............@.
177 |   3920: 06 17 11 11 01 6d 74 61 62 6c 65 74 32 74 32 04   .....mtablet2t2.
178 |   3936: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 32 28   CREATE TABLE t2(
179 |   3952: 78 2c 79 2c 7a 20 50 52 49 4d 41 52 59 20 4b 45   x,y,z PRIMARY KE
180 |   3968: 59 29 20 57 49 54 48 4f 55 54 20 52 4f 57 49 44   Y) WITHOUT ROWID
181 |   3984: 2a 02 06 17 13 11 01 3f 69 6e 64 65 78 74 31 61   *......?indext1a
182 |   4000: 74 31 03 43 52 45 41 54 45 20 49 4e 44 45 58 20   t1.CREATE INDEX 
183 |   4016: 74 31 61 20 4f 4e 20 74 31 28 61 29 42 01 06 17   t1a ON t1(a)B...
184 |   4032: 11 11 01 71 74 61 62 6c 65 74 31 74 31 02 43 52   ...qtablet1t1.CR
185 |   4048: 45 41 54 45 20 54 41 42 4c 45 20 74 31 28 61 20   EATE TABLE t1(a 
186 |   4064: 49 4e 54 2c 62 20 54 45 58 54 2c 63 20 42 4c 4f   INT,b TEXT,c BLO
187 |   4080: 42 2c 64 20 52 45 41 4c 29 20 53 54 52 49 43 54   B,d REAL) STRICT
188 | page 2 offset 4096
189 |      0: 0d 00 00 00 14 0c ae 00 0f df 0f bd 0f 9a 0f 76   ...............v
190 |     16: 0f 51 0f 2b 0f 04 0e dc 0e b3 0e 89 0e 5e 0e 32   .Q.+.........^.2
191 |     32: 0e 05 0d 1a 0d a8 0d 78 0d 47 0d 15 0c e2 00 00   .......x.G......
192 |   3232: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 32 14   ..............2.
193 |   3248: 05 06 3f 34 07 15 f4 c9 23 af e2 b3 b6 61 62 63   ..?4....#....abc
194 |   3264: 30 32 30 78 79 7a 01 00 00 00 00 00 00 00 00 00   020xyz..........
195 |   3280: 00 00 00 00 00 00 00 00 00 00 c3 b0 96 7e fb 4e   .............~.N
196 |   3296: c5 4c 31 13 05 06 1f 32 07 dd f2 2a a5 7e b2 4d   .L1....2...*.~.M
197 |   3312: 82 61 62 63 30 31 39 78 79 7a 01 00 00 00 00 00   .abc019xyz......
198 |   3328: 00 00 00 00 00 00 00 00 00 00 00 00 00 c3 a3 d6   ................
199 |   3344: e9 f1 c2 fd f3 30 12 05 06 1f 30 07 8f 8f f5 c4   .....0....0.....
200 |   3360: 35 b6 7f 8d 61 62 63 30 31 38 00 00 00 00 00 00   5...abc018......
201 |   3376: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 43   ...............C
202 |   3392: b2 13 1f 9d 56 8a 47 21 b1 05 06 1f 2e 07 7f 46   ....V.G!.......F
203 |   3408: 91 03 3f 97 fb f7 61 62 63 30 00 00 00 00 00 00   ..?...abc0......
204 |   3440: c3 bb d8 96 86 c2 e8 2b 2e 10 05 06 1f 2c 07 6d   .......+.....,.m
205 |   3456: 85 7b ce d0 32 d2 54 61 62 63 30 00 00 00 00 00   ....2.Tabc0.....
206 |   3488: 43 a1 eb 44 14 dc 03 7b 2d 0f 05 06 1f 2a 07 d9   C..D....-....*..
207 |   3504: ab ec bf 34 51 70 f3 61 62 63 30 31 35 78 79 7a   ...4Qp.abc015xyz
208 |   3520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c3   ................
209 |   3536: b6 3d f4 46 b1 6a af 2c 0e 05 06 1f 28 07 36 75   .=.F.j.,....(.6u
210 |   3552: e9 a2 bd 05 04 ea 61 62 63 30 31 34 78 79 7a 00   ......abc014xyz.
211 |   3568: 00 00 00 00 00 00 00 00 00 00 00 00 00 c3 ab 23   ...............#
212 |   3584: a7 6a 34 ca f8 2b 0d 05 06 1f 26 07 48 45 ab e0   .j4..+....&.HE..
213 |   3600: 8c 7c ff 0c 61 62 63 30 31 33 78 79 7a 00 00 00   .|..abc013xyz...
214 |   3616: 00 00 00 00 0d d0 00 00 00 00 43 b8 d3 93 f4 92   ..........C.....
215 |   3632: 5b 7a 2a 0c 05 06 1f 24 07 be 6d 1e db 61 5d 80   [z*....$..m..a].
216 |   3648: 9f 61 62 63 30 31 32 78 79 7a 00 00 00 00 00 00   .abc012xyz......
217 |   3664: 00 00 00 00 00 00 43 b5 a1 a4 af 7b c6 60 29 0b   ......C......`).
218 |   3680: 05 06 1f 22 07 6e a2 a3 64 68 d4 a6 bd 61 62 63   .....n..dh...abc
219 |   3696: 30 31 31 78 79 7a 00 00 00 00 00 00 00 00 00 00   011xyz..........
220 |   3712: 00 c3 c4 1e ff 0f fc e6 ff 28 0a 05 06 1f 20 07   .........(.... .
221 |   3728: 50 f9 4a bb a5 7a 1e ca 61 62 63 30 31 30 78 79   P.J..z..abc010xy
222 |   3744: 7a 00 00 00 00 00 00 00 00 00 00 c3 a7 90 ed d9   z...............
223 |   3760: 5c 2c d5 27 09 05 06 1f 1e 07 90 8e 1d d9 1c 3a   .,.'...........:
224 |   3776: e8 c1 61 62 63 30 30 39 78 79 7a 00 00 00 00 00   ..abc009xyz.....
225 |   3792: 00 00 00 00 43 a7 97 87 cf b0 ff 79 26 08 05 06   ....C......y&...
226 |   3808: 1f 1c 07 86 65 f6 7c 50 7a 2c 76 61 62 63 30 30   ....e.|Pz,vabc00
227 |   3824: 38 78 79 7a 00 00 00 00 00 00 00 00 c3 b0 e3 4c   8xyz...........L
228 |   3840: 4f d3 41 b5 25 07 05 06 1f 1a 07 8b 20 e5 68 11   O.A.%....... .h.
229 |   3856: 13 55 87 61 62 63 30 30 37 78 79 7a 00 00 00 00   .U.abc007xyz....
230 |   3872: 00 00 00 c3 b6 a3 74 f1 9c 33 f8 24 06 05 06 1f   ......t..3.$....
231 |   3888: 18 07 97 3c bc 34 49 94 54 ab 61 62 63 30 30 36   ...<.4I.T.abc006
232 |   3904: 78 79 7a 00 00 00 00 00 00 c3 88 00 c2 ca 4c 4d   xyz...........LM
233 |   3920: d3 23 05 05 06 1f 16 07 59 37 11 10 e9 e5 3d d5   .#......Y7....=.
234 |   3936: 61 62 63 30 30 35 78 79 7a 00 00 00 00 00 c3 c0   abc005xyz.......
235 |   3952: 15 12 67 ed 4b 79 22 04 05 06 1f 14 07 93 39 01   ..g.Ky........9.
236 |   3968: 7f b8 c7 99 58 61 62 63 30 30 34 78 79 7a 00 00   ....Xabc004xyz..
237 |   3984: 09 c0 43 bf e0 e7 6d 70 fd 61 21 03 05 06 1f 12   ..C...mp.a!.....
238 |   4000: 07 b6 df 8d 8b 27 08 22 5a 61 62 63 30 30 33 78   .....'..Zabc003x
239 |   4016: 79 7a 00 00 00 c3 c7 ea 0f dc dd 32 22 20 02 05   yz.........2. ..
240 |   4032: 06 1f 10 07 2f a6 da 71 df 66 b3 b5 61 62 63 30   ..../..q.f..abc0
241 |   4048: 30 32 78 79 7a 00 00 c3 ce d9 8d e9 ec 20 45 1f   02xyz........ E.
242 |   4064: 01 05 06 1f 0e 07 5a 47 53 20 3b 48 8f c0 61 62   ......ZGS ;H..ab
243 |   4080: 63 30 30 31 78 79 7a 00 c3 c9 e6 81 f8 d9 24 04   c001xyz.......$.
244 | page 3 offset 8192
245 |      0: 0a 00 00 00 14 0e fd 00 0f f3 0f e6 0f d9 0f cc   ................
246 |     16: 0f bf 0f b2 0f a5 0f 98 0f 8b 0f 7e 0f 71 0f 64   ...........~.q.d
247 |     32: 0f 57 0f 4a 0f 3d 0f 30 0f 24 00 00 00 00 00 00   .W.J.=.0.$......
248 |   3824: 00 00 00 00 00 00 00 00 00 00 00 00 00 0c 03 06   ................
249 |   3840: 01 7f 46 91 03 3f 97 fb f7 11 0c 03 06 01 6e a2   ..F..?........n.
250 |   3856: a3 64 68 d4 a6 bd 0b 0c 03 06 01 6d 85 7b ce d0   .dh........m....
251 |   3872: 32 d2 54 10 0b 03 06 09 5a 47 53 20 3b 48 8f c0   2.T.....ZGS ;H..
252 |   3888: 0c 03 06 01 59 37 11 10 e9 e5 3d d5 05 0c 03 06   ....Y7....=.....
253 |   3904: 01 50 f9 4a bb a5 7a 1e ca 0a 0c 03 06 01 48 45   .P.J..z.......HE
254 |   3920: ab e0 8c 7c ff 0c 0d 0c 03 06 01 36 75 e9 a2 bd   ...|.......6u...
255 |   3936: 05 04 ea 0e 0c 03 06 01 2f a6 da 71 df 66 b3 b5   ......../..q.f..
256 |   3952: 02 0c 03 06 01 15 f4 c9 23 af e2 b3 b6 14 0c 03   ........#.......
257 |   3968: 06 01 dd f2 2a a5 7e b2 4d 82 13 0c 03 06 01 d9   ....*.~.M.......
258 |   3984: ab ec bf 34 51 70 f3 0f 0c 03 06 01 be 6d 1e db   ...4Qp.......m..
259 |   4000: 61 5d 80 9f 0c 0c 03 06 01 b6 df 8d 8b 27 08 22   a]...........'..
260 |   4016: 5a 03 0c 03 06 01 97 3c bc 34 49 94 54 ab 06 0c   Z......<.4I.T...
261 |   4032: 03 06 01 93 39 01 7f b8 c7 99 58 04 0c 03 06 01   ....9.....X.....
262 |   4048: 90 8e 1d d9 1c 3a e8 c1 09 0c 03 06 01 8f 8f f5   .....:..........
263 |   4064: c4 35 b6 7f 8d 12 0c 03 06 01 8b 20 e5 68 11 13   .5......... .h..
264 |   4080: 55 87 07 0c 03 06 01 86 65 f6 7c 50 7a 2b 06 08   U.......e.|Pz+..
265 | page 4 offset 12288
266 |      0: 0a 00 00 00 14 0f 62 00 0f 7a 0f a1 0f c9 0f d9   ......b..z......
267 |     16: 0f 81 0f d1 0f f1 0f f9 0f e1 0f 89 0e 6a 0f c1   .............j..
268 |     32: 0f 91 0f 99 0f b9 0f 72 0f 62 0f e9 0f b1 0f a9   .......r.b......
269 |   3936: 00 00 07 04 01 01 01 11 0e 9e 07 04 01 01 01 0b   ................
270 |   3952: 31 16 07 04 01 01 01 10 37 36 06 04 09 01 01 ab   1.......76......
271 |   3968: 58 07 04 01 01 01 05 1c 28 07 04 01 01 01 0a 10   X.......(.......
272 |   3984: cf 07 04 01 01 01 0d b2 e3 07 04 01 01 01 0e d3   ................
273 |   4000: f2 07 04 01 01 01 02 41 ad 07 04 01 01 01 14 3e   .......A.......>
274 |   4016: 22 07 04 01 01 01 13 27 45 07 04 01 01 01 0f ad   .......'E.......
275 |   4032: dd 07 04 01 01 01 0c 2e a1 07 04 01 01 01 03 df   ................
276 |   4048: e1 07 04 01 01 01 06 59 a7 07 04 01 01 01 04 27   .......Y.......'
277 |   4064: bd 07 04 01 01 01 09 d0 e0 07 04 01 01 01 12 39   ...............9
278 |   4080: 4f 07 04 01 01 01 07 c4 11 06 04 00 00 00 00 00   O...............
279 | end crash-7b75760a4c5f15.db
280 }]} {}
282 do_test 5.1 {
283   set R [sqlite3_recover_init db main test.db2]
284   catch { $R run }
285   list [catch { $R finish } msg] $msg
286 } {0 {}}
288 #-------------------------------------------------------------------------
290 reset_db
291 do_test 6.0 {
292   sqlite3 db {}
293   db deserialize [decode_hexdb {
294 | size 8192 pagesize 4096 filename abc.db
295 | page 1 offset 0
296 |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
297 |     16: 10 00 01 01 00 40 20 20 00 00 00 02 00 00 00 02   .....@  ........
298 |     32: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 04   ................
299 |     48: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00   ................
300 |     80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02   ................
301 |     96: 00 2e 6e b8 0d 00 00 00 01 0f dc 00 0f dc 00 00   ..n.............
302 |   4048: 00 00 00 00 00 00 00 00 00 00 00 00 22 01 06 17   ................
303 |   4064: 11 11 01 31 74 61 62 6c 65 74 31 74 31 02 43 52   ...1tablet1t1.CR
304 |   4080: 45 41 54 45 20 54 41 42 4c 45 20 74 31 28 78 29   EATE TABLE t1(x)
305 | page 2 offset 4096
306 |      0: 0d 00 00 00 01 0f e2 00 0f e2 00 00 00 00 00 00   ................
307 |   4064: 00 00 1c 01 02 41 61 62 63 64 65 66 67 68 69 6a   .....Aabcdefghij
308 |   4080: 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a   klmnopqrstuvwxyz
309 | end abc.db
310 }]} {}
311 do_test 6.1 {
312   set R [sqlite3_recover_init db main test.db2]
313   catch { $R run }
314   list [catch { $R finish } msg] $msg
315 } {0 {}}
317 reset_db
318 breakpoint
319 do_test 6.2 {
320   sqlite3 db {}
321   db deserialize [decode_hexdb {
322 | size 8192 pagesize 4096 filename abc.db
323 | page 1 offset 0
324 |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
325 |     16: 10 00 01 01 00 40 20 20 00 00 00 02 00 00 00 02   .....@  ........
326 |     32: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 04   ................
327 |     48: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00   ................
328 |     80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02   ................
329 |     96: 00 2e 6e b8 0d 00 00 00 01 0f dc 00 0f dc 00 00   ..n.............
330 |   4048: 00 00 00 00 00 00 00 00 00 00 00 00 22 01 06 17   ................
331 |   4064: 11 11 01 31 74 61 62 6c 65 74 31 74 31 02 43 52   ...1tablet1t1.CR
332 |   4080: 45 41 54 45 20 54 41 42 4c 45 20 74 31 28 78 29   EATE TABLE t1(x)
333 | page 2 offset 4096
334 |      0: 0d 00 00 00 01 0f e2 00 0f e2 00 00 00 00 00 00   ................
335 |   4064: 00 00 1c 01 02 8F FF FF FF 7E 65 66 67 68 69 6a   .....Aabcdefghij
336 |   4080: 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a   klmnopqrstuvwxyz
337 | end abc.db
338 }]} {}
339 do_test 6.3 {
340   set R [sqlite3_recover_init db main test.db2]
341   catch { $R run }
342   list [catch { $R finish } msg] $msg
343 } {0 {}}
345 reset_db
346 breakpoint
347 do_test 7.0 {
348   sqlite3 db {}
349   db deserialize [decode_hexdb {
350 | size 4108 pagesize 4096 filename x1.db
351 | page 1 offset 0
352 |      0: 02 01 00 00 00 00 14 15 40 00 00 00 00 00 00 00   ........@.......
353 |     16: 33 3a 6d 65 6d 6f 72 79 3a 02 02 02 02 02 02 02   3:memory:.......
354 |     32: 02 02 02 02 02 02 12 02 02 02 63 6f 6c 6f 72 20   ..........color 
355 |     48: 73 70 61 63 00 f3 a0 81 a1 00 00 a0 02 02 02 02   spac............
356 |     64: 69 95 73 6f 36 00 ff 0d 00 97 8c 90 3f 0a 70 02   i.so6.......?.p.
357 |     80: 02 02 02 02 02 02 02 02 02 02 02 02 02 01 00 00   ................
358 |     96: 06 02 02 02 02 5f 02 02 02 2c 02 02 02 02 02 02   ....._...,......
359 |    112: 02 02 02 02 02 02 02 02 02 12 02 02 02 63 6f 6c   .............col
360 |    128: 6f 72 20 73 70 61 63 00 f3 a0 81 a1 00 00 a0 02   or spac.........
361 |    144: 02 02 02 69 95 73 6f 36 00 ff 0d 00 97 8c 90 3f   ...i.so6.......?
362 |    160: 0a 70 02 02 02 02 02 02 02 02 02 02 02 02 02 02   .p..............
363 |    176: 01 00 00 06 02 02 02 02 5f 02 02 02 2c 02 02 00   ........_...,...
364 |    192: 00 01 00 01 00 00 00 01 00 02 fe 00 00 03 00 01   ................
365 |    208: 00 00 00 01 c5 04 00 00 00 01 00 01 00 00 00 01   ................
366 |    224: 00 fa 02 00 00 00 03 00 01 00 00 00 81 00 04 00   ................
367 |    240: 00 00 01 00 01 00 00 00 01 00 02 00 fe 00 03 00   ................
368 |    256: 01 00 00 00 01 00 04 00 00 00 01 00 01 00 00 00   ................
369 |    272: 01 00 02 00 00 00 03 00 01 00 00 00 01 00 04 00   ................
370 |    288: 00 00 01 00 01 00 00 00 01 00 02 00 00 00 03 00   ................
371 |    304: 01 00 00 00 01 00 04 00 00 00 01 00 01 00 00 00   ................
372 |    320: 01 00 02 00 00 00 03 00 01 00 00 00 40 00 84 00   ............@...
373 |    336: 84 00 84 00 01 00 00 00 09 00 06 00 f5 00 01 00   ................
374 |    352: 08 01 03 00 03 00 62 00 62 00 23 00 01 00 62 00   ......b.b.#...b.
375 |    368: 04 00 1e 00 62 00 62 00 62 00 01 00 00 00 0a 00   ....b.b.b.......
376 |    384: 01 00 03 00 01 00 03 00 04 00 02 00 01 00 01 00   ................
377 |    400: 08 00 01 00 31 c6 00 03 00 0c 00 12 00 18 00 02   ....1...........
378 |    416: 00 05 00 08 00 02 00 06 00 08 00 02 00 07 00 08   ................
379 |    432: 00 02 00 01 00 01 00 08 00 01 00 0c 00 03 00 16   ................
380 |    448: 00 1c 00 22 00 01 00 03 00 05 00 06 00 07 00 02   ................
381 |    464: 00 05 00 09 00 02 00 06 00 09 00 02 00 07 00 09   ................
382 |    480: 00 00 00 00 01 00 05 00 00 00 01 00 01 00 00 00   ................
383 |    496: 01 00 02 00 00 00 03 00 01 00 00 00 01 00 04 00   ................
384 |    512: 00 00 01 00 01 00 00 00 01 00 02 00 00 00 03 00   ................
385 |    528: 01 00 00 00 01 00 04 00 00 00 01 00 01 00 00 00   ................
386 |    544: 01 00 02 00 00 f6 03 00 00 02 00 00 01 00 04 00   ................
387 |    560: 00 00 01 00 01 00 00 00 01 00 02 00 00 00 03 00   ................
388 |    576: 01 00 00 00 01 00 04 00 00 00 01 00 01 00 00 00   ................
389 |    592: 01 00 02 00 00 00 03 00 01 00 00 00 01 00 04 00   ................
390 |    608: 00 00 01 00 01 00 00 00 01 00 02 00 00 00 03 00   ................
391 |    624: 01 00 00 00 01 00 04 00 00 00 01 00 01 00 00 00   ................
392 |    640: 01 3d 02 00 00 00 03 00 06 00 00 00 01 00 01 00   .=..............
393 |    656: 00 00 01 00 01 00 00 00 01 00 02 00 00 00 03 00   ................
394 |    672: 01 00 00 00 01 00 04 00 00 00 01 00 01 00 00 00   ................
395 |    688: 01 00 02 00 00 00 55 52 4c 52 65 71 75 65 73 74   ......URLRequest
396 |    704: 43 6f 6e 00 00 00 01 01 0e d4 00 04 00 00 00 01   Con.............
397 |    720: 0e f8 00 04 00 00 00 01 0f 1c 00 04 00 00 00 01   ................
398 |    736: 0f 00 00 01 00 00 00 01 0f 86 00 01 00 00 00 01   ................
399 |    752: 0f 84 00 01 00 00 00 01 00 00 01 0f c0 00 01 00   ................
400 |    768: 00 00 01 0f e8 00 d6 0f 00 01 6f 00 02 0f d6 00   ..........o.....
401 |    784: 02 34 03 03 03 00 01 00 00 00 01 00 05 00 00 00   .4..............
402 |    800: 01 00 01 00 00 00 01 00 02 00 00 00 03 00 01 00   ................
403 |    816: 00 00 01 00 04 00 00 00 01 00 01 00 00 00 01 00   ................
404 |    832: 02 00 00 00 03 00 01 00 10 00 01 00 04 00 00 00   ................
405 |    848: 01 00 01 00 00 00 01 00 02 00 00 00 03 00 00 02   ................
406 |    864: 00 00 01 40 04 00 00 03 01 00 01 00 00 00 01 00   ...@............
407 |    880: 02 00 00 00 03 00 01 00 00 00 00 00 01 0e f8 00   ................
408 |    896: 04 77 4f 46 32 73 40 23 70 00 00 00 70 00 1f 00   .wOF2s@#p...p...
409 |    912: 00 00 d8 00 00 00 ff ff 00 00 00 00 43 00 00 00   ............C...
410 |    928: 00 00 ff ff ff ff ff 00 00 a8 00 00 0c 00 00 00   ................
411 |   1024: 00 00 00 00 00 00 00 00 00 00 10 22 00 22 0f 00   ................
412 |   1040: 00 00 00 00 00 00 10 22 00 00 70 00 1f 00 00 0f   ..........p.....
413 |   1056: d8 00 00 00 00 00 00 00 00 00 03 00 00 00 00 00   ................
414 |   1072: 00 01 00 00 00 3f 23 70 00 00 00 01 0f 1c 00 04   .....?#p........
415 |   1088: 00 00 00 01 0f 40 00 01 00 00 00 01 0f 86 00 01   .....@..........
416 |   1104: 00 00 00 01 0f 84 00 01 00 00 00 01 00 00 01 0f   ................
417 |   1120: c0 00 01 00 00 00 01 0f e8 00 01 0f d6 00 6f 00   ..............o.
418 |   1136: 02 0f d6 00 03 02 31 03 2b 03 2a f2 00 0f d4 00   ......1.+.*.....
419 |   1152: 01 00 08 00 01 00 04 03 2b 00 02 02 32 00 01 0f   ........+...2...
420 |   1168: c8 01 15 00 02 20 c8 00 02 12 ad 02 00 24 06 c0   ..... .......$..
421 |   1184: 00 00 00 03 00 00 01 24 00 2a 06 e4 00 00 00 03   .......$.*......
422 |   1200: 00 00 01 25 00 38 07 0e 00 00 00 03 00 00 01 26   ...%.8.........&
423 |   1216: 00 34 07 46 00 00 00 03 00 00 01 27 00 1c 07 7a   .4.F.......'...z
424 |   1232: 00 00 00 03 00 00 01 28 00 2a 07 96 00 00 00 03   .......(.*......
425 |   1248: 00 e5 01 29 00 34 07 c0 00 00 00 03 00 00 01 2a   ...).4.........*
426 |   1264: 67 34 07 f4 00 00 00 03 00 00 01 2b 00 22 08 28   g4.........+...(
427 |   1280: 00 00 00 00 01 00 01 00 00 00 01 00 02 00 00 00   ................
428 |   1296: 03 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00   ................
429 |   1312: 01 00 00 00 01 00 02 00 00 00 03 00 00 02 00 00   ................
430 |   1328: 01 00 04 00 00 00 01 00 01 00 00 00 01 00 02 00   ................
431 |   1344: 00 00 03 00 01 00 00 00 01 00 04 00 00 00 01 00   ................
432 |   1360: 01 00 00 00 01 00 02 00 00 00 03 00 01 00 00 21   ...............!
433 |   1376: 04 00 01 00 00 00 00 00 01 00 00 00 01 00 02 00   ................
434 |   1392: 00 00 03 00 01 00 00 00 01 00 04 00 00 00 01 00   ................
435 |   1408: 01 00 00 00 01 00 02 00 00 00 03 00 01 00 00 00   ................
436 |   1424: 01 00 05 00 00 00 01 00 01 00 00 01 00 02 02 02   ................
437 |   1440: 12 02 02 02 63 6f 6c 6f 72 20 73 70 61 63 00 f3   ....color spac..
438 |   1456: a0 81 a1 00 00 a0 02 02 02 02 69 95 73 6f 36 00   ..........i.so6.
439 |   1472: ff 0d 00 97 8c 90 3f 0a 70 02 02 02 02 02 02 02   ......?.p.......
440 |   1488: 02 02 02 02 02 02 02 01 00 00 06 02 02 02 02 5f   ..............._
441 |   1504: 02 02 02 2c 02 02 00 00 01 00 01 00 00 00 01 00   ...,............
442 |   1520: 02 fe 00 00 03 00 01 00 00 00 01 c5 04 00 00 00   ................
443 |   1536: 01 00 01 00 00 00 01 00 02 00 00 00 03 00 01 00   ................
444 |   1552: 00 00 81 00 04 00 00 00 01 00 01 00 00 00 01 00   ................
445 |   1568: 02 00 fe 00 03 00 01 00 00 00 01 00 04 00 00 00   ................
446 |   1584: 01 00 01 00 00 00 01 00 02 00 00 00 03 00 01 00   ................
447 |   1600: 00 00 01 00 04 00 00 00 01 00 01 00 00 00 01 00   ................
448 |   1616: 02 00 00 00 03 00 01 00 00 00 01 00 04 00 00 00   ................
449 |   1632: 01 00 01 00 00 00 01 00 02 00 00 00 03 00 01 00   ................
450 |   1648: 00 00 40 00 84 00 84 00 84 00 01 00 00 00 09 00   ..@.............
451 |   1664: 06 00 f5 00 01 00 08 01 03 15 15 15 15 15 15 15   ................
452 |   1680: 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15   ................
453 |   1696: 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15   ................
454 |   1712: 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15   ................
455 |   1728: 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15   ................
456 |   1744: 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15   ................
457 |   1760: 15 15 15 15 15 15 15 15 15 15 15 00 03 00 62 00   ..............b.
458 |   1776: 62 00 23 00 01 00 62 00 04 00 1e 00 62 00 62 00   b.#...b.....b.b.
459 |   1792: 62 00 01 00 00 00 0a 00 01 00 03 00 01 00 03 00   b...............
460 |   1808: 04 00 02 00 01 00 01 00 08 00 01 00 31 c6 00 03   ............1...
461 |   1824: 00 0c 00 12 00 18 00 02 00 05 00 08 00 02 00 06   ................
462 |   1840: 00 08 00 02 00 07 00 08 00 02 00 01 00 01 00 08   ................
463 |   1856: 00 01 00 0c 00 03 00 16 00 1c 00 22 00 01 00 03   ................
464 |   1872: 00 05 00 06 00 07 00 02 00 05 00 09 00 02 00 06   ................
465 |   1888: 00 09 00 02 00 07 00 09 00 00 00 00 01 00 05 00   ................
466 |   1904: 00 00 01 00 01 00 00 00 01 00 02 00 00 00 03 00   ................
467 |   1920: 01 00 00 00 01 00 04 00 00 00 01 00 01 00 00 00   ................
468 |   1936: 01 00 02 00 00 00 03 00 01 00 00 00 01 00 04 00   ................
469 |   1952: 00 00 01 0f d6 00 02 34 03 03 03 00 01 00 00 00   .......4........
470 |   1968: 01 00 05 00 00 00 01 00 01 00 00 00 01 00 02 00   ................
471 |   1984: 00 00 03 00 01 00 00 00 01 00 04 00 00 00 01 00   ................
472 |   2000: 01 00 00 00 01 00 02 fc 42 dc 19 5c 74 23 18 cd   ........B...t#..
473 |   2016: b3 a5 a8 7a 90 40 1d 66 12 5d e5 4f 85 00 68 f4   ...z.@.f.].O..h.
474 |   2032: 05 98 86 25 24 dd bc c2 f6 f6 4e a3 e2 61 d2 c6   ...%$.....N..a..
475 |   2048: aa c1 56 50 d4 80 82 35 f1 e2 59 41 50 a6 da 51   ..VP...5..YAP..Q
476 |   2064: d4 62 9c 19 94 58 aa 31 30 8a 22 c2 5f 33 2b c9   .b...X.10..._3+.
477 |   2080: b6 e6 b4 11 4e 51 82 c4 d8 b6 d8 b4 06 04 fb 68   ....NQ.........h
478 |   2096: f4 d2 6f e7 cb 8a a8 82 d5 74 00 00 00 00 00 00   ..o......t......
479 |   2368: 00 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00   ................
480 |   2432: 00 00 00 00 00 03 00 01 00 10 00 01 00 04 00 00   ................
481 |   2448: 00 01 00 01 00 00 00 01 00 02 00 00 00 03 00 00   ................
482 |   2464: 02 00 00 01 40 04 00 00 03 01 00 01 00 00 00 01   ....@...........
483 |   2480: 00 02 00 00 00 03 00 01 00 00 00 00 00 01 0e f8   ................
484 |   2496: 00 04 77 4f 46 32 73 40 23 70 00 00 00 70 00 1f   ..wOF2s@#p...p..
485 |   2512: 00 00 00 d8 00 00 00 ff ff 00 00 00 00 43 00 00   .............C..
486 |   2528: 00 00 00 ff ff ff ff ff 00 00 a8 00 00 0c 00 00   ................
487 |   2624: 00 00 00 00 00 00 00 00 00 00 00 10 22 00 22 0f   ................
488 |   2640: 00 00 00 00 00 00 00 10 22 00 00 70 00 1f 00 00   ...........p....
489 |   2656: 0f d8 00 00 00 00 00 00 00 00 00 03 00 00 00 00   ................
490 |   2672: 00 00 01 00 00 00 3f 23 70 00 00 00 01 0f 1c 00   ......?#p.......
491 |   2688: 04 00 00 00 01 0f 40 00 01 00 00 00 01 0f 86 00   ......@.........
492 |   2704: 01 00 00 00 01 0f 84 00 01 00 00 00 01 00 00 01   ................
493 |   2720: 0f c0 00 01 00 00 00 01 0f e8 00 01 0f d6 00 6f   ...............o
494 |   2736: 00 02 0f d6 00 03 02 31 03 2b 03 2a f2 00 0f d4   .......1.+.*....
495 |   2752: 00 01 00 08 00 01 00 04 03 2b 00 02 02 32 00 01   .........+...2..
496 |   2768: 0f c8 01 15 00 02 20 c8 00 02 12 ad 02 00 24 06   ...... .......$.
497 |   2784: c0 00 00 5a 03 00 00 01 24 00 2a 06 e4 00 00 00   ...Z....$.*.....
498 |   2800: 03 00 00 01 25 00 38 07 0e 00 00 00 03 00 00 01   ....%.8.........
499 |   2816: 26 00 34 07 46 00 00 00 03 00 00 01 27 00 1c 07   &.4.F.......'...
500 |   2832: 7a 00 00 00 03 00 00 01 28 00 2a 07 96 00 00 00   z.......(.*.....
501 |   2848: 03 00 e5 01 29 00 34 07 c0 00 00 00 03 00 00 01   ....).4.........
502 |   2864: 2a 67 34 07 f4 00 00 00 03 00 00 01 2b 00 22 08   *g4.........+...
503 |   2880: 28 00 00 00 00 01 00 01 00 00 00 01 00 02 00 00   (...............
504 |   2896: 00 03 00 01 00 00 00 01 00 00 00 01 00 00 00 01   ................
505 |   2912: 00 01 00 00 00 01 00 02 00 00 00 03 00 00 02 00   ................
506 |   2928: 00 01 00 04 00 00 00 01 00 01 00 00 00 00 00 00   ................
507 |   2992: 00 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00   .H..............
508 |   3504: 00 00 00 00 00 00 00 00 00 00 00 97 00 00 00 00   ................
509 |   3904: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09   ................
510 |   3920: 03 fe 00 00 01 36 00 3c 0a 38 00 00 00 03 00 00   .....6.<.8......
511 |   3936: 01 37 00 20 0a 74 00 00 00 fb ff ff 00 38 00 2a   .7. .t.......8.*
512 |   3952: 0a 94 00 00 00 03 00 00 01 39 4f 54 54 4f 00 0e   .........9OTTO..
513 |   3968: 00 80 00 03 00 60 43 46 46 20 e3 ae 89 2a 00 00   .....`CFF ...*..
514 |   3984: 02 b0 00 00 02 76 42 50 4f 53 00 15 00 0a 00 00   .....vBPOS......
515 |   4000: 05 28 00 00 00 0c 54 53 55 42 c9 70 c3 06 00 00   .(....TSUB.p....
516 |   4016: 05 34 1f 00 40 00 48 00 00 00 00 00 00 00 00 00   .4..@.H.........
517 |   4064: 00 00 00 00 00 08 00 01 00 01 00 01 00 01 00 06   ................
518 |   4080: 00 02 00 08 00 01 00 01 00 01 00 01 00 00 00 00   ................
519 | end x1.db
520 }]} {}
521 do_test 7.1 {
522   set R [sqlite3_recover_init db main test.db2]
523   catch { $R run }
524   list [catch { $R finish } msg] $msg
525 } {1 {file is not a database}}
527 reset_db
528 breakpoint
529 do_test 8.0 {
530   sqlite3 db {}
531   db deserialize [decode_hexdb {
532 | size 8192 pagesize 4096 filename db.sqlite
533 | page 1 offset 0
534 |      0: ac ae b3 76 74 65 20 66 6f 72 6d 61 74 20 33 00   ...vte format 3.
535 |     16: 10 00 01 01 00 40 20 20 00 00 00 01 00 00 00 02   .....@  ........
536 |     32: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 04   ................
537 |     48: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00   ................
538 |     80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01   ................
539 |     96: 00 2e 76 8a 0d ff ff ff 1e 0f cb 00 0f cb 00 00   ..v.............
540 |   4032: 00 00 00 00 00 00 00 00 00 00 00 33 01 06 17 19   ...........3....
541 |   4048: 19 01 43 74 61 62 6c 65 54 61 62 6c 65 30 54 61   ..CtableTable0Ta
542 |   4064: 62 6c 65 30 02 43 52 45 41 54 45 20 54 41 42 4c   ble0.CREATE TABL
543 |   4080: 45 20 54 61 62 6c 65 30 20 28 43 6f 6c 30 20 29   E Table0 (Col0 )
544 | page 2 offset 4096
545 |      0: 0d 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00   ................
546 | end db.sqlite
547 }]} {}
549 do_test 8.1 {
550   set R [sqlite3_recover_init db main test.db2]
551   catch { $R run }
552   list [catch { $R finish } msg] $msg
553 } {0 {}}
555 finish_test