aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2018-11-06 19:26:04 +0000
committerdrh <drh@noemail.net>2018-11-06 19:26:04 +0000
commit0f0d3ddf71fdb1d231a66b3e05fe991b6df97be2 (patch)
tree5563c866e6c381ba1fe6b20311e9a51ee7c5a59b
parentaef15e74c87b28f2a913fec58272b049916a01a8 (diff)
downloadsqlite-0f0d3ddf71fdb1d231a66b3e05fe991b6df97be2.tar.gz
sqlite-0f0d3ddf71fdb1d231a66b3e05fe991b6df97be2.zip
Enable DEFENSIVE mode by default for tests. This requires lots of case of
turning DEFENSIVE off in order to dodgy things to the database for testing purposes. No all of those cases are yet handled, so "make test" does not run to completion. FossilOrigin-Name: a1d6c6712c3304fd736077432c8c180692cf7d79be7f3a073510b6dab0eb951f
-rw-r--r--ext/fts5/test/fts5corrupt.test4
-rw-r--r--ext/fts5/test/fts5corrupt2.test2
-rw-r--r--ext/fts5/test/fts5corrupt3.test9
-rw-r--r--ext/fts5/test/fts5integrity.test1
-rw-r--r--ext/fts5/test/fts5rebuild.test2
-rw-r--r--ext/fts5/test/fts5rowid.test2
-rw-r--r--ext/fts5/test/fts5version.test4
-rw-r--r--ext/fts5/test/fts5vocab.test2
-rw-r--r--ext/rtree/rtree8.test4
-rw-r--r--ext/rtree/rtreeA.test3
-rw-r--r--ext/rtree/rtreecheck.test4
-rw-r--r--manifest74
-rw-r--r--manifest.uuid2
-rw-r--r--src/delete.c3
-rw-r--r--src/vacuum.c3
-rw-r--r--test/corrupt2.test2
-rw-r--r--test/fts3auto.test2
-rw-r--r--test/fts3corrupt.test1
-rw-r--r--test/fts3corrupt2.test1
-rw-r--r--test/fts3corrupt3.test1
-rw-r--r--test/fts3corrupt4.test5
-rw-r--r--test/fts3cov.test3
-rw-r--r--test/fts3d.test2
-rw-r--r--test/fts3defer.test8
-rw-r--r--test/fts3defer2.test6
-rw-r--r--test/fts3matchinfo.test6
-rw-r--r--test/fts3misc.test1
-rw-r--r--test/fts3query.test2
-rw-r--r--test/fts3snippet.test2
-rw-r--r--test/fts4check.test8
-rw-r--r--test/fts4growth.test1
-rw-r--r--test/fts4merge.test2
-rw-r--r--test/fts4opt.test2
-rw-r--r--test/tester.tcl2
34 files changed, 128 insertions, 48 deletions
diff --git a/ext/fts5/test/fts5corrupt.test b/ext/fts5/test/fts5corrupt.test
index 1462912c6..5f13513ec 100644
--- a/ext/fts5/test/fts5corrupt.test
+++ b/ext/fts5/test/fts5corrupt.test
@@ -41,6 +41,7 @@ db_save
do_execsql_test 1.2 { INSERT INTO t1(t1) VALUES('integrity-check') }
set segid [lindex [fts5_level_segids t1] 0]
+sqlite3_db_config db DEFENSIVE 0
do_test 1.3 {
execsql {
DELETE FROM t1_data WHERE rowid = fts5_rowid('segment', $segid, 4);
@@ -50,6 +51,7 @@ do_test 1.3 {
do_test 1.4 {
db_restore_and_reopen
+ sqlite3_db_config db DEFENSIVE 0
execsql {
UPDATE t1_data set block = X'00000000' || substr(block, 5) WHERE
rowid = fts5_rowid('segment', $segid, 4);
@@ -89,7 +91,7 @@ do_execsql_test 3.0 {
do_execsql_test 3.1 {
SELECT * FROM t3 WHERE t3 MATCH 'o'
} {{one o} {three o} {five o}}
-
+sqlite3_db_config db DEFENSIVE 0
do_catchsql_test 3.1 {
DELETE FROM t3_content WHERE rowid = 3;
SELECT * FROM t3 WHERE t3 MATCH 'o';
diff --git a/ext/fts5/test/fts5corrupt2.test b/ext/fts5/test/fts5corrupt2.test
index 74721e539..a815320b7 100644
--- a/ext/fts5/test/fts5corrupt2.test
+++ b/ext/fts5/test/fts5corrupt2.test
@@ -99,6 +99,7 @@ foreach {tno stmt} {
set lrowid [db one {SELECT max(rowid) FROM t1_data WHERE (rowid & $mask)=0}]
set nbyte [db one {SELECT length(block) FROM t1_data WHERE rowid=$lrowid}]
set all [db eval {SELECT rowid FROM t1}]
+sqlite3_db_config db DEFENSIVE 0
for {set i [expr $nbyte-2]} {$i>=0} {incr i -1} {
do_execsql_test 2.$i.1 {
BEGIN;
@@ -248,6 +249,7 @@ foreach {tn hdr} {
#--------------------------------------------------------------------
reset_db
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 6.1 {
CREATE VIRTUAL TABLE x5 USING fts5(tt);
INSERT INTO x5 VALUES('a');
diff --git a/ext/fts5/test/fts5corrupt3.test b/ext/fts5/test/fts5corrupt3.test
index 72e9ab17c..ec823b320 100644
--- a/ext/fts5/test/fts5corrupt3.test
+++ b/ext/fts5/test/fts5corrupt3.test
@@ -51,6 +51,7 @@ do_test 1.1 {
set {} {}
} {}
+sqlite3_db_config db DEFENSIVE 0
for {set i 0} {$i < $L} {incr i} {
do_test 1.2.$i {
catchsql {
@@ -86,6 +87,7 @@ do_execsql_test 2.2 {
#
reset_db
do_test 3.0 { create_t1 } {}
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 3.1 {
SELECT count(*) FROM t1_data;
@@ -158,6 +160,7 @@ do_3_test 3.10
# Test that segments that end unexpectedly are identified as corruption.
#
reset_db
+sqlite3_db_config db DEFENSIVE 0
do_test 4.0 {
execsql {
CREATE VIRTUAL TABLE t1 USING fts5(x);
@@ -182,6 +185,7 @@ for {set i 1} {1} {incr i} {
db close
sqlite3 db test.db
+ sqlite3_db_config db DEFENSIVE 0
db eval {
BEGIN;
@@ -257,6 +261,7 @@ foreach rowid [db eval {SELECT rowid FROM x1_data WHERE rowid>100}] {
#------------------------------------------------------------------------
#
reset_db
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 6.1.0 {
CREATE VIRTUAL TABLE t1 USING fts5(a);
INSERT INTO t1 VALUES('bbbbb ccccc');
@@ -273,6 +278,7 @@ do_catchsql_test 6.1.2 {
#-------
reset_db
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 6.2.0 {
CREATE VIRTUAL TABLE t1 USING fts5(a);
INSERT INTO t1(t1, rank) VALUES('pgsz', 32);
@@ -288,6 +294,7 @@ do_catchsql_test 6.2.2 {
#-------
reset_db
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 6.3.0 {
CREATE VIRTUAL TABLE t1 USING fts5(a);
INSERT INTO t1 VALUES('abc abcdef abcdefghi');
@@ -362,6 +369,7 @@ do_test 7.0 {
}
} {}
+sqlite3_db_config db DEFENSIVE 0
do_test 7.1 {
foreach i [db eval { SELECT rowid FROM t5_data WHERE rowid>100 }] {
db eval BEGIN
@@ -383,6 +391,7 @@ do_execsql_test 8.1 {
INSERT INTO t1 VALUES('one', 'two');
}
+sqlite3_db_config db DEFENSIVE 0
do_test 9.1.1 {
set blob "12345678" ;# cookie
append blob "0105" ;# 1 level, total of 5 segments
diff --git a/ext/fts5/test/fts5integrity.test b/ext/fts5/test/fts5integrity.test
index a38b16461..25c727730 100644
--- a/ext/fts5/test/fts5integrity.test
+++ b/ext/fts5/test/fts5integrity.test
@@ -71,6 +71,7 @@ do_execsql_test 4.1 {
INSERT INTO aa(aa) VALUES('integrity-check');
}
+sqlite3_db_config db DEFENSIVE 0
do_catchsql_test 4.2 {
BEGIN;
UPDATE aa_docsize SET sz = X'44' WHERE rowid = 3;
diff --git a/ext/fts5/test/fts5rebuild.test b/ext/fts5/test/fts5rebuild.test
index 01918310f..eb0327999 100644
--- a/ext/fts5/test/fts5rebuild.test
+++ b/ext/fts5/test/fts5rebuild.test
@@ -39,9 +39,11 @@ do_execsql_test 1.4 {
INSERT INTO f1(f1) VALUES('integrity-check');
} {}
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 1.5 {
DELETE FROM f1_data;
} {}
+sqlite3_db_config db DEFENSIVE 1
do_catchsql_test 1.6 {
INSERT INTO f1(f1) VALUES('integrity-check');
diff --git a/ext/fts5/test/fts5rowid.test b/ext/fts5/test/fts5rowid.test
index e7fd1bc2c..79064e55a 100644
--- a/ext/fts5/test/fts5rowid.test
+++ b/ext/fts5/test/fts5rowid.test
@@ -70,10 +70,12 @@ set res [db one {SELECT count(*) FROM x1_data}]
do_execsql_test 2.3 {
SELECT count(fts5_decode(rowid, block)) FROM x1_data;
} $res
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 2.4 {
UPDATE x1_data SET block = X'';
SELECT count(fts5_decode(rowid, block)) FROM x1_data;
} $res
+sqlite3_db_config db DEFENSIVE 1
do_execsql_test 2.5 {
INSERT INTO x1(x1, rank) VALUES('pgsz', 1024);
diff --git a/ext/fts5/test/fts5version.test b/ext/fts5/test/fts5version.test
index 58cd3488b..60ec81c03 100644
--- a/ext/fts5/test/fts5version.test
+++ b/ext/fts5/test/fts5version.test
@@ -36,9 +36,10 @@ do_execsql_test 1.3 {
SELECT rowid FROM t1 WHERE t1 MATCH 'a';
} {1}
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 1.4 {
UPDATE t1_config set v=5 WHERE k='version';
-}
+}
do_test 1.5 {
db close
@@ -53,6 +54,7 @@ do_test 1.6 {
} {1 {invalid fts5 file format (found 5, expected 4) - run 'rebuild'}}
do_test 1.7 {
+ sqlite3_db_config db DEFENSIVE 0
execsql { DELETE FROM t1_config WHERE k='version' }
db close
sqlite3 db test.db
diff --git a/ext/fts5/test/fts5vocab.test b/ext/fts5/test/fts5vocab.test
index 8c4031608..d3c8b760d 100644
--- a/ext/fts5/test/fts5vocab.test
+++ b/ext/fts5/test/fts5vocab.test
@@ -420,6 +420,7 @@ if {[detail_is_none]} { set resc [row_to_col $resr] }
do_execsql_test 8.1.1 { SELECT * FROM x1_r; } $resr
do_execsql_test 8.1.2 { SELECT * FROM x1_c } $resc
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 8.2 {
PRAGMA writable_schema = 1;
UPDATE sqlite_master
@@ -481,4 +482,3 @@ do_test 9.6 {
finish_test
-
diff --git a/ext/rtree/rtree8.test b/ext/rtree/rtree8.test
index 68b68c45f..66e0de0d0 100644
--- a/ext/rtree/rtree8.test
+++ b/ext/rtree/rtree8.test
@@ -101,7 +101,9 @@ do_test rtree8-1.3.5 {
#
populate_t1 50
do_execsql_test rtree8-2.1.1 { SELECT max(nodeno) FROM t1_node } {5}
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test rtree8-2.1.2 { DELETE FROM t1_node } {}
+sqlite3_db_config db DEFENSIVE 1
for {set i 1} {$i <= 50} {incr i} {
do_catchsql_test rtree8-2.1.3.$i {
SELECT * FROM t1 WHERE id = $i
@@ -121,9 +123,11 @@ do_execsql_test rtree8-2.1.6 {
populate_t1 50
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test rtree8-2.2.1 {
DELETE FROM t1_parent
} {}
+sqlite3_db_config db DEFENSIVE 1
do_catchsql_test rtree8-2.2.2 {
DELETE FROM t1 WHERE id=25
} {1 {database disk image is malformed}}
diff --git a/ext/rtree/rtreeA.test b/ext/rtree/rtreeA.test
index 190d7d753..8344863df 100644
--- a/ext/rtree/rtreeA.test
+++ b/ext/rtree/rtreeA.test
@@ -36,6 +36,7 @@ proc populate_t1 {} {
execsql { INSERT INTO t1 VALUES($i, $i, $x2, $i, $y2) }
}
execsql COMMIT
+ sqlite3_db_config db DEFENSIVE 0
}
proc truncate_node {nodeno nTrunc} {
@@ -246,6 +247,7 @@ do_execsql_test rtreeA-6.2 {
create_t1
populate_t1
sqlite3 db test.db
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test rtreeA-7.100 {
UPDATE t1_node SET data=x'' WHERE rowid=1;
} {}
@@ -258,4 +260,3 @@ do_test rtreeA-7.120 {
finish_test
-
diff --git a/ext/rtree/rtreecheck.test b/ext/rtree/rtreecheck.test
index cbe8b513c..545f4478a 100644
--- a/ext/rtree/rtreecheck.test
+++ b/ext/rtree/rtreecheck.test
@@ -61,6 +61,7 @@ proc setup_simple_db {{module rtree}} {
INSERT INTO r1 VALUES(4, 8, 8, 8, 8); -- 21
INSERT INTO r1 VALUES(5, 9, 9, 9, 9); -- 27
"
+ sqlite3_db_config db DEFENSIVE 0
}
setup_simple_db
@@ -112,6 +113,7 @@ do_execsql_test 3.1 {
SELECT rtreecheck('r2')
} {ok}
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 3.2 {
BEGIN;
UPDATE r2_node SET data = X'123456';
@@ -140,6 +142,7 @@ do_execsql_test 5.0 {
)
INSERT INTO r3 SELECT i, i, i, i, i FROM x;
}
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 5.1 {
BEGIN;
UPDATE r3_node SET data = set_int32(data, 3, 5000);
@@ -155,4 +158,3 @@ do_execsql_test 5.2 {
} 0
finish_test
-
diff --git a/manifest b/manifest
index 7194b8640..8b6de01a8 100644
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Turn\son\sdefensive\smode\sfor\srunning\stest\sscripts.\s\sDoes\snot\syet\swork.
-D 2018-11-06T15:57:59.184
+C Enable\sDEFENSIVE\smode\sby\sdefault\sfor\stests.\s\sThis\srequires\slots\sof\scase\sof\nturning\sDEFENSIVE\soff\sin\sorder\sto\sdodgy\sthings\sto\sthe\sdatabase\sfor\stesting\npurposes.\s\sNo\sall\sof\sthose\scases\sare\syet\shandled,\sso\s"make\stest"\sdoes\snot\srun\nto\scompletion.
+D 2018-11-06T19:26:04.536
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F Makefile.in edbb6e20bb1decf65f6c64c9e61004a69bdf8afb39cdce5337c916b03dfcd1e3
@@ -153,9 +153,9 @@ F ext/fts5/test/fts5config.test 60094712debc59286c59aef0e6cf511c37d866802776a825
F ext/fts5/test/fts5conflict.test 655925678e630d3cdf145d18725a558971806416f453ac8410ca8c04d934238d
F ext/fts5/test/fts5connect.test b12a2a8b02af3c31c18abbc33aa8100d364de19a888a44457484d21dbccb18a7
F ext/fts5/test/fts5content.test 688d5ac7af194ebc67495daea76a69e3cd5480122c2320e72d41241b423b4116
-F ext/fts5/test/fts5corrupt.test 8957f0f7e57e0f8a102c5b6e1a7326d6a1966b28e1d99c5883822af1e6038e9e
-F ext/fts5/test/fts5corrupt2.test 6deaf9f9606b3c957529db9881622bb3a7829b19bb3cdf8f276f074d684ede56
-F ext/fts5/test/fts5corrupt3.test 1b489101212206da1f27d0d03b9667e54571cba72db7e70b195fdf39f867b48c
+F ext/fts5/test/fts5corrupt.test 77ae6f41a7eba10620efb921cf7dbe218b0ef232b04519deb43581cb17a57ebe
+F ext/fts5/test/fts5corrupt2.test 7453752ba12ce91690c469a6449d412561cc604b1dec994e16ab132952e7805f
+F ext/fts5/test/fts5corrupt3.test ff9aee403611461e2619d2217c0d7d101a9c0179277c13c8a89516d7cf0dda43
F ext/fts5/test/fts5delete.test cbf87e3b8867c4d5cfcaed975c7475fd3f99d072bce2075fcedf43d1f82af775
F ext/fts5/test/fts5detail.test 31b240dbf6d44ac3507e2f8b65f29fdc12465ffd531212378c7ce1066766f54e
F ext/fts5/test/fts5determin.test 1b77879b2ae818b5b71c859e534ee334dac088b7cf3ff3bf76a2c82b1c788d11
@@ -179,7 +179,7 @@ F ext/fts5/test/fts5first.test 707a591b1b7d893fcfcb2366cbfe56aefab5d9c7cfa58bef3
F ext/fts5/test/fts5full.test 49b565da02918c06e58f51f0b953b0302b96f155aa68baba24782b81570685e2
F ext/fts5/test/fts5fuzz1.test 238d8c45f3b81342aa384de3e581ff2fa330bf922a7b69e484bbc06051a1080e
F ext/fts5/test/fts5hash.test a4cf51acad99bfc43c16fb74f9d22495dc221ae0701fc5e908ca963a9b26a02b
-F ext/fts5/test/fts5integrity.test 6c4aad7f7380ec459a0c27ebbc0cb314fa67f3a3dad0cc820f612d33aa887166
+F ext/fts5/test/fts5integrity.test 4317561cd25eca7df16aa1f7d1a700ee958059fa639785f94aba0a84df9ab17b
F ext/fts5/test/fts5lastrowid.test be98fe3e03235296585b72daad7aed5717ba0062bae5e5c18dd6e04e194c6b28
F ext/fts5/test/fts5leftjoin.test c0b4cafb9661379e576dc4405c0891d8fcc2782680740513c4d1fc114b43d4ad
F ext/fts5/test/fts5matchinfo.test 79129ff6c9a2d86943b287a5a8caa7ee639f6dcf004d8975d15c279374e82e35
@@ -196,9 +196,9 @@ F ext/fts5/test/fts5porter2.test 0d251a673f02fa13ca7f011654873b3add20745f7402f10
F ext/fts5/test/fts5prefix.test a0fa67b06650f2deaa7bf27745899d94e0fb547ad9ecbd08bfad98c04912c056
F ext/fts5/test/fts5query.test ac363b17a442620bb0780e93c24f16a5f963dfe2f23dc85647b869efcfada728
F ext/fts5/test/fts5rank.test beb1adae7b076beea98277f140e713f9713f503866d3ff7286c9805b220dd4a2
-F ext/fts5/test/fts5rebuild.test 6d09fd54b1170a1e54fe17b808bbf17fba3154956cc2f065dd94bf1e3d254f63
+F ext/fts5/test/fts5rebuild.test aa277a56292e0dc936815917e4546792c591a142c7ffb3e73466817901522d7d
F ext/fts5/test/fts5restart.test 835ecc8f449e3919f72509ab58056d0cedca40d1fe04108ccf8ac4c2ba41f415
-F ext/fts5/test/fts5rowid.test 365997f5aebd619df3ae46c2a4bfc8edba361899bc4e52cebfba0dbcbf720522
+F ext/fts5/test/fts5rowid.test e2ffedefb04c8fb1e954ddb55839094608c4967379eb8a508fd2249e1ae079f9
F ext/fts5/test/fts5simple.test 313ad28ef38ebe25f0a1673dd18f2fac446e25feb15bbb0c223a65ea00594f72
F ext/fts5/test/fts5simple2.test 258a1b0c590409bfa5271e872c79572b319d2a56554d0585f68f146a0da603f0
F ext/fts5/test/fts5simple3.test d5c74a9d3ca71bd5dd5cacb7c55b86ea12cdddfc8b1910e3de2995206898380f
@@ -213,8 +213,8 @@ F ext/fts5/test/fts5unicode3.test c3caecbe8264629ffe653b43ca5790b9793eba4422f922
F ext/fts5/test/fts5unicode4.test 6463301d669f963c83988017aa354108be0b947d325aef58d3abddf27147b687
F ext/fts5/test/fts5unindexed.test 9021af86a0fb9fc616f7a69a996db0116e7936d0db63892db6bafabbec21af4d
F ext/fts5/test/fts5update.test 0737876e20e97a6a6abf45de19fc99315727bcee6a83fadcada1cc080b9aa8f0
-F ext/fts5/test/fts5version.test 99b81372630fbf359107c96580fa761e41cdfb1dafc9966e148629ca72efee71
-F ext/fts5/test/fts5vocab.test 2ba98bcef0fcab3e5fead8eaabd6c0efb7e57bfe707a5cfcc18572ca9b277360
+F ext/fts5/test/fts5version.test c8f2cc105f0abf0224965f93e584633dee3e06c91478bc67e468f7cfdf97fd6a
+F ext/fts5/test/fts5vocab.test 2de834ee6405130d3373817ced8fefbfee392b63d932e471740e09829f1e4510
F ext/fts5/test/fts5vocab2.test 2beeec974a305a1d79b91426622cc922c87065874437d22b400de7438979959e
F ext/fts5/tool/fts5speed.tcl b0056f91a55b2d1a3684ec05729de92b042e2f85
F ext/fts5/tool/fts5txt2db.tcl 526a9979c963f1c54fd50976a05a502e533a4c59
@@ -371,9 +371,9 @@ F ext/rtree/rtree4.test 304de65d484540111b896827e4261815e5dca4ce28eeecd58be648cd
F ext/rtree/rtree5.test 49c9041d713d54560b315c2c7ef7207ee287eba1b20f8266968a06f2e55d3142
F ext/rtree/rtree6.test 593e0d36510d5ac1d1fb39b018274ff17604fe8fdca8cf1f8e16559cea1477f4
F ext/rtree/rtree7.test c8fb2e555b128dd0f0bdb520c61380014f497f8a23c40f2e820acc9f9e4fdce5
-F ext/rtree/rtree8.test 924926d7c64ac59fcca0809de472d9dd73c612f54daae1cf992bdd7dac90305b
+F ext/rtree/rtree8.test 9428c213f1bd52d77ef8772ceca1989993134acae315354c043645b694be7854
F ext/rtree/rtree9.test c646f12c8c1c68ef015c6c043d86a0c42488e2e68ed1bb1b0771a7ca246cbabf
-F ext/rtree/rtreeA.test 20623ca337ca3bd7e008cc9fb49e44dbe97f1a80b238e10a12bb4afcd0da3776
+F ext/rtree/rtreeA.test ed2f1be9c06dde0b1ab93a95dd9e87eeaa02db2d30bcb4b9179b69ee3dc3319b
F ext/rtree/rtreeB.test 4cec297f8e5c588654bbf3c6ed0903f10612be8a2878055dd25faf8c71758bc9
F ext/rtree/rtreeC.test 128928549d22b65c381ab1366760d08703cd75e34f6a7a506ece38f9330b7282
F ext/rtree/rtreeD.test fe46aa7f012e137bd58294409b16c0d43976c3bb92c8f710481e577c4a1100dc
@@ -383,7 +383,7 @@ F ext/rtree/rtreeG.test 1b9ca6e3effb48f4161edaa463ddeaa8fca4b2526d084f9cbf5dbe4e
F ext/rtree/rtreeH.test aa08cc4fa8005b4c67446c7110205055b4d6da90e760e6f44b82dfa4cdf8d87a
F ext/rtree/rtree_perf.tcl 6c18c1f23cd48e0f948930c98dfdd37dfccb5195
F ext/rtree/rtree_util.tcl db734b4c5e75fed6acc56d9701f2235345acfdec750b5fc7b587936f5f6bceed
-F ext/rtree/rtreecheck.test 4d29103d1e16fcbf90135d1c637b833688492b063b2971dfb5dc6ba76555cfee
+F ext/rtree/rtreecheck.test d67d5b3e9e45bfa8cd90734e8e9302144ac415b8e9176c6f02d4f92892ee8a35
F ext/rtree/rtreeconnect.test 225ad3fcb483d36cbee423a25052a6bbae762c9576ae9268332360c68c170d3d
F ext/rtree/sqlite3rtree.h 9c5777af3d2921c7b4ae4954e8e5697502289d28
F ext/rtree/tkt3363.test 142ab96eded44a3615ec79fba98c7bde7d0f96de
@@ -455,7 +455,7 @@ F src/ctime.c 109e58d00f62e8e71ee1eb5944ac18b90171c928ab2e082e058056e1137cc20b
F src/date.c ebe1dc7c8a347117bb02570f1a931c62dd78f4a2b1b516f4837d45b7d6426957
F src/dbpage.c cfa87c8a9e3b5267a72faa3a592a497cd3810146c056c53a3472caf763c8556b
F src/dbstat.c 9ad3f2d9d19a915d414870b9405b19493eed41975f3ad0d13f70fdd0831853b4
-F src/delete.c d058ed72fc9b975dbf42fd8bdacbb530106440595847dc8aba6bb1d138ca2c5f
+F src/delete.c 36825ff2d6d4026f4cde42dd0642bfc8aeacc7596330d0159683d66cca715a1e
F src/expr.c 9aacc0b72348ba90010b672dcbbbe2fa56e1182043bc917a3a147b2bc57a5497
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
F src/fkey.c 972a4ba14296bef2303a0abbad1e3d82bc3c61f9e6ce4e8e9528bdee68748812
@@ -574,7 +574,7 @@ F src/update.c 1816d56c1bca1ba4e0ef98cac2f49be62858e9df1dc08844c7067eb41cc44274
F src/upsert.c 0dd81b40206841814d46942a7337786932475f085716042d0cb2fc7791bf8ca4
F src/utf.c 810fbfebe12359f10bc2a011520a6e10879ab2a163bcb26c74768eab82ea62a5
F src/util.c d9eb0a6c4aae1b00a7369eadd7ca0bbe946cb4c953b6751aa20d357c2f482157
-F src/vacuum.c 36e7d21a20c0bf6ef4ef7c399d192b5239410b7c4d3c1070fba4e30810d0b855
+F src/vacuum.c 836cadc922de866c849e23a75f93d344cdc143d388339305d09a3fed27e8798d
F src/vdbe.c 005e691ea4c7d51e6c1a69d9389aeb34700884c85f51681817ddea3fdc2fc39b
F src/vdbe.h 5081dcc497777efe5e9ebe7330d283a044a005e4bdda2e2e984f03bf89a0d907
F src/vdbeInt.h 8a52b8db3d20f9755a965d864b8653052c7ef1ccadceb2e057047cd421f6336e
@@ -727,7 +727,7 @@ F test/conflict2.test bb0b94cf7196c64a3cbd815c66d3ee98c2fecd9c
F test/conflict3.test a83db76a6c3503b2fa057c7bfb08c318d8a422202d8bc5b86226e078e5b49ff9
F test/contrib01.test 2a1cbc0f2f48955d7d073f725765da6fbceda6b4
F test/corrupt.test 141c39ea650c1365e85a49e402fa05cb9617fb97
-F test/corrupt2.test fdfdffab9bc37d6d173f56ffb82472206f11dd4a68caad9360ac4db2eddb34c8
+F test/corrupt2.test a7f95356d19a4e8bf9423622ad865cabf48ae49dad40eb7a17a0b39f1cdd6948
F test/corrupt3.test f95d7bf78109e0b84eb285a787ce91a3fd6a2dd7d0cb55882abff3bdc081a57e
F test/corrupt4.test 8d1d86b850fcc43e417450454f2044e52d55778a
F test/corrupt5.test 8ead52af76006f3286e9396cb41898018ccea107
@@ -895,21 +895,21 @@ F test/fts3am.test 218aa6ba0dfc50c7c16b2022aac5c6be593d08d8
F test/fts3an.test a49ccadc07a2f7d646ec1b81bc09da2d85a85b18
F test/fts3ao.test 266989148fec6d9f1bb6c5382f7aa3dcea0e9cd444576e28dd2b9287ac7dd220
F test/fts3atoken.test 4b4c16fdcfc972f2cdbba212375a060a86ccf5f1
-F test/fts3auto.test b981fea19b132b4e6878f50d7c1f369b28f68eb9
+F test/fts3auto.test 4eeb2a2e4f4533b94077beb8ef60c2fc82821b17a818f488f7a3decb7d328220
F test/fts3aux1.test 7a170e172afdbceb67f5baa05941fd4fbf56af42f61daa3d140f4b4bf4cb68f6
F test/fts3aux2.test 7ae2b2c13aefdf4169279a27a5f51780ce57f6ba
F test/fts3b.test c15c4a9d04e210d0be67e54ce6a87b927168fbf9c1e3faec8c1a732c366fd491
F test/fts3c.test fc723a9cf10b397fdfc2b32e73c53c8b1ec02958
F test/fts3comp1.test a0f5b16a2df44dd0b15751787130af2183167c0c
F test/fts3conf.test c84bbaec81281c1788aa545ac6e78a6bd6cde2bdbbce2da261690e3659f5a76b
-F test/fts3corrupt.test 2710b77983cc7789295ddbffea52c1d3b7506dbb
-F test/fts3corrupt2.test 6d96efae2f8a6af3eeaf283aba437e6d0e5447ba
-F test/fts3corrupt3.test 56e0ee83e90b57f5f3644cb7d1b36a067b7b8b19cdf0dedce45e5e13cf752f65
-F test/fts3corrupt4.test 98022cbacbd6ddc4708f210768f5684f041f50ce330c461f2631752492611d96
-F test/fts3cov.test 9c3681325b9a850bca8dd75cc29dde73e9a87972bb75204e97d826f13c7181f9
-F test/fts3d.test d3e9c8fb75135ada06bf3bab4f9666224965d708
-F test/fts3defer.test 0be4440b73a2e651fc1e472066686d6ada4b9963
-F test/fts3defer2.test c540f5f5c2840f70c68fd9b597df817ec7170468
+F test/fts3corrupt.test 46b9ddda7f6588fd5a5b1f4bb4fc0618dc45010e7dddb8a3a188baf3197177ae
+F test/fts3corrupt2.test bf55c3fa0b0dc8ea1c0fe5543623bd27714585da6a129038fd6999fe3b0d25f3
+F test/fts3corrupt3.test 0d5b69a0998b4adf868cc301fc78f3d0707745f1d984ce044c205cdb764b491f
+F test/fts3corrupt4.test a27259f4f25d60b4eca481d050b3cfee97eddb0d937d38f231408c5239066e11
+F test/fts3cov.test 95a6e1b3415dec831522419b351c323ac5b1df668eade1477a66161320a24e6d
+F test/fts3d.test 34ca835cfb87635a3b65aaf67c8798b632c4046cbb1813d31d89740b59d0263d
+F test/fts3defer.test 88873590700e0cd4e56e66f6024b96a37b12091a7afc892b092a980acd75f94a
+F test/fts3defer2.test 9f70672efde9648ce8cf20f360390e0cb225ca95b00fff06b829f168eeb9dc28
F test/fts3defer3.test dd53fc13223c6d8264a98244e9b19abd35ed71cd
F test/fts3drop.test 1b906e293d6773812587b3dc458cb9e8f3f0c297
F test/fts3e.test 1f6c6ac9cc8b772ca256e6b22aaeed50c9350851
@@ -923,37 +923,37 @@ F test/fts3fault2.test 6a17a11d8034b1c4eca9f3091649273d56c49ff049e2173df8060f943
F test/fts3first.test dbdedd20914c8d539aa3206c9b34a23775644641
F test/fts3join.test 949b4f5ae3ae9cc2423cb865d711e32476bdb205ab2be923fdf48246e4a44166
F test/fts3malloc.test b0e4c133b8d61d4f6d112d8110f8320e9e453ef6
-F test/fts3matchinfo.test ce864e0bd92429df8008f31cf557269ba172482a
-F test/fts3misc.test ba03a83b831555cfd18c6c862b24b70a53ce7497fe55077f7c4b7c9ce83c2eed
+F test/fts3matchinfo.test 1d012ac55861fa19c02d36ae7ad02d568bd110d924a8779469ef6d7e7856974f
+F test/fts3misc.test 0b20083efab36a42804bf8017a003f72f963c46163403dae7256493367d2f9d3
F test/fts3near.test 7e3354d46f155a822b59c0e957fd2a70c1d7e905
F test/fts3offsets.test b85fd382abdc78ebce721d8117bd552dfb75094c
F test/fts3prefix.test fa794eaab0bdae466494947b0b153d7844478ab2
F test/fts3prefix2.test e1f0a822ca661dced7f12ce392e14eaf65609dce
-F test/fts3query.test ca5dffabdfe9aef2ebcc89e02ce515898f86f8c30a365283831c53e0e08e5821
+F test/fts3query.test b911e997a4fdb188a921ebdeb7bdbce445b7382c934d76fae8b29aef457900c0
F test/fts3rank.test cd99bc83a3c923c8d52afd90d86979cf05fc41849f892faeac3988055ef37b99
F test/fts3rnd.test 1320d8826a845e38a96e769562bf83d7a92a15d0
F test/fts3shared.test 57e26a801f21027b7530da77db54286a6fe4997e
-F test/fts3snippet.test 01a4231816e03a0660ae53ba2404fe69012fe0db
+F test/fts3snippet.test 1758244263b92ec56a2447f7362906a5baf0ee5406d84b9669fb22655324012b
F test/fts3sort.test ed34c716a11cc2009a35210e84ad5f9c102362ca
F test/fts3tok1.test a663f4cac22a9505400bc22aacb818d7055240409c28729669ea7d4cc2120d15
F test/fts3tok_err.test 52273cd193b9036282f7bacb43da78c6be87418d
F test/fts3varint.test 752c08ed5d32c5d7dc211b056f4ed68a76b7e36e
F test/fts4aa.test 10aac8e9d62c7357590acfabe3fad01e9a9ce1cb
-F test/fts4check.test c3056eab9524232e4c9bdcd119912947e07bcc1c
+F test/fts4check.test 28e593f65e7fe788c929ea5ddd04db827c3fd74dd47af1d08aceee226d1e9e88
F test/fts4content.test 1518195a9f92b711d94419f76409a31cc78755854fb0abb1da2b74b9e0cf843e
F test/fts4docid.test e33c383cfbdff0284685604d256f347a18fdbf01
-F test/fts4growth.test e5390da74619cacc389711bac9349640b32c4f9a
+F test/fts4growth.test 289833c34ad45a5e6e6133b53b6a71647231fb89d36ddcb8d9c87211b6721d7f
F test/fts4growth2.test 13ad4e76451af6e6906c95cdc725d01b00044269
F test/fts4incr.test 4e353a0bd886ea984e56fce9e77724fc923b8d0d
F test/fts4langid.test 2168ba330af34f8a1c8832de0aab4c4b6fa195a16419c9c0c8aad59ceb6ff714
F test/fts4lastrowid.test 185835895948d5325c7710649824042373b2203149abe8024a9319d25234dfd7
-F test/fts4merge.test 10b55f410fade8691a455210b0b9302ef178a4f06fba0ad1941801caab82f5a9
+F test/fts4merge.test 970d20bb089985a075a8b39017a6cc3a7156fa8331db409cb70498c573352f90
F test/fts4merge2.test 5faa558d1b672f82b847d2a337465fa745e46891
F test/fts4merge3.test 8d9ccb4a3d41c4c617a149d6c4b13ad02de797d0
F test/fts4merge4.test d895b1057a7798b67e03455d0fa50e9ea836c47b
F test/fts4noti.test 5553d7bb2e20bf4a06b23e849352efc022ce6309
F test/fts4onepass.test d69ddc4ee3415e40b0c5d1d0408488a87614d4f63ba9c44f3e52db541d6b7cc7
-F test/fts4opt.test fd6a11684b965e1999564ae763797b7fb9e34c96
+F test/fts4opt.test f67e6a6da9f3290949c2ad07faca73caf6ba23c006afbfa37e8d6d1acd988c62
F test/fts4unicode.test ceca76422abc251818cb25dabe33d3c3970da5f7c90e1540f190824e6b3a7c95
F test/full.test 6b3c8fb43c6beab6b95438c1675374b95fab245d
F test/func.test 09dda479bcfc568f99f3070413e9672a8eeedc1be9c5d819bf55d4788c2583b7
@@ -1352,7 +1352,7 @@ F test/temptable.test d2c9b87a54147161bcd1822e30c1d1cd891e5b30
F test/temptable2.test d2940417496e2b9548e01d09990763fbe88c316504033256d51493e1f1a5ce6a
F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637
F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc
-F test/tester.tcl 9a4c02c89fec21b7fb2082143595ea64289289a23b30483733348bb17c1ae4a1
+F test/tester.tcl be183110f88b2b18eb1d1c2ee4ffbc355cebdd89fa5e9953e7d5182db8638991
F test/thread001.test b61a29dd87cf669f5f6ac96124a7c97d71b0c80d9012746072055877055cf9ef
F test/thread002.test e630504f8a06c00bf8bbe68528774dd96aeb2e58
F test/thread003.test ee4c9efc3b86a6a2767516a37bd64251272560a7
@@ -1776,7 +1776,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P d890c6582524677666e6f5b5817331dec332ade16b2f744cbb8a3c7dd9b63e21
-R e9f4d27ca7b2f873c7fcee04be6300fd
+P 1c1d24edbb732f2a2002a741c7a7afdd010b67e1b5e6d90ff36c6428897e7612
+R a090d326d91e2064f2a8ccd8efbcd9e3
U drh
-Z 9fe44fcd11ea00f63b017a2647f9f482
+Z c4bb3ba9c94194a36c5c09b3778b92b6
diff --git a/manifest.uuid b/manifest.uuid
index e9abd7bc8..5b096513f 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-1c1d24edbb732f2a2002a741c7a7afdd010b67e1b5e6d90ff36c6428897e7612 \ No newline at end of file
+a1d6c6712c3304fd736077432c8c180692cf7d79be7f3a073510b6dab0eb951f \ No newline at end of file
diff --git a/src/delete.c b/src/delete.c
index 9380a0915..7007de375 100644
--- a/src/delete.c
+++ b/src/delete.c
@@ -71,7 +71,8 @@ int sqlite3IsReadOnly(Parse *pParse, Table *pTab, int viewOk){
&& pParse->nested==0)
|| ( (pTab->tabFlags & TF_Shadow)!=0
&& (db->flags & SQLITE_Defensive)!=0
- && db->nVdbeExec==0)
+ && db->nVdbeExec==0
+ && db->pVtabCtx==0)
){
sqlite3ErrorMsg(pParse, "table %s may not be modified", pTab->zName);
return 1;
diff --git a/src/vacuum.c b/src/vacuum.c
index 04ad5e7a3..5fb048916 100644
--- a/src/vacuum.c
+++ b/src/vacuum.c
@@ -166,7 +166,8 @@ int sqlite3RunVacuum(char **pzErrMsg, sqlite3 *db, int iDb){
saved_mTrace = db->mTrace;
db->flags |= SQLITE_WriteSchema | SQLITE_IgnoreChecks;
db->mDbFlags |= DBFLAG_PreferBuiltin | DBFLAG_Vacuum;
- db->flags &= ~(SQLITE_ForeignKeys | SQLITE_ReverseOrder | SQLITE_CountRows);
+ db->flags &= ~(SQLITE_ForeignKeys | SQLITE_ReverseOrder
+ | SQLITE_Defensive | SQLITE_CountRows);
db->mTrace = 0;
zDbMain = db->aDb[iDb].zDbSName;
diff --git a/test/corrupt2.test b/test/corrupt2.test
index 9512d0f24..eee7ed322 100644
--- a/test/corrupt2.test
+++ b/test/corrupt2.test
@@ -133,6 +133,7 @@ do_test corrupt2-2.1 {
forcecopy test.db corrupt.db
sqlite3 db2 corrupt.db
+ sqlite3_db_config db2 DEFENSIVE 0
execsql "
$::presql
CREATE INDEX a1 ON abc(a);
@@ -265,6 +266,7 @@ proc corruption_test {args} {
forcedelete corrupt.db-journal
sqlite3 db corrupt.db
+ sqlite3_db_config db DEFENSIVE 0
db eval $::presql
eval $A(-tclprep)
db eval $A(-sqlprep)
diff --git a/test/fts3auto.test b/test/fts3auto.test
index 20640d29a..f2378ded3 100644
--- a/test/fts3auto.test
+++ b/test/fts3auto.test
@@ -134,11 +134,13 @@ proc fts3_make_deferrable {tbl token {nRow 0}} {
# fts3_zero_long_segments TABLE ?LIMIT?
#
proc fts3_zero_long_segments {tbl limit} {
+ sqlite3_db_config db DEFENSIVE 0
execsql "
UPDATE ${tbl}_segments
SET block = zeroblob(length(block))
WHERE length(block)>$limit
"
+ sqlite3_db_config db DEFENSIVE 1
return [db changes]
}
diff --git a/test/fts3corrupt.test b/test/fts3corrupt.test
index cb50e3e46..664b1393b 100644
--- a/test/fts3corrupt.test
+++ b/test/fts3corrupt.test
@@ -23,6 +23,7 @@ set ::testprefix fts3corrupt
# extends past the end of the node on which it resides is correctly identified
# as database corruption.
#
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 1.0 {
CREATE VIRTUAL TABLE t1 USING fts3;
INSERT INTO t1 VALUES('hello');
diff --git a/test/fts3corrupt2.test b/test/fts3corrupt2.test
index 78c76778f..40783facf 100644
--- a/test/fts3corrupt2.test
+++ b/test/fts3corrupt2.test
@@ -49,6 +49,7 @@ lappend data {*}{
"acvmldguld asdvz aqb aeomsyzyu aggylhprbdz asrfkwz auipybpsn agsnszzfb"
}
+sqlite3_db_config db DEFENSIVE 0
do_test fts3corrupt2-1.0 {
execsql BEGIN
execsql { CREATE VIRTUAL TABLE t2 USING FTS3(a, b); }
diff --git a/test/fts3corrupt3.test b/test/fts3corrupt3.test
index 6c846e9ba..eae13f222 100644
--- a/test/fts3corrupt3.test
+++ b/test/fts3corrupt3.test
@@ -33,6 +33,7 @@ do_execsql_test 1.0 {
do_execsql_test 1.1 {
SELECT quote(root) from t1_segdir;
} {X'00036F6E6509010200010200010200'}
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 1.2 {
UPDATE t1_segdir SET root = X'00036F6E650EFFFFFFFFFFFFFFFFFFFFFFFF0200';
}
diff --git a/test/fts3corrupt4.test b/test/fts3corrupt4.test
index 52c3d8caf..5e9e45813 100644
--- a/test/fts3corrupt4.test
+++ b/test/fts3corrupt4.test
@@ -40,6 +40,7 @@ do_execsql_test 1.1 {
SELECT quote(root) FROM ft_segdir;
} {X'0005616261636B03010200030266740302020003046E646F6E03030200'}
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 1.2 {
UPDATE ft_segdir SET root = blob(
'0005616261636B03010200 FFFFFFFF0702 66740302020003046E646F6E03030200'
@@ -83,6 +84,7 @@ do_execsql_test 2.2 {
} {X'00056162633130031F0200'}
db func blob blob
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 2.3.1 {
UPDATE ft_segments SET block =
blob('00056162633130031F0200 FFFFFFFF07FF55 66740302020003046E646F6E03030200')
@@ -133,6 +135,7 @@ do_execsql_test 3.1 {
} {X'0101056162633132040136030132030136'}
db func blob blob
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 3.2 {
UPDATE ft_segdir
SET root = blob('0101056162633132FFFFFFFF070236030132030136');
@@ -143,5 +146,3 @@ do_catchsql_test 3.1 {
} {1 {database disk image is malformed}}
finish_test
-
-
diff --git a/test/fts3cov.test b/test/fts3cov.test
index 817679d0a..735d50167 100644
--- a/test/fts3cov.test
+++ b/test/fts3cov.test
@@ -89,6 +89,7 @@ do_test fts3cov-2.1 {
} {03}
# Test the "missing entry" case:
+sqlite3_db_config db DEFENSIVE 0
do_test fts3cov-2.2 {
set root [db one {SELECT root FROM t1_segdir}]
read_fts3varint [string range $root 1 end] left_child
@@ -102,6 +103,7 @@ do_error_test fts3cov-2.3 {
do_test fts3cov-2.4 {
execsql { INSERT INTO t1_segments VALUES($left_child, NULL) }
} {}
+sqlite3_db_config db DEFENSIVE 1
do_error_test fts3cov-2.5 {
SELECT * FROM t1 WHERE t1 MATCH 'cloud'
} {SQL logic error}
@@ -405,6 +407,7 @@ do_execsql_test 15.1 {
# Test a corruption case.
#
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 16.1 {
CREATE VIRTUAL TABLE t16 USING fts4;
INSERT INTO t16 VALUES('theoretical work to examine the relationship');
diff --git a/test/fts3d.test b/test/fts3d.test
index 83af4d2a3..4ba548886 100644
--- a/test/fts3d.test
+++ b/test/fts3d.test
@@ -296,6 +296,7 @@ do_test fts3d-5.0 {
} {{Index already optimal} 1 0}
# Even if we move things around, still does nothing.
+sqlite3_db_config db DEFENSIVE 0
do_test fts3d-5.1 {
execsql {
UPDATE t1_segdir SET level = 2 WHERE level = 1 AND idx = 0;
@@ -303,6 +304,7 @@ do_test fts3d-5.1 {
SELECT level, idx FROM t1_segdir ORDER BY level, idx;
}
} {{Index already optimal} 2 0}
+sqlite3_db_config db DEFENSIVE 1
# ALTER TABLE RENAME should work regardless of the database encoding.
diff --git a/test/fts3defer.test b/test/fts3defer.test
index 532d4dfa6..fb54c48b3 100644
--- a/test/fts3defer.test
+++ b/test/fts3defer.test
@@ -59,12 +59,14 @@ set tests {
do_select_tests 1.2 $tests
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 1.3 {
SELECT count(*) FROM t1_segments WHERE length(block)>10000;
UPDATE t1_segments
SET block = zeroblob(length(block))
WHERE length(block)>10000;
} {1}
+sqlite3_db_config db DEFENSIVE 1
do_select_tests 1.4 $tests
@@ -225,7 +227,9 @@ foreach {tn setup} {
execsql { CREATE VIRTUAL TABLE t1 USING FTS4 }
foreach doc $data { execsql { INSERT INTO t1 VALUES($doc) } }
add_empty_records 1000
+ sqlite3_db_config db DEFENSIVE 0
execsql $zero_long_doclists
+ sqlite3_db_config db DEFENSIVE 1
}
4 {
set dmt_modes 0
@@ -233,14 +237,18 @@ foreach {tn setup} {
foreach doc $data { execsql { INSERT INTO t1 VALUES($doc) } }
add_empty_records 1000
execsql "INSERT INTO t1(t1) VALUES('optimize')"
+ sqlite3_db_config db DEFENSIVE 0
execsql $zero_long_doclists
+ sqlite3_db_config db DEFENSIVE 1
}
5 {
set dmt_modes 0
execsql { CREATE VIRTUAL TABLE t1 USING FTS4(matchinfo=fts3) }
foreach doc $data { execsql { INSERT INTO t1 VALUES($doc) } }
add_empty_records 1000
+ sqlite3_db_config db DEFENSIVE 0
execsql $zero_long_doclists
+ sqlite3_db_config db DEFENSIVE 1
}
} {
diff --git a/test/fts3defer2.test b/test/fts3defer2.test
index 275e0f0eb..b3f808dea 100644
--- a/test/fts3defer2.test
+++ b/test/fts3defer2.test
@@ -46,10 +46,12 @@ do_execsql_test 1.1.4 {
INSERT INTO t1 VALUES('');
INSERT INTO t1(t1) VALUES('optimize');
}
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 1.1.4 {
SELECT count(*) FROM t1_segments WHERE length(block)>10000;
UPDATE t1_segments SET block = zeroblob(length(block)) WHERE length(block)>10000;
} {2}
+sqlite3_db_config db DEFENSIVE 1
do_execsql_test 1.2.0 {
SELECT content FROM t1 WHERE t1 MATCH 'f (e a)';
@@ -98,7 +100,9 @@ foreach {tn sql} {
WHERE length(block)>10000;
}
} {
+ sqlite3_db_config db DEFENSIVE 0
execsql $sql
+ sqlite3_db_config db DEFENSIVE 1
do_execsql_test 2.2.$tn.1 {
SELECT mit(matchinfo(t2, 'pcxnal')) FROM t2 WHERE t2 MATCH 'a b';
@@ -152,7 +156,9 @@ foreach {tn sql} {
WHERE length(block)>10000;
}
} {
+ sqlite3_db_config db DEFENSIVE 0
execsql $sql
+ sqlite3_db_config db DEFENSIVE 1
do_execsql_test 2.4.$tn {
SELECT docid, mit(matchinfo(t3, 'pcxnal')) FROM t3 WHERE t3 MATCH '"a b c"';
} {1 {1 1 1 4 4 11 912 6} 3 {1 1 1 4 4 11 912 6}}
diff --git a/test/fts3matchinfo.test b/test/fts3matchinfo.test
index 8cbcd6904..416a53f62 100644
--- a/test/fts3matchinfo.test
+++ b/test/fts3matchinfo.test
@@ -278,11 +278,13 @@ do_matchinfo_test 4.3.6 t5 {t5 MATCH 'a OR b'} { s {1 2 1 1} }
do_execsql_test 4.4.0.1 { INSERT INTO t5(t5) VALUES('optimize') }
ifcapable fts4_deferred {
+ sqlite3_db_config db DEFENSIVE 0
do_execsql_test 4.4.0.2 {
UPDATE t5_segments
SET block = zeroblob(length(block))
WHERE length(block)>10000;
}
+ sqlite3_db_config db DEFENSIVE 1
}
do_matchinfo_test 4.4.2 t5 {t5 MATCH 'a b'} { s {2} }
@@ -339,10 +341,12 @@ do_execsql_test 6.1 {
SELECT offsets(t9) FROM t9 WHERE t9 MATCH 'to';
} {{0 0 20 2 0 0 27 2}}
+sqlite3_db_config db DEFENSIVE 0
do_catchsql_test 6.2 {
UPDATE t9_content SET c0content = 'this record is used to';
SELECT offsets(t9) FROM t9 WHERE t9 MATCH 'to';
} {1 {database disk image is malformed}}
+sqlite3_db_config db DEFENSIVE 1
#-------------------------------------------------------------------------
# Test the outcome of matchinfo() when used within a query that does not
@@ -392,6 +396,7 @@ do_execsql_test 8.3 {
} {{204 1 3 3 0} {204 1 3 3 0} {204 1 3 3 0}}
# Corruption related tests.
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 8.4.1.1 { UPDATE t11_stat SET value = X'0000'; }
do_catchsql_test 8.5.1.2 {
SELECT mit(matchinfo(t11, 'nxa')) FROM t11 WHERE t11 MATCH 'a*'
@@ -406,6 +411,7 @@ do_execsql_test 8.4.3.1 { UPDATE t11_stat SET value = NULL; }
do_catchsql_test 8.5.3.2 {
SELECT mit(matchinfo(t11, 'nxa')) FROM t11 WHERE t11 MATCH 'a*'
} {1 {database disk image is malformed}}
+sqlite3_db_config db DEFENSIVE 1
#-------------------------------------------------------------------------
do_execsql_test 8.1 {
diff --git a/test/fts3misc.test b/test/fts3misc.test
index 80204726c..60126dd6b 100644
--- a/test/fts3misc.test
+++ b/test/fts3misc.test
@@ -160,6 +160,7 @@ ifcapable fts4_deferred {
do_execsql_test 4.2 {
SELECT quote(value) from t4_stat where id=0
} {X'C03EC0B204C0A608'}
+ sqlite3_db_config db DEFENSIVE 0
do_execsql_test 4.3 {
UPDATE t4_stat SET value = X'C03EC0B204C0A60800' WHERE id=0;
}
diff --git a/test/fts3query.test b/test/fts3query.test
index bc25699e1..13072dd86 100644
--- a/test/fts3query.test
+++ b/test/fts3query.test
@@ -167,7 +167,9 @@ do_select_tests 5.3 -errorformat {
3 "SELECT snippet(content) FROM t2 WHERE t2 MATCH 'history'" snippet
4 "SELECT optimize(content) FROM t2 WHERE t2 MATCH 'history'" optimize
}
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 5.4.0 { UPDATE t2_content SET c0content = X'1234' }
+sqlite3_db_config db DEFENSIVE 1
do_select_tests 5.4 -errorformat {
illegal first argument to %s
} {
diff --git a/test/fts3snippet.test b/test/fts3snippet.test
index 887011cd1..ff66ec6fc 100644
--- a/test/fts3snippet.test
+++ b/test/fts3snippet.test
@@ -184,7 +184,9 @@ foreach {DO_MALLOC_TEST enc} {
[list 0 0 $off 10 1 0 $off 10] [list 0 0 $off 10]
# Test a corruption case:
+ sqlite3_db_config db DEFENSIVE 0
execsql { UPDATE ft_content SET c1b = 'hello world' WHERE c1b = $numbers }
+ sqlite3_db_config db DEFENSIVE 1
do_error_test $T.2.3 {
SELECT offsets(ft) FROM ft WHERE ft MATCH 'onehundred'
} {database disk image is malformed}
diff --git a/test/fts4check.test b/test/fts4check.test
index 1e2f6b234..49d1f00d8 100644
--- a/test/fts4check.test
+++ b/test/fts4check.test
@@ -66,7 +66,9 @@ foreach {tn disruption} {
);
}
} {
+ sqlite3_db_config db DEFENSIVE 0
do_execsql_test 1.2.1.$tn "BEGIN; $disruption"
+ sqlite3_db_config db DEFENSIVE 1
do_catchsql_test 1.2.2.$tn {
INSERT INTO t1 (t1) VALUES('integrity-check')
} {1 {database disk image is malformed}}
@@ -100,7 +102,9 @@ foreach {tn disruption} {
);
}
} {
+ sqlite3_db_config db DEFENSIVE 0
do_execsql_test 2.2.1.$tn "BEGIN; $disruption"
+ sqlite3_db_config db DEFENSIVE 1
do_catchsql_test 2.2.2.$tn {
INSERT INTO t2 (t2) VALUES('integrity-check')
} {1 {database disk image is malformed}}
@@ -145,7 +149,9 @@ foreach {tn disruption} {
)
}
} {
+ sqlite3_db_config db DEFENSIVE 0
do_execsql_test 3.2.1.$tn "BEGIN; $disruption"
+ sqlite3_db_config db DEFENSIVE 1
do_catchsql_test 3.2.2.$tn {
INSERT INTO t3 (t3) VALUES('integrity-check')
} {1 {database disk image is malformed}}
@@ -163,6 +169,7 @@ do_execsql_test 4.0 {
INSERT INTO t4(t4) VALUES('integrity-check');
}
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 4.1 {
PRAGMA writable_schema = 1;
UPDATE sqlite_master
@@ -197,6 +204,7 @@ do_execsql_test 5.1 {
INSERT INTO t5(t5) VALUES('integrity-check');
} {}
+sqlite3_db_config db DEFENSIVE 0
do_catchsql_test 5.2 {
INSERT INTO t5_content VALUES(5, 'his hardy mountain pony');
INSERT INTO t5(t5) VALUES('integrity-check');
diff --git a/test/fts4growth.test b/test/fts4growth.test
index 4dc221246..5cf877747 100644
--- a/test/fts4growth.test
+++ b/test/fts4growth.test
@@ -25,6 +25,7 @@ ifcapable !fts3 {
source $testdir/genesis.tcl
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 1.1 { CREATE VIRTUAL TABLE x1 USING fts3; }
do_test 1.2 {
diff --git a/test/fts4merge.test b/test/fts4merge.test
index 63272c41b..6ea992320 100644
--- a/test/fts4merge.test
+++ b/test/fts4merge.test
@@ -156,11 +156,13 @@ foreach mod {fts3 fts4} {
SELECT quote(value) FROM t4_stat WHERE rowid=1
} {X'0006'}
+ sqlite3_db_config db DEFENSIVE 0
do_execsql_test 4.4.2 {
DELETE FROM t4_stat WHERE rowid=1;
INSERT INTO t4(t4) VALUES('merge=1,12');
SELECT level, group_concat(idx, ' ') FROM t4_segdir GROUP BY level;
} "0 {0 1 2 3 4 5} 1 0"
+ sqlite3_db_config db DEFENSIVE 1
#-------------------------------------------------------------------------
diff --git a/test/fts4opt.test b/test/fts4opt.test
index 0d0ed9f4f..3910865d6 100644
--- a/test/fts4opt.test
+++ b/test/fts4opt.test
@@ -37,6 +37,7 @@ fts_kjv_genesis
# incremental optimize routine.
#
proc prepare_for_optimize {db tbl} {
+ sqlite3_db_config $db DEFENSIVE 0
$db eval [string map [list % $tbl] {
BEGIN;
CREATE TEMP TABLE tmp_segdir(
@@ -58,6 +59,7 @@ proc prepare_for_optimize {db tbl} {
COMMIT;
}]
+ sqlite3_db_config $db DEFENSIVE 1
}
do_test 1.1 {
diff --git a/test/tester.tcl b/test/tester.tcl
index 97217a822..f1847e83b 100644
--- a/test/tester.tcl
+++ b/test/tester.tcl
@@ -129,6 +129,7 @@ if {[info command sqlite_orig]==""} {
set ::dbhandle [lindex $args 0]
uplevel #0 $::G(perm:dbconfig)
}
+ sqlite3_db_config [lindex $args 0] DEFENSIVE 1
set res
} else {
# This command is not opening a new database connection. Pass the
@@ -136,7 +137,6 @@ if {[info command sqlite_orig]==""} {
#
uplevel 1 sqlite_orig $args
}
- sqlite3_db_config [lindex $args 0] DEFENSIVE 1
}
}