diff options
Diffstat (limited to 'test/sharedlock.test')
-rw-r--r-- | test/sharedlock.test | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/test/sharedlock.test b/test/sharedlock.test index 1e78eea..caa48f5 100644 --- a/test/sharedlock.test +++ b/test/sharedlock.test @@ -13,6 +13,7 @@ set testdir [file dirname $argv0] source $testdir/tester.tcl +set testprefix sharedlock db close ifcapable !shared_cache { @@ -47,9 +48,35 @@ do_test sharedlock-1.2 { set res } {1 one 2 two 3 three} + +#------------------------------------------------------------------------- +# Test that a write-lock is taken on a table when its entire contents +# are deleted using the OP_Clear optimization. +# +foreach {tn delete_sql} { + 1 { DELETE FROM t2 WHERE 1 } + 2 { DELETE FROM t2 } +} { + do_execsql_test 2.1 { + DROP TABLE IF EXISTS t2; + CREATE TABLE t2(x, y); + INSERT INTO t2 VALUES(1, 2); + INSERT INTO t2 VALUES(3, 4); + } + + do_test 2.2 { execsql { SELECT * FROM t2 } db2 } {1 2 3 4} + + do_execsql_test 2.3 " BEGIN; $delete_sql; " + + do_test 2.4 { + catchsql { SELECT * FROM t2 } db2 + } {1 {database table is locked: t2}} + + do_execsql_test 2.5 COMMIT +} + + db close db2 close - sqlite3_enable_shared_cache $::enable_shared_cache finish_test - |