From 569c6676a6ddb0ff73821d7693b5e18ddef809b9 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 16 Oct 2014 22:51:35 -0400 Subject: Imported Upstream version 3.2.0 --- test/sharedlock.test | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'test/sharedlock.test') 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 - -- cgit v1.2.3