From: drh Date: Fri, 2 May 2008 14:23:54 +0000 (+0000) Subject: Make sure that when a connection is blocking on a RESERVED lock that it X-Git-Tag: version-3.6.10~1099 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8a9c17f1d57e60a53273f9535e56b1085676d681;p=thirdparty%2Fsqlite.git Make sure that when a connection is blocking on a RESERVED lock that it continues after the lock is released. Ticket #3093. (CVS 5078) FossilOrigin-Name: 3dc334aa4a394e85858d2441225d64d73664b5b5 --- diff --git a/manifest b/manifest index de2d726ea4..e86c59f130 100644 --- 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 diff --git a/manifest.uuid b/manifest.uuid index cc33a105d4..528d01704f 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -288a7655c9a876abf53d92dc6599a9305399d562 \ No newline at end of file +3dc334aa4a394e85858d2441225d64d73664b5b5 \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index bf4612d27c..4337fc2ef7 100644 --- a/src/btree.c +++ b/src/btree.c @@ -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 ){ diff --git a/test/tkt3093.test b/test/tkt3093.test index 5f99937c46..3be46d15cf 100644 --- a/test/tkt3093.test +++ b/test/tkt3093.test @@ -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]