From 9c54156a9cc203a106f9938eab1a572c7f3598f3 Mon Sep 17 00:00:00 2001 From: dan Date: Thu, 24 Aug 2017 10:10:28 +0000 Subject: [PATCH] Test BEGIN CONCURRENT transactions that consist entirely of read-only statements. FossilOrigin-Name: c3fe1f4b7e8dcadcb516622719d000b808effe3ad497244ba44f57d52dc2cc08 --- manifest | 12 +++--- manifest.uuid | 2 +- test/concurrent4.test | 89 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 96 insertions(+), 7 deletions(-) diff --git a/manifest b/manifest index 91cd200ac0..c5496f5966 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\sa\smore\srigorous\stest\scase\sfor\sthe\sbug\sfixed\sby\sthe\sprevious\scommit\son\sthis\nbranch. -D 2017-08-12T14:06:15.050 +C Test\sBEGIN\sCONCURRENT\stransactions\sthat\sconsist\sentirely\sof\sread-only\nstatements. +D 2017-08-24T10:10:28.736 F Makefile.in d9873c9925917cca9990ee24be17eb9613a668012c85a343aef7e5536ae266e8 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 02b469e9dcd5b7ee63fc1fb05babc174260ee4cfa4e0ef2e48c3c6801567a016 @@ -665,7 +665,7 @@ F test/concfault.test 500f17c3fcfe7705114422bcc6ddd3c740001a43 F test/concurrent.test a801cd60c370f0ed851657c9576b102f9ab1dd846c6a88e6ae45939a8deeda7c F test/concurrent2.test 9dfbeb0a323733fe1d13443371734bb94a674dbf777f464365475903873111f8 F test/concurrent3.test f4af1cf1220908c6dd5694923621c19e999b78cd997e2646285f08a52bcb4170 -F test/concurrent4.test 653de3066911acfb9dcf3802bf4f1981b392b86c11f75e2c38ed1abfdd162293 +F test/concurrent4.test e0b12cd467137e50259df3b4f837507e82aaa07c35941c88664dc8ed1d089c44 F test/concurrent5.test d5d7d9d404a9b4502464fc097c1fc5c3012bb4f1b063fae7ad707ca983fc86c5 F test/conflict.test 029faa2d81a0d1cafb5f88614beb663d972c01db F test/conflict2.test bb0b94cf7196c64a3cbd815c66d3ee98c2fecd9c @@ -1657,7 +1657,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 38dd9b50fe260d853cbc2551bc1bb60ddf5752f0456e0da3afe4cbf728c891d8 -R 5ae6eec944d8695060377eb5fcb02f25 +P 4256072399f44f48ed0856aa8112226af6feaf8676923612bde6cea239ebf920 +R 03a159c270fd82b6d54f5498b523d32e U dan -Z be5258dc78cb84266e8cf9b3ea9ebd92 +Z fcb6179847dc0180b01d1fb922b3b8b6 diff --git a/manifest.uuid b/manifest.uuid index d2eec08d49..7d481eeeee 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -4256072399f44f48ed0856aa8112226af6feaf8676923612bde6cea239ebf920 \ No newline at end of file +c3fe1f4b7e8dcadcb516622719d000b808effe3ad497244ba44f57d52dc2cc08 \ No newline at end of file diff --git a/test/concurrent4.test b/test/concurrent4.test index dd29434381..d43e701d99 100644 --- a/test/concurrent4.test +++ b/test/concurrent4.test @@ -101,5 +101,94 @@ do_execsql_test 3.2 { COMMIT; } {} +#------------------------------------------------------------------------- +# Test the effect of BEGIN CONCURRENT transactions that consist entirely +# of read-only statements. +# +reset_db +do_execsql_test 4.0 { + PRAGMA page_size = 1024; + PRAGMA journal_mode = wal; + + CREATE TABLE t4(a, b); + INSERT INTO t4 VALUES(1, 2); + INSERT INTO t4 VALUES(3, 4); +} {wal} + +sqlite3 db2 test.db +do_test 4.1.1 { + db eval { + BEGIN CONCURRENT; + INSERT INTO t4 VALUES(5, 6); + } + + db2 eval { + BEGIN CONCURRENT; + SELECT * FROM t4; + ROLLBACK; + } +} {1 2 3 4} + +do_test 4.1.2 { + db eval { COMMIT } + db2 eval { SELECT * FROM t4 } +} {1 2 3 4 5 6} + +do_test 4.2.1 { + db eval { + BEGIN CONCURRENT; + INSERT INTO t4 VALUES(7, 8); + } + + db2 eval { + BEGIN CONCURRENT; + SELECT * FROM t4; + COMMIT; + } +} {1 2 3 4 5 6} + +do_test 4.2.2 { + db eval { COMMIT } + db2 eval { SELECT * FROM t4 } +} {1 2 3 4 5 6 7 8} + +do_test 4.3 { + db2 eval { + BEGIN CONCURRENT; + SELECT * FROM t4; + } + + db eval { + BEGIN CONCURRENT; + INSERT INTO t4 VALUES(9, 10); + COMMIT; + } + db2 eval { + SELECT * FROM t4; + COMMIT; + } +} {1 2 3 4 5 6 7 8} + +set sz [file size test.db-wal] +do_test 4.4.1 { + db eval { + BEGIN CONCURRENT; + SELECT * FROM t4; + SELECT * FROM sqlite_master; + } + + db eval COMMIT + file size test.db-wal +} $sz +do_test 4.4.2 { + db eval { + BEGIN CONCURRENT; + SELECT * FROM t4; + SELECT * FROM sqlite_master; + ROLLBACK; + } + file size test.db-wal +} $sz + finish_test -- 2.47.3