From e36d23a85ebff914d74bb541558c2b6082b78edb Mon Sep 17 00:00:00 2001 From: dan miller Date: Sat, 20 Oct 2007 02:49:29 +0000 Subject: sqlite source (unix build) added to libraries --- libraries/sqlite/unix/sqlite-3.5.1/test/lock3.test | 78 ++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 libraries/sqlite/unix/sqlite-3.5.1/test/lock3.test (limited to 'libraries/sqlite/unix/sqlite-3.5.1/test/lock3.test') diff --git a/libraries/sqlite/unix/sqlite-3.5.1/test/lock3.test b/libraries/sqlite/unix/sqlite-3.5.1/test/lock3.test new file mode 100644 index 0000000..1835c66 --- /dev/null +++ b/libraries/sqlite/unix/sqlite-3.5.1/test/lock3.test @@ -0,0 +1,78 @@ +# 2001 September 15 +# +# The author disclaims copyright to this source code. In place of +# a legal notice, here is a blessing: +# +# May you do good and not evil. +# May you find forgiveness for yourself and forgive others. +# May you share freely, never taking more than you give. +# +#*********************************************************************** +# This file implements regression tests for SQLite library. The +# focus of this script is database locks and the operation of the +# DEFERRED, IMMEDIATE, and EXCLUSIVE keywords as modifiers to the +# BEGIN command. +# +# $Id: lock3.test,v 1.1 2004/10/05 02:41:43 drh Exp $ + + +set testdir [file dirname $argv0] +source $testdir/tester.tcl + +# Establish two connections to the same database. Put some +# sample data into the database. +# +do_test lock3-1.1 { + sqlite3 db2 test.db + execsql { + CREATE TABLE t1(a); + INSERT INTO t1 VALUES(1); + } + execsql { + SELECT * FROM t1 + } db2 +} 1 + +# Get a deferred lock on the database using one connection. The +# other connection should still be able to write. +# +do_test lock3-2.1 { + execsql {BEGIN DEFERRED TRANSACTION} + execsql {INSERT INTO t1 VALUES(2)} db2 + execsql {END TRANSACTION} + execsql {SELECT * FROM t1} +} {1 2} + +# Get an immediate lock on the database using one connection. The +# other connection should be able to read the database but not write +# it. +# +do_test lock3-3.1 { + execsql {BEGIN IMMEDIATE TRANSACTION} + catchsql {SELECT * FROM t1} db2 +} {0 {1 2}} +do_test lock3-3.2 { + catchsql {INSERT INTO t1 VALUES(3)} db2 +} {1 {database is locked}} +do_test lock3-3.3 { + execsql {END TRANSACTION} +} {} + + +# Get an exclusive lock on the database using one connection. The +# other connection should be unable to read or write the database. +# +do_test lock3-4.1 { + execsql {BEGIN EXCLUSIVE TRANSACTION} + catchsql {SELECT * FROM t1} db2 +} {1 {database is locked}} +do_test lock3-4.2 { + catchsql {INSERT INTO t1 VALUES(3)} db2 +} {1 {database is locked}} +do_test lock3-4.3 { + execsql {END TRANSACTION} +} {} + +catch {db2 close} + +finish_test -- cgit v1.1