From: dan Date: Sat, 30 Mar 2019 17:07:23 +0000 (+0000) Subject: Add an extra IO-error test to windowfault.test. X-Git-Tag: version-3.28.0~72 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0708054570e0cb484491cee24a2ff3a8d54fe4b1;p=thirdparty%2Fsqlite.git Add an extra IO-error test to windowfault.test. FossilOrigin-Name: 5b8c44cd39c529e8adbc51f67088409e963515b988868856120a59e6c7160210 --- diff --git a/manifest b/manifest index bdd76739fc..33e41e24f5 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Remove\sthe\sunused\sP5\sflag\sfrom\sthe\sOP_Rewind\sopcode. -D 2019-03-29T15:21:22.609 +C Add\san\sextra\sIO-error\stest\sto\swindowfault.test. +D 2019-03-30T17:07:23.564 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -1692,7 +1692,7 @@ F test/window8.tcl 97de3829e0e1aae2c3aaae41a55c54bc1b0751bbc80dfdd93020431b7a889 F test/window8.test 0dd7e2d32605bf59dc6163b924faeff5951419c1c17a9e506e5a38606e97ab7e F test/windowerr.tcl 678bb2c3ddcaaf605163bd9fe647454fa0097688cfd2fecc5dd9f3a5b45b13f2 F test/windowerr.test 7eb7439332d3855dd53c58dca8838f6990746f40fac7045c0153172083a9452b -F test/windowfault.test cb27a4d8c85982733b123af667921df3a96e23d3739b15d414de75054b334cbe +F test/windowfault.test 16e906a2c4110c88372ff4bd5de59ac7397ec2f025912eff8e5677eedd126898 F test/with1.test a07b5aad7f77acdf13e52e8814ea94606fcc72e9ea4c99baf293e9d7c63940be F test/with2.test e0030e2f0267a910d6c0e4f46f2dfe941c1cc0d4f659ba69b3597728e7e8f1ab F test/with3.test 8d26920c88283e0a473ceebd3451554922108ce7b2a6a1157c47eb0a7011212c @@ -1813,7 +1813,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 f5752517f590b37bfc0267650f5800320e22a8ecaba34aa6893281ce8d268026 -R 52c966134f5bf9130baedd9b89ea4a62 -U drh -Z b847805c39c91cec51745d9c89877e86 +P c2edbf3b8c643edcd5823eb907fd7531cf5be8a8b6a014fa1b123eb0ea3231cf +R 86d53f0a0cd55849b6bfbfc0814c8bf0 +U dan +Z 7c8bdcb225b3e1ae6999bd7e018164b5 diff --git a/manifest.uuid b/manifest.uuid index cce097bc88..f057f0ba06 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -c2edbf3b8c643edcd5823eb907fd7531cf5be8a8b6a014fa1b123eb0ea3231cf \ No newline at end of file +5b8c44cd39c529e8adbc51f67088409e963515b988868856120a59e6c7160210 \ No newline at end of file diff --git a/test/windowfault.test b/test/windowfault.test index 335bde19b5..6c2554ac3c 100644 --- a/test/windowfault.test +++ b/test/windowfault.test @@ -162,4 +162,65 @@ do_faultsim_test 8 -faults oom-t* -prep { faultsim_test_result {0 {1 2 5 6 9 10}} } +#------------------------------------------------------------------------- +# The following test causes a cursor in REQURESEEK state to be passed +# to sqlite3BtreeDelete(). An error is simulated within the seek operation +# to restore the cursors position. +# +reset_db +set big [string repeat x 900] +do_execsql_test 9.0 { + PRAGMA page_size = 512; + PRAGMA cache_size = 2; + CREATE TABLE t(x INTEGER PRIMARY KEY, y TEXT); + WITH s(i) AS ( + VALUES(1) UNION ALL SELECT i+1 FROM s WHERE i<1900 + ) + INSERT INTO t(y) SELECT $big FROM s; +} +db close + +testvfs tvfs -default 1 +tvfs script vfs_callback +tvfs filter xRead + +sqlite3 db test.db +proc vfs_callback {method file args} { + if {$file=="" && [info exists ::tmp_read_fail]} { + incr ::tmp_read_fail -1 + if {$::tmp_read_fail<=0} { + return "SQLITE_IOERR" + } + } + return "SQLITE_OK" +} + +set FAULTSIM(tmpread) [list \ + -injectstart tmpread_injectstart \ + -injectstop tmpread_injectstop \ + -injecterrlist {{1 {disk I/O error}}} \ +] +proc tmpread_injectstart {iFail} { + set ::tmp_read_fail $iFail +} +proc tmpread_injectstop {} { + set ret [expr $::tmp_read_fail<=0] + unset -nocomplain ::tmp_read_fail + return $ret +} + +do_faultsim_test 9 -end 25 -faults tmpread -body { + execsql { + SELECT sum(y) OVER win FROM t + WINDOW win AS ( + ORDER BY x ROWS BETWEEN UNBOUNDED PRECEDING AND 1800 FOLLOWING + ) + } +} -test { + faultsim_test_result {0 {}} +} + +catch {db close} +tvfs delete + finish_test