]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make sure that when a connection is blocking on a RESERVED lock that it
authordrh <drh@noemail.net>
Fri, 2 May 2008 14:23:54 +0000 (14:23 +0000)
committerdrh <drh@noemail.net>
Fri, 2 May 2008 14:23:54 +0000 (14:23 +0000)
continues after the lock is released.  Ticket #3093. (CVS 5078)

FossilOrigin-Name: 3dc334aa4a394e85858d2441225d64d73664b5b5

manifest
manifest.uuid
src/btree.c
test/tkt3093.test

index de2d726ea432188396b69b1be5b0ce1fcf1c5039..e86c59f130a3b6c48e4ff7b518b7b855188311c8 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sa\s\stest\scase\sfor\sticket\s#3093.\s(CVS\s5077)
-D 2008-05-02T14:08:56
+C Make\ssure\sthat\swhen\sa\sconnection\sis\sblocking\son\sa\sRESERVED\slock\sthat\sit\ncontinues\safter\sthe\slock\sis\sreleased.\s\sTicket\s#3093.\s(CVS\s5078)
+D 2008-05-02T14:23:55
 F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
 F Makefile.in 25b3282a4ac39388632c2fb0e044ff494d490952
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -86,7 +86,7 @@ F src/attach.c 496cc628b2e8c4d8db99d7c136761fcbebd8420b
 F src/auth.c c8b2ab5c8bad4bd90ed7c294694f48269162c627
 F src/bitvec.c 8ec2212cfb702bc4f402c0b7ae7623d85320c714
 F src/btmutex.c 483ced3c52205b04b97df69161fadbf87f4f1ea2
-F src/btree.c 8b2294c64baeee6ae0519e1438c577fd601c02fb
+F src/btree.c 05c6bcb6d840d00f231514b253a2ed2f3987f88e
 F src/btree.h 8826591bf54dd35fcf2e67473d5f1bae253861c7
 F src/btreeInt.h dc04ee33d8eb84714b2acdf81336fbbf6e764530
 F src/build.c a52d9d51341444a2131e3431608f245db80d9591
@@ -503,7 +503,7 @@ F test/tkt2920.test a8737380e4ae6424e00c0273dc12775704efbebf
 F test/tkt2927.test a473c09eafa83d95579fc2b976f2afc11571ce7e
 F test/tkt2942.test c5c87d179799ca6d1fbe83c815510b87cd5ec7ce
 F test/tkt3080.test 31a02e87a4c80ed443831c2c5b0e8216ff95ac14
-F test/tkt3093.test 433851feaef6bacb95700355c4811344ef6b851e
+F test/tkt3093.test fbdbc5b4969244ad11f540759003e361fcaf391f
 F test/trace.test 951cd0f5f571e7f36bf7bfe04be70f90fb16fb00
 F test/trans.test 2fd24cd7aa0b879d49a224cbd647d698f1e7ac5c
 F test/trigger1.test 7c13f39ca36f529bf856e05c7d004fc0531d48b4
@@ -634,7 +634,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
 F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
-P 1906d2dadcd70053f55e2133af9f838e2d828fa7
-R 753b7a8a009f233c8697dfefcc46a9a8
+P 288a7655c9a876abf53d92dc6599a9305399d562
+R 2ccc70e81b08cd2e7dd9d593658d1cd0
 U drh
-Z 13a2787d3df0d75d1a6ce4dedc8ab3e0
+Z df24ea2862549271d3b6a0f98f01dab8
index cc33a105d4e90b15c5557fabe91cdadd7132ae7b..528d01704f6445ff9b602315b8742850ce19205d 100644 (file)
@@ -1 +1 @@
-288a7655c9a876abf53d92dc6599a9305399d562
\ No newline at end of file
+3dc334aa4a394e85858d2441225d64d73664b5b5
\ No newline at end of file
index bf4612d27c6819be92280eb60f7a73d241c267a3..4337fc2ef77fc66d1f7bc81e92cc1726b2af83b4 100644 (file)
@@ -9,7 +9,7 @@
 **    May you share freely, never taking more than you give.
 **
 *************************************************************************
-** $Id: btree.c,v 1.452 2008/04/24 19:15:10 shane Exp $
+** $Id: btree.c,v 1.453 2008/05/02 14:23:55 drh Exp $
 **
 ** This file implements a external (disk-based) database using BTrees.
 ** See the header comment on "btreeInt.h" for additional information.
@@ -1899,8 +1899,10 @@ int sqlite3BtreeBeginTrans(Btree *p, int wrflag){
 #endif
 
   do {
-    while( rc==SQLITE_OK && pBt->pPage1==0 ){
-      rc = lockBtree(pBt);
+    if( pBt->pPage1==0 ){
+      do{
+        rc = lockBtree(pBt);
+      }while( pBt->pPage1==0 && rc==SQLITE_OK );
     }
 
     if( rc==SQLITE_OK && wrflag ){
index 5f99937c46f1d1bec4833c121f523c11e3ac8887..3be46d15cfec7fc4aa968fa52c6620186e431545 100644 (file)
@@ -14,7 +14,7 @@
 # Verify that a busy callback waiting on a reserved lock resolves
 # once the lock clears.
 #
-# $Id: tkt3093.test,v 1.1 2008/05/02 14:08:56 drh Exp $
+# $Id: tkt3093.test,v 1.2 2008/05/02 14:23:55 drh Exp $
 #
 
 set testdir [file dirname $argv0]