From: dan Date: Tue, 4 Jun 2024 16:24:12 +0000 (+0000) Subject: Merge 11a4178f0e6cd760303a587, from the bedrock branch just after the 3.45 release... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c9c7c08cb7ca32e9b94a9fa269fa424e0865127b;p=thirdparty%2Fsqlite.git Merge 11a4178f0e6cd760303a587, from the bedrock branch just after the 3.45 release, into this branch. This is to pick up test cases only. FossilOrigin-Name: 66c885814e1c533f0f45ee01b6b25cd5ec08770d699e441b1af4f79b23e9f0a7 --- c9c7c08cb7ca32e9b94a9fa269fa424e0865127b diff --cc manifest index 9bd48c5a4f,01ea93485a..383c09036e --- a/manifest +++ b/manifest @@@ -1,5 -1,5 +1,5 @@@ - C Fix\sanother\sproblem\swith\sthe\ssqlite3_log()\smessage\sidentifying\sthe\stable\sor\sindex\sthat\sa\sconflicting\spage\sbelongs\sto. - D 2024-06-04T15:47:03.558 -C Fix\sa\sproblem\swith\sthe\ssqlite3_log()\smessage\sidentifying\sthe\stable\sor\sindex\sthat\sa\sconflicting\spage\sbelongs\sto. -D 2024-02-16T11:05:35.380 ++C Merge\s11a4178f0e6cd760303a587,\sfrom\sthe\sbedrock\sbranch\sjust\safter\sthe\s3.45\srelease,\sinto\sthis\sbranch.\sThis\sis\sto\spick\sup\stest\scases\sonly. ++D 2024-06-04T16:24:12.251 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@@ -998,7 -997,7 +998,7 @@@ F test/concurrent.test fb624ddac9b008f3 F test/concurrent2.test 847cd11edc82229a95e1eaf88b55c974430b0f669cefd67a453d274e3480981c F test/concurrent3.test 82923fc2ea7321144b4448f98ea38aa316ddceef9020a392c5f6dea536506434 F test/concurrent4.test e0b12cd467137e50259df3b4f837507e82aaa07c35941c88664dc8ed1d089c44 - F test/concurrent5.test da0562758d90d8f05d8852092196415436ebe80f12e3904e1f6806a696905608 -F test/concurrent5.test 6088092b0cebe6ff299d781b06c9b4d44c91d7c8f8023f6abb9bffdb436c01b3 ++F test/concurrent5.test 6230d8c8163870e8a3041ea6a54d4000e82f7fa67315df0ec308677cfc3ad832 F test/concurrent6.test a7860e9ca13bb5fb76bcf41c5524fbfa9c37e6e258ecf84ffb5748a272488c67 F test/concurrent7.test b96fa5c4cfdf8d5c0bc66b6934214500bad0260884a736f054ccc76e81aae85d F test/concurrent8.test b93937e74a8efb8b84f2fea7595b53418c5f29777bbe9cbdb5dc219b3dd72a7d @@@ -2197,9 -2194,9 +2197,8 @@@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a9 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 - P f1d17258f406e3ccfd5a08e7ea0d362da0a198eea9081022ab30bd90ffca8312 - Q +d033d9435007c7753d48f019626cf22c82569f93506a7e0158a09d5c4274baae - R 5c84942ffa12b3ae47c0cbc493c86325 -P c39f6585226dfc460372d55189b37fba07468126d3961bff625cea8a95956783 -Q +d6c629f1655a207a511444680c3e89089b4e9ee30a699f396549324d5c4a238e -R ed5dd0b3080cf04f5d7d10fe482b5031 ++P 885e01ae3547d83443fd656fa0b3aec5e6ced4836a8f9207cb9c1bf89431f11c 11a4178f0e6cd760303a5874b5a3529ccd78a2398b59700e878c7e6b1251de91 ++R 525e421d7d2c9a2c13a472102d835b68 U dan - Z 82cd9f660cb00255584d7e25ac37a1f7 -Z a495f7aa0ed0621443f9dd442da2ad38 ++Z 9f3b4a7840c37a61b4229d213b43bb0b # Remove this line to create a well-formed Fossil manifest. diff --cc manifest.uuid index 7365943f66,45c88c9303..fc447eb14a --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - 885e01ae3547d83443fd656fa0b3aec5e6ced4836a8f9207cb9c1bf89431f11c -11a4178f0e6cd760303a5874b5a3529ccd78a2398b59700e878c7e6b1251de91 ++66c885814e1c533f0f45ee01b6b25cd5ec08770d699e441b1af4f79b23e9f0a7 diff --cc test/concurrent5.test index 573d0ef23e,088e4fff38..a5f1a8cc69 --- a/test/concurrent5.test +++ b/test/concurrent5.test @@@ -124,151 -124,37 +124,182 @@@ do_test_conflict_msg 1.3.2 conflict at page 211 (read/write page; part of db index t3.i3; content=0A0310006300D800...) } +db2 close +reset_db +do_execsql_test 1.5.0 { + PRAGMA auto_vacuum = 0; + PRAGMA journal_mode = wal; + CREATE TABLE t1(a, b); + CREATE INDEX i1 ON t1(a, b); + WITH s(i) AS ( + SELECT 1 UNION ALL SELECT i+1 FROM s WHERE i<1000 + ) + INSERT INTO t1 SELECT i, randomblob(200) FROM s; +} {wal} +do_test 1.5.1 { + set ::log [list] + +breakpoint + execsql { + BEGIN CONCURRENT; + INSERT INTO t1 VALUES(100000, ''); + } db + + sqlite3 db2 test.db + execsql { INSERT INTO t1(rowid, a, b) VALUES(-1, 100001, '') } db2 + catchsql COMMIT db +} {1 {database is locked}} + +do_test_conflict_msg 1.5.2 { + conflict at page 507 (read/write page; part of db index t1.i1; content=0A00000003025000...) +} + + +#------------------------------------------------------------------------- +reset_db +sqlite3 db2 test.db + +set big1 [string repeat ab 10000] +set big2 "[string repeat ab 9999]xy" + +do_execsql_test 1.6.0 { + CREATE TABLE x1(x, y); + INSERT INTO x1 VALUES(1, $big1); + PRAGMA journal_mode = wal; +} {wal} + +do_execsql_test -db db2 1.6.1.1 { + BEGIN; + UPDATE x1 SET y=$big2; +} {} +do_execsql_test 1.6.1.2 { + BEGIN CONCURRENT; + UPDATE x1 SET y=$big2; +} +do_execsql_test -db db2 1.6.1.3 COMMIT +do_catchsql_test 1.6.1.4 { + COMMIT; +} {1 {database is locked}} +do_test_conflict_msg 1.6.1.5 { + conflict at page 21 (read/write page; part of db table x1; content=0000000061626162...) +} +catchsql ROLLBACK + +do_test 1.6.2.1 { + execsql { BEGIN } db2 + set fd [db2 incrblob main x1 y 1] + seek $fd 19998 + puts -nonewline $fd 00 + close $fd +} {} +do_test 1.6.2.2 { + execsql { BEGIN CONCURRENT } db + set fd [db incrblob main x1 y 1] + seek $fd 19998 + puts -nonewline $fd 12 + close $fd +} {} +do_execsql_test -db db2 1.6.2.3 COMMIT +do_catchsql_test 1.6.2.4 { + COMMIT; +} {1 {database is locked}} +do_test_conflict_msg 1.6.1.5 { + conflict at page 21 (read/write page; part of db table x1; content=0000000061626162...) +} +catchsql ROLLBACK + +#-------------------------------------------------------------------------- +reset_db +sqlite3 db2 test.db + +set big1 [string repeat ab 10000] +set big2 "[string repeat ab 9999]xy" + +do_execsql_test 1.7.0 { + CREATE TABLE ww(a); + CREATE TABLE y1(x, y); + INSERT INTO y1 VALUES(1, $big1); + PRAGMA journal_mode = wal; +} {wal} + +do_execsql_test -db db2 1.7.1 { + BEGIN; + UPDATE y1 SET y=$big2; + SELECT * FROM ww; +} + +do_execsql_test 1.7.2 { + BEGIN CONCURRENT; + INSERT INTO ww SELECT y FROM y1; +} + +do_execsql_test -db db2 1.7.3 COMMIT + +do_catchsql_test 1.7.4 { + COMMIT; +} {1 {database is locked}} + +#------------------------------------------------------------------------- +reset_db +sqlite3 db2 test.db + +set big1 "[string repeat ab 10000]" +set big2 "[string repeat ab 9999]xy" +do_execsql_test 2.0 { + PRAGMA journal_mode = wal; + CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT); + CREATE TABLE t2(a INTEGER PRIMARY KEY, b TEXT); + INSERT INTO t1 VALUES(100, $big1); +} {wal} + +do_execsql_test -db db2 2.1 { + BEGIN CONCURRENT; + INSERT INTO t2 SELECT * FROM t1; +} + +do_execsql_test 2.2 { + UPDATE t1 SET b=$big2 +} + +do_test 2.3 { + list [catch { db2 eval COMMIT } msg] $msg +} {1 {database is locked}} + +do_test_conflict_msg 2.4 { + conflict at page 22 (read-only page; part of db table t1; content=0000000061626162...) +} + + db2 close + reset_db + do_execsql_test 1.5.0 { + PRAGMA auto_vacuum = 0; + PRAGMA journal_mode = wal; + CREATE TABLE t1(a, b); + CREATE INDEX i1 ON t1(a, b); + WITH s(i) AS ( + SELECT 1 UNION ALL SELECT i+1 FROM s WHERE i<1000 + ) + INSERT INTO t1 SELECT i, randomblob(200) FROM s; + } {wal} + do_test 1.5.1 { + set ::log [list] + + execsql { + BEGIN CONCURRENT; + INSERT INTO t1 VALUES(100000, ''); + } db + + sqlite3 db2 test.db + execsql { INSERT INTO t1(rowid, a, b) VALUES(-1, 100001, '') } db2 + catchsql COMMIT db + } {1 {database is locked}} + + do_test_conflict_msg 1.5.2 { + conflict at page 507 (read/write page; part of db index t1.i1; content=0A00000003025000...) + } + + sqlite3 db2 test.db + db close db2 close sqlite3_shutdown