- 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
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
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.
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