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);
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);
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';
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;
#--------------------------------------------------------------------
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');
set {} {}
} {}
+sqlite3_db_config db DEFENSIVE 0
for {set i 0} {$i < $L} {incr i} {
do_test 1.2.$i {
catchsql {
#
reset_db
do_test 3.0 { create_t1 } {}
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 3.1 {
SELECT count(*) FROM t1_data;
# 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);
db close
sqlite3 db test.db
+ sqlite3_db_config db DEFENSIVE 0
db eval {
BEGIN;
#------------------------------------------------------------------------
#
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');
#-------
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);
#-------
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');
}
} {}
+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
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
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;
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');
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);
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
} {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
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
finish_test
-
#
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
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}}
execsql { INSERT INTO t1 VALUES($i, $i, $x2, $i, $y2) }
}
execsql COMMIT
+ sqlite3_db_config db DEFENSIVE 0
}
proc truncate_node {nodeno nTrunc} {
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;
} {}
finish_test
-
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
SELECT rtreecheck('r2')
} {ok}
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 3.2 {
BEGIN;
UPDATE r2_node SET data = X'123456';
)
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);
} 0
finish_test
-
-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
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
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
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
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
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
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
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
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
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
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
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
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
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
-1c1d24edbb732f2a2002a741c7a7afdd010b67e1b5e6d90ff36c6428897e7612
\ No newline at end of file
+a1d6c6712c3304fd736077432c8c180692cf7d79be7f3a073510b6dab0eb951f
\ No newline at end of file
&& 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;
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;
forcecopy test.db corrupt.db
sqlite3 db2 corrupt.db
+ sqlite3_db_config db2 DEFENSIVE 0
execsql "
$::presql
CREATE INDEX a1 ON abc(a);
forcedelete corrupt.db-journal
sqlite3 db corrupt.db
+ sqlite3_db_config db DEFENSIVE 0
db eval $::presql
eval $A(-tclprep)
db eval $A(-sqlprep)
# 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]
}
# 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');
"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); }
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';
}
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'
} {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')
} {X'0101056162633132040136030132030136'}
db func blob blob
+sqlite3_db_config db DEFENSIVE 0
do_execsql_test 3.2 {
UPDATE ft_segdir
SET root = blob('0101056162633132FFFFFFFF070236030132030136');
} {1 {database disk image is malformed}}
finish_test
-
-
} {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
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}
# 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');
} {{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;
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.
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
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
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
}
} {
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)';
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';
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}}
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} }
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
} {{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*'
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 {
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;
}
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
} {
[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}
);
}
} {
+ 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}}
);
}
} {
+ 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}}
)
}
} {
+ 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}}
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
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');
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 {
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
#-------------------------------------------------------------------------
# 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(
COMMIT;
}]
+ sqlite3_db_config $db DEFENSIVE 1
}
do_test 1.1 {
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
#
uplevel 1 sqlite_orig $args
}
- sqlite3_db_config [lindex $args 0] DEFENSIVE 1
}
}