diff --git a/manifest b/manifest index 56e23c1277..2fe24961ad 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Prevent\sthe\sin-memory\sjournal\sread\scursor\sfrom\sentering\san\sinconsistent\sstate\nwhen\sit\sreads\sthe\slast\sfew\sbytes\sout\sof\sthe\sjournal\sfile.\s\sFix\sfor\nticket\s[7f7f8026eda38]. -D 2016-04-07T18:42:23.186 +C Add\stest\scases\sfor\sticket\s[7f7f8026eda387d544]. +D 2016-04-07T21:14:35.631 F Makefile.in eba680121821b8a60940a81454316f47a341487a F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 1f123a0757f6f04f0341accb46457e116817159a @@ -1011,7 +1011,7 @@ F test/savepoint2.test 9b8543940572a2f01a18298c3135ad0c9f4f67d7 F test/savepoint4.test c8f8159ade6d2acd9128be61e1230f1c1edc6cc0 F test/savepoint5.test 0735db177e0ebbaedc39812c8d065075d563c4fd F test/savepoint6.test f41279c5e137139fa5c21485773332c7adb98cd7 -F test/savepoint7.test db3db281486c925095f305aad09fe806e5188ff3 +F test/savepoint7.test cde525ea3075283eb950cdcdefe23ead4f700daa F test/savepointfault.test f044eac64b59f09746c7020ee261734de82bf9b2 F test/scanstatus.test 5253c219e331318a437f436268e0e82345700285 F test/schema.test 8f7999be894260f151adf15c2c7540f1c6d6a481 @@ -1482,7 +1482,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 153135bfb3b8f7c407ccf36571e2d4d5afe28ea3 -R 79f1b101d10963168c95e54e3a571e58 +P c4b9c611bdcd85f31d68aaf114ee34a9f27eba6d +R 761448207abe334cc70f1f29da291a77 U drh -Z fee1386714e022b25f3a73738d6ccce7 +Z 2b1e9b9a1cc02d13e96c99c5d4c59d63 diff --git a/manifest.uuid b/manifest.uuid index c077c241b6..a8908af92e 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -c4b9c611bdcd85f31d68aaf114ee34a9f27eba6d \ No newline at end of file +87aa9357fbe6749bae60e30af54ca16e48678802 \ No newline at end of file diff --git a/test/savepoint7.test b/test/savepoint7.test index d8a02f1f80..59c3cd6cdc 100644 --- a/test/savepoint7.test +++ b/test/savepoint7.test @@ -95,4 +95,38 @@ do_test savepoint7-2.2 { list $rc $msg [db eval {SELECT * FROM t2}] } {1 {abort due to ROLLBACK} {}} +# Ticket: https://www.sqlite.org/src/tktview/7f7f8026eda387d544b +# Segfault in the in-memory journal logic triggered by a tricky +# combination of SAVEPOINT operations. +# +unset -nocomplain i +for {set i 248} {$i<=253} {incr i} { + do_test savepoint7-3.$i { + db close + forcedelete test.db + sqlite3 db test.db + db eval { + PRAGMA page_size=1024; + PRAGMA temp_store=MEMORY; + BEGIN; + CREATE TABLE t1(x INTEGER PRIMARY KEY, y TEXT); + WITH RECURSIVE c(x) AS (VALUES(1) UNION SELECT x+1 FROM c WHERE x<$::i) + INSERT INTO t1(x,y) SELECT x*10, printf('%04d%.800c',x,'*') FROM c; + SAVEPOINT one; + SELECT count(*) FROM t1; + WITH RECURSIVE c(x) AS (VALUES(1) UNION SELECT x+1 FROM c WHERE x<$::i) + INSERT INTO t1(x,y) SELECT x*10+1, printf('%04d%.800c',x,'*') FROM c; + ROLLBACK TO one; + SELECT count(*) FROM t1; + SAVEPOINT twoB; + WITH RECURSIVE c(x) AS (VALUES(1) UNION SELECT x+1 FROM c WHERE x<10) + INSERT INTO t1(x,y) SELECT x*10+2, printf('%04d%.800c',x,'*') FROM c; + ROLLBACK TO twoB; + RELEASE one; + COMMIT; + } + } [list $i $i] +} + + finish_test