]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix jrnlmode2.test so that it works on systems where UNDELETABLE_WHEN_OPEN is defined.
authordan <dan@noemail.net>
Mon, 21 Jun 2010 05:40:49 +0000 (05:40 +0000)
committerdan <dan@noemail.net>
Mon, 21 Jun 2010 05:40:49 +0000 (05:40 +0000)
FossilOrigin-Name: 59be370e52ec814c45efa6cbac45b6df94661b54

manifest
manifest.uuid
test/jrnlmode2.test

index dc715a7b25a7bb176afd87cc26ccb53e4b199128..f1ca3e28a6c82c4325116e3b098c36be3bc3613a 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\san\sassert()\sfailure\sthat\scould\soccur\sif\scompiling\swith\sOMIT_SHARED_CACHE.
-D 2010-06-19T19:06:34
+C Fix\sjrnlmode2.test\sso\sthat\sit\sworks\son\ssystems\swhere\sUNDELETABLE_WHEN_OPEN\sis\sdefined.
+D 2010-06-21T05:40:49
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in a5cad1f8f3e021356bfcc6c77dc16f6f1952bbc3
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -468,7 +468,7 @@ F test/join6.test bf82cf3f979e9eade83ad0d056a66c5ed71d1901
 F test/journal1.test 36f2d1bb9bf03f790f43fbdb439e44c0657fab19
 F test/journal2.test a08ea6545d987385e7cbb1d4e7dc2eaacd83b00b
 F test/jrnlmode.test 76f94d61528c5ff32102a12f8cf34f4cc36f7849
-F test/jrnlmode2.test fe79ea1f0375c926b8de0362ddf94f34a64135fd
+F test/jrnlmode2.test a19e28de1a6ec898067e46a122f1b71c9323bf00
 F test/jrnlmode3.test cfcdb12b90e640a23b92785a002d96c0624c8710
 F test/keyword1.test a2400977a2e4fde43bf33754c2929fda34dbca05
 F test/lastinsert.test 474d519c68cb79d07ecae56a763aa7f322c72f51
@@ -824,7 +824,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P 5a5ff4e3e4c707464f227907d0aefb8ef42180dd
-R 0e23e267b3b82742ffd6ce332fce696f
+P 3e76a9f2c041a6d36614f540bb89588703d85925
+R b870a455574cea6100e536dd46b8d81b
 U dan
-Z 610fee2a443c81bfcb467b2cb6ae3598
+Z d0b6213f5feedc09ae1f6676dae25d67
index f0caada5b26232fbbee8eda78a8036e5b2762586..e8026543241b22e46059f6b0340d87e2ca16af00 100644 (file)
@@ -1 +1 @@
-3e76a9f2c041a6d36614f540bb89588703d85925
\ No newline at end of file
+59be370e52ec814c45efa6cbac45b6df94661b54
\ No newline at end of file
index 9a1fe37c3f1ca4a8842bf88b5d0b2268c5db781c..dc3bc270b4231803e218da204cb86404d2a228b0 100644 (file)
@@ -9,7 +9,6 @@
 #
 #***********************************************************************
 #
-# $Id: jrnlmode2.test,v 1.6 2009/06/05 17:09:12 drh Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -20,10 +19,33 @@ ifcapable {!pager_pragmas} {
 }
 
 #-------------------------------------------------------------------------
-# Test overview:
+# The tests in this file check that the following two bugs (both now fixed)
+# do not reappear.
 #
-#   jrnlmode2-1.*: Demonstrate bug #3745
-#   jrnlmode2-2.*: Demonstrate bug #3751
+# jrnlmode2-1.*: Demonstrate bug #3745:
+#
+#     In persistent journal mode, if:
+#
+#       * There is a persistent journal in the file-system, AND
+#       * there exists a connection with a shared lock on the db file, 
+#
+#     then a second connection cannot open a read-transaction on the database.
+#     The reason is because while determining that the persistent-journal is
+#     not a hot-journal, SQLite currently grabs an exclusive lock on the
+#     database file. If this fails because another connection has a shared
+#     lock, then SQLITE_BUSY is returned to the user.  
+#
+# jrnlmode2-2.*: Demonstrate bug #3751:
+#
+#     If a connection is opened in SQLITE_OPEN_READONLY mode, the underlying
+#     unix file descriptor on the database file is opened in O_RDONLY mode.
+#
+#     When SQLite queries the database file for the schema in order to compile
+#     the SELECT statement, it sees the empty journal in the file system, it
+#     attempts to obtain an exclusive lock on the database file (this is a
+#     bug). The attempt to obtain an exclusive (write) lock on a read-only file
+#     fails at the OS level. Under unix, fcntl() reports an EBADF - "Bad file
+#     descriptor" - error. 
 #
 
 do_test jrnlmode2-1.1 {
@@ -46,6 +68,8 @@ do_test jrnlmode2-1.3 {
 do_test jrnlmode2-1.4 {
   execsql {
     INSERT INTO t1 VALUES(3, 4);
+  }
+  execsql {
     BEGIN;
     SELECT * FROM t1;
   }
@@ -87,9 +111,9 @@ do_test jrnlmode2-2.4 {
 } {0 {1 2 3 4 5 6}}
 
 do_test jrnlmode2-2.5 {
+  db close
   file delete test.db-journal
 } {}
-
 do_test jrnlmode2-2.6 {
   sqlite3 db2 test.db -readonly 1
   catchsql { SELECT * FROM t1 } db2