Index: third_party/sqlite/src/test/unixexcl.test |
diff --git a/third_party/sqlite/src/test/unixexcl.test b/third_party/sqlite/src/test/unixexcl.test |
index 057ae0af14fe3e56dba29f4b1d2467b092f6790a..d6762178dd2eb90f2c27e8bd9e683c969a1a6cc5 100644 |
--- a/third_party/sqlite/src/test/unixexcl.test |
+++ b/third_party/sqlite/src/test/unixexcl.test |
@@ -80,4 +80,49 @@ do_multiclient_test tn { |
} {0 {hello world}} |
} |
+do_multiclient_test tn { |
+ do_test unixexcl-3.$tn.1 { |
+ code1 { db close; sqlite3 db file:test.db?psow=0 -vfs unix-excl -uri 1 } |
+ code2 { db2 close; sqlite3 db2 file:test.db?psow=0 -vfs unix-excl -uri 1 } |
+ sql1 { |
+ PRAGMA auto_vacuum = 0; |
+ PRAGMA journal_mode = WAL; |
+ CREATE TABLE t1(a, b); |
+ INSERT INTO t1 VALUES(1, 2); |
+ } |
+ } {wal} |
+ |
+ if {$tn==1} { |
+ do_test unixexcl-3.$tn.1.multiproc { |
+ csql2 { SELECT * FROM t1; } |
+ } {1 {database is locked}} |
+ } else { |
+ do_test unixexcl-3.$tn.1.singleproc { |
+ sql2 { SELECT * FROM t1; } |
+ } {1 2} |
+ |
+ do_test unixexcl-3.$tn.2 { |
+ sql2 { |
+ BEGIN; |
+ SELECT * FROM t1; |
+ } |
+ } {1 2} |
+ do_test unixexcl-3.$tn.3 { |
+ sql1 { PRAGMA wal_checkpoint; INSERT INTO t1 VALUES(3, 4); } |
+ } {0 5 5} |
+ do_test unixexcl-3.$tn.4 { |
+ sql2 { SELECT * FROM t1; } |
+ } {1 2} |
+ do_test unixexcl-3.$tn.5 { |
+ sql1 { SELECT * FROM t1; } |
+ } {1 2 3 4} |
+ do_test unixexcl-3.$tn.6 { |
+ sql2 { COMMIT; SELECT * FROM t1; } |
+ } {1 2 3 4} |
+ do_test unixexcl-3.$tn.7 { |
+ sql1 { PRAGMA wal_checkpoint; } |
+ } {0 7 7} |
+ } |
+} |
+ |
finish_test |