-C Remove\san\sover-zealous\sALWAYS()\smacro\sand\sadd\sa\stest\scase\sthat\sshows\sthat\nthe\sconditional\scan\ssometimes\sbe\sfalse.
-D 2020-01-03T14:34:04.183
+C Improve\sa\sspecific\scase\sof\searly\sdatabase\scorruption\sdectecion\sin\sthe\sb-tree\slayer.
+D 2020-01-03T15:51:23.987
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
F src/backup.c f70077d40c08b7787bfe934e4d1da8030cb0cc57d46b345fba2294b7d1be23ab
F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33
F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
-F src/btree.c f191aa4d99597a1ad77cb15a9473f1183f2a12a7f1650a7705eaac9085e493bb
+F src/btree.c 0eb5d02aac9a6f6029904060db1986550bc99b40c5f8d9374d9bbcca0543164d
F src/btree.h 6111552f19ed7a40f029cf4b33badc6fef9880314fffd80a945f0b7f43ab7471
F src/btreeInt.h 6794084fad08c9750b45145743c0e3e5c27c94dee89f26dd8df7073314934fd2
F src/build.c 67b1a8d3ac700747687dbdc49ded847a3c17fef450a8c919ac0399b44cbd4215
F test/corruptI.test a17bbf54fdde78d43cf3cc34b0057719fd4a173a3d824285b67dc5257c064c7b
F test/corruptJ.test 4d5ccc4bf959464229a836d60142831ef76a5aa4
F test/corruptK.test 5b4212fe346699831c5ad559a62c54e11c0611bdde1ea8423a091f9c01aa32af
-F test/corruptL.test a22a7bbf8da7603960f0bfcc62a68d1c3c41963786bd832ff804ba5e2458fb9c
+F test/corruptL.test 4f28fbef85a6f27489542bb915ab7938dcd68f896e8f62a7d23de02b32489e5d
F test/corruptM.test 7d574320e08c1b36caa3e47262061f186367d593a7e305d35f15289cc2c3e067
F test/cost.test 51f4fcaae6e78ad5a57096831259ed6c760e2ac6876836e91c00030fad385b34
F test/count.test cb2e0f934c6eb33670044520748d2ecccd46259c
F test/fts3corrupt.test ce7f7b5eaeee5f1804584d061b978d85e64abf2af9adaa7577589fac6f7eae01
F test/fts3corrupt2.test bf55c3fa0b0dc8ea1c0fe5543623bd27714585da6a129038fd6999fe3b0d25f3
F test/fts3corrupt3.test 0d5b69a0998b4adf868cc301fc78f3d0707745f1d984ce044c205cdb764b491f
-F test/fts3corrupt4.test 5ac8c0378dab68808f080d03d8525d2262879cb23db1bc5eb138e141a4f2010c
+F test/fts3corrupt4.test 50f8e119b688c8b8aa46c1543a022e0e1a931f5820c7da099b34e9acea7ece3b
F test/fts3corrupt5.test 0549f85ec4bd22e992f645f13c59b99d652f2f5e643dac75568bfd23a6db7ed5
F test/fts3cov.test 7eacdbefd756cfa4dc2241974e3db2834e9b372ca215880e00032222f32194cf
F test/fts3d.test 2bd8c97bcb9975f2334147173b4872505b6a41359a4f9068960a36afe07a679f
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 9d791116420f4e3f613775569e0a0cba2fc22da568b2fb2df920bcf9c9002938
-R 95579694e6c940cfce958a36249eabe6
-U drh
-Z 7a1e3b4d114838baf5b8097e8c4ad0d7
+P 536e9a9d1bd514056ecbc8172ed58f2656a86f791a15e526ae2e5f2c93687b6a
+R 5034281e9502ec9b8092694aa4b88875
+U dan
+Z 044fe5775f5fd5cc5d292b92cda36dc8
-536e9a9d1bd514056ecbc8172ed58f2656a86f791a15e526ae2e5f2c93687b6a
\ No newline at end of file
+ceacc28b035803342764f9b696c1e80edcd259b87ea4fb46f92963d6cb33de3e
\ No newline at end of file
nFree = data[hdr+7] + top; /* Init nFree to non-freeblock free space */
if( pc>0 ){
u32 next, size;
- if( pc<iCellFirst ){
+ if( pc<top ){
/* EVIDENCE-OF: R-55530-52930 In a well-formed b-tree page, there will
** always be at least one cell before the first freeblock.
*/
SELECT CAST((SELECT b FROM t1 WHERE 16=c) AS int) FROM t1 WHERE 16=c;
} {1 {database disk image is malformed}}
+#-------------------------------------------------------------------------
+reset_db
+do_test 13.0 {
+ sqlite3 db {}
+ db deserialize [decode_hexdb {
+| size 8192 pagesize 4096 filename crash-81dd2952aef34f.db
+| page 1 offset 0
+| 0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 SQLite format 3.
+| 16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 02 .....@ ........
+| 32: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 04 ................
+| 48: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 ................
+| 96: 00 00 00 00 0d 00 00 00 01 0f c4 00 0f c4 00 00 ................
+| 4032: 00 00 00 00 3a 11 06 17 11 11 01 61 74 61 62 6c ....:......atabl
+| 4048: 65 74 31 74 31 02 43 52 45 41 54 45 20 54 41 42 et1t1.CREATE TAB
+| 4064: 4c 45 20 74 31 28 61 20 49 4e 54 45 47 45 52 20 LE t1(a INTEGER
+| 4080: 50 52 49 4d 41 52 59 20 4b 45 59 2c 62 2c 63 29 PRIMARY KEY,b,c)
+| page 2 offset 4096
+| 0: 0d 07 70 00 02 0f eb 00 0f fa 00 00 00 00 00 00 ..p.............
+| 4064: 00 00 00 00 00 00 00 00 00 00 00 05 bf ff ff ff ................
+| 4080: ff ff ff ff ff 04 00 01 00 02 04 01 00 00 00 00 ................
+| end crash-81dd2952aef34f.db
+}]} {}
+
+do_catchsql_test 13.1 {
+ WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x-2019 FROM c WHERE x<2)
+ INSERT INTO t1(b,c) SELECT last_insert_rowid(), x FROM c;
+} {1 {database disk image is malformed}}
+
+
finish_test
PRAGMA writable_schema = 1;
WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT '4hE'+x FROM c WHERE x<72)
INSERT INTO t1(a) SELECT randomblob(2829) FROM c;
-} {0 {}}
+} {1 {database disk image is malformed}}
do_catchsql_test 24.2 {
UPDATE t1 SET b=quote((true) ) WHERE t1 MATCH 'h';
do_catchsql_test 24.3 {
WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT 3+x FROM c WHERE x<72)
INSERT INTO t1(a) SELECT randomblob(2829) FROM c;
-} {0 {}}
+} {1 {database disk image is malformed}}
do_catchsql_test 24.4 {
WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT null<<x FROM c WHERE x<72)
do_catchsql_test 24.5 {
WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT 3+x FROM c WHERE x<72)
INSERT INTO t1(a) SELECT randomblob(2829) FROM c;
-} {0 {}}
+} {1 {database disk image is malformed}}
do_catchsql_test 24.7 {
INSERT INTO t1(t1) SELECT x FROM t2;
-} {1 {database disk image is malformed}}
+} {0 {}}
#-------------------------------------------------------------------------
#-------------------------------------------------------------------------
PRAGMA writable_schema = 1;
WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x GLOB 2.16770 FROM x)
INSERT INTO t1(a) SELECT randomblob(3000) FROM t2 ;
-} {0 {}}
+} {1 {database disk image is malformed}}
do_catchsql_test 27.3 {
WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT 3+x FROM c WHERE x<2.653)
INSERT INTO t1(a) SELECT randomblob(-current_time) FROM c;
-} {0 {}}
+} {1 {database disk image is malformed}}
do_catchsql_test 27.4 {
UPDATE t1 SET b=quote((true) ) WHERE t1 MATCH 'h*h*';
} {0 {}}
do_catchsql_test 27.5 {
WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT 3+x FROM c WHERE x<2.653)
INSERT INTO t1(a) SELECT randomblob(-current_time) FROM c;
-} {0 {}}
+} {1 {database disk image is malformed}}
do_catchsql_test 27.5 {
INSERT INTO t1(t1) SELECT x FROM t2;
-} {0 {}}
+} {1 {database disk image is malformed}}
do_catchsql_test 27.6 {
INSERT INTO t1(t1) SELECT x FROM t2;
-} {0 {}}
+} {1 {database disk image is malformed}}
#-------------------------------------------------------------------------
reset_db
PRAGMA writable_schema = 1;
WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT 3+x FROM c WHERE x<72)
INSERT INTO t1(a) SELECT randomblob(2829) FROM c;
-} {0 {}}
+} {1 {database disk image is malformed}}
-do_catchsql_test 28.1 {
+do_catchsql_test 28.2 {
UPDATE t1 SET b=quote((true) ) WHERE t1 MATCH 'h';
} {0 {}}
-do_catchsql_test 28.1 {
+do_catchsql_test 28.3 {
WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT 3+x FROM c WHERE x<72)
INSERT INTO t1(a) SELECT randomblob(2829) FROM c;
-} {0 {}}
+} {1 {database disk image is malformed}}
-do_catchsql_test 28.1 {
+do_catchsql_test 28.4 {
WITH c(x) AS (VALUES(1) UNION ALL SELECT 3<<x FROM c WHERE x<72)
INSERT INTO t1(a) SELECT randomblob(2829) FROM c;
} {0 {}}
-do_catchsql_test 28.1 {
+do_catchsql_test 28.5 {
WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT 3+x FROM c WHERE x<72)
INSERT INTO t1(a) SELECT randomblob(2829) FROM c;
-} {0 {}}
+} {1 {database disk image is malformed}}
-do_catchsql_test 28.1 {
+do_catchsql_test 28.6 {
WITH c(x) AS (VALUES(1) UNION ALL SELECT 3<<x FROM c WHERE x<72)
INSERT INTO t1(a) SELECT randomblob(2829) FROM c;
} {0 {}}
-do_catchsql_test 28.1 {
+do_catchsql_test 28.7 {
WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x+3 FROM c WHERE x<72)
INSERT INTO t1(a) SELECT randomblob(2829) FROM c;
-} {0 {}}
+} {1 {database disk image is malformed}}
-do_catchsql_test 28.1 {
+do_catchsql_test 28.8 {
INSERT INTO t1(t1) SELECT x FROM t2;
} {0 {}}