OpenPKG CVS Repository
  http://cvs.openpkg.org/
  ____________________________________________________________________________

  Server: cvs.openpkg.org                  Name:   Ralf S. Engelschall
  Root:   /v/openpkg/cvs                   Email:  [EMAIL PROTECTED]
  Module: openpkg-src                      Date:   17-Mar-2005 08:40:05
  Branch: HEAD                             Handle: 2005031707400500

  Modified files:
    openpkg-src/sqlite      sqlite.patch.v3 sqlite.spec

  Log:
    modifying package: sqlite-2.8.16 20050314 -> 20050317

  Summary:
    Revision    Changes     Path
    1.3         +0  -300    openpkg-src/sqlite/sqlite.patch.v3
    1.86        +2  -2      openpkg-src/sqlite/sqlite.spec
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: openpkg-src/sqlite/sqlite.patch.v3
  ============================================================================
  $ cvs diff -u -r1.2 -r1.3 sqlite.patch.v3
  --- openpkg-src/sqlite/sqlite.patch.v3        14 Mar 2005 09:16:06 -0000      
1.2
  +++ openpkg-src/sqlite/sqlite.patch.v3        17 Mar 2005 07:40:05 -0000      
1.3
  @@ -25,303 +25,3 @@
    int sqlite3_vdbe_addop_trace = 0;
    #endif
    
  -vendor solution for "Ticket 1159: SQLite forgets to call the busy handler"
  -http://www.sqlite.org/cvstrac/tktview?tn=1159
  -http://www.mail-archive.com/sqlite-users%40sqlite.org/msg06900.html
  -http://www.sqlite.org/cvstrac/chngview?cn=2385
  -Index: src/btree.c
  -===================================================================
  -RCS file: /sqlite/sqlite/src/btree.c,v
  -retrieving revision 1.251
  -retrieving revision 1.252
  -diff -u -d -u -d -r1.251 -r1.252
  ---- src/btree.c      10 Mar 2005 17:06:34 -0000      1.251
  -+++ src/btree.c      14 Mar 2005 02:01:50 -0000      1.252
  -@@ -9,7 +9,7 @@
  - **    May you share freely, never taking more than you give.
  - **
  - *************************************************************************
  --** $Id: sqlite.patch.v3,v 1.2 2005/03/14 09:16:06 thl Exp $
  -+** $Id: sqlite.patch.v3,v 1.2 2005/03/14 09:16:06 thl Exp $
  - **
  - ** This file implements a external (disk-based) database using BTrees.
  - ** For a detailed discussion of BTrees, refer to
  -@@ -314,6 +314,7 @@
  -   int minLocal;         /* Minimum local payload in non-LEAFDATA tables */
  -   int maxLeaf;          /* Maximum local payload in a LEAFDATA table */
  -   int minLeaf;          /* Minimum local payload in a LEAFDATA table */
  -+  BusyHandler *pBusyHandler;   /* Callback for when there is lock 
contention */
  - };
  - typedef Btree Bt;
  - 
  -@@ -1291,6 +1292,7 @@
  - ** Change the busy handler callback function.
  - */
  - int sqlite3BtreeSetBusyHandler(Btree *pBt, BusyHandler *pHandler){
  -+  pBt->pBusyHandler = pHandler;
  -   sqlite3pager_set_busyhandler(pBt->pPager, pHandler);
  -   return SQLITE_OK;
  - }
  -@@ -1480,6 +1482,20 @@
  - }
  - 
  - /*
  -+** This routine works like lockBtree() except that it also invokes the
  -+** busy callback if there is lock contention.
  -+*/
  -+static int lockBtreeWithRetry(Btree *pBt){
  -+  int rc = SQLITE_OK;
  -+  if( pBt->inTrans==TRANS_NONE ){
  -+    rc = sqlite3BtreeBeginTrans(pBt, 0);
  -+    pBt->inTrans = TRANS_NONE;
  -+  }
  -+  return rc;
  -+}
  -+       
  -+
  -+/*
  - ** If there are no outstanding cursors and we are not in the middle
  - ** of a transaction but there is a read lock on the database, then
  - ** this routine unrefs the first page of the database file which 
  -@@ -1543,7 +1559,7 @@
  - ** transaction.  If the second argument is 2 or more and exclusive
  - ** transaction is started, meaning that no other process is allowed
  - ** to access the database.  A preexisting transaction may not be
  --** upgrade to exclusive by calling this routine a second time - the
  -+** upgraded to exclusive by calling this routine a second time - the
  - ** exclusivity flag only works for a new transaction.
  - **
  - ** A write-transaction must be started before attempting any 
  -@@ -1558,43 +1574,60 @@
  - **      sqlite3BtreeDelete()
  - **      sqlite3BtreeUpdateMeta()
  - **
  --** If wrflag is true, then nMaster specifies the maximum length of
  --** a master journal file name supplied later via sqlite3BtreeSync().
  --** This is so that appropriate space can be allocated in the journal file
  --** when it is created..
  -+** If an initial attempt to acquire the lock fails because of lock 
contention
  -+** and the database was previously unlocked, then invoke the busy handler
  -+** if there is one.  But if there was previously a read-lock, do not
  -+** invoke the busy handler - just return SQLITE_BUSY.  SQLITE_BUSY is 
  -+** returned when there is already a read-lock in order to avoid a deadlock.
  -+**
  -+** Suppose there are two processes A and B.  A has a read lock and B has
  -+** a reserved lock.  B tries to promote to exclusive but is blocked because
  -+** of A's read lock.  A tries to promote to reserved but is blocked by B.
  -+** One or the other of the two processes must give way or there can be
  -+** no progress.  By returning SQLITE_BUSY and not invoking the busy callback
  -+** when A already has a read lock, we encourage A to give up and let B
  -+** proceed.
  - */
  - int sqlite3BtreeBeginTrans(Btree *pBt, int wrflag){
  -   int rc = SQLITE_OK;
  -+  int busy = 0;
  -+  BusyHandler *pH;
  - 
  -   /* If the btree is already in a write-transaction, or it
  -   ** is already in a read-transaction and a read-transaction
  -   ** is requested, this is a no-op.
  -   */
  --  if( pBt->inTrans==TRANS_WRITE || 
  --      (pBt->inTrans==TRANS_READ && !wrflag) ){
  -+  if( pBt->inTrans==TRANS_WRITE || (pBt->inTrans==TRANS_READ && !wrflag) ){
  -     return SQLITE_OK;
  -   }
  -+
  -+  /* Write transactions are not possible on a read-only database */
  -   if( pBt->readOnly && wrflag ){
  -     return SQLITE_READONLY;
  -   }
  - 
  --  if( pBt->pPage1==0 ){
  --    rc = lockBtree(pBt);
  --  }
  --
  --  if( rc==SQLITE_OK && wrflag ){
  --    rc = sqlite3pager_begin(pBt->pPage1->aData, wrflag>1);
  -+  do {
  -+    if( pBt->pPage1==0 ){
  -+      rc = lockBtree(pBt);
  -+    }
  -+  
  -+    if( rc==SQLITE_OK && wrflag ){
  -+      rc = sqlite3pager_begin(pBt->pPage1->aData, wrflag>1);
  -+      if( rc==SQLITE_OK ){
  -+        rc = newDatabase(pBt);
  -+      }
  -+    }
  -+  
  -     if( rc==SQLITE_OK ){
  --      rc = newDatabase(pBt);
  -+      pBt->inTrans = (wrflag?TRANS_WRITE:TRANS_READ);
  -+      if( wrflag ) pBt->inStmt = 0;
  -+    }else{
  -+      unlockBtreeIfUnused(pBt);
  -     }
  --  }
  --
  --  if( rc==SQLITE_OK ){
  --    pBt->inTrans = (wrflag?TRANS_WRITE:TRANS_READ);
  --    if( wrflag ) pBt->inStmt = 0;
  --  }else{
  --    unlockBtreeIfUnused(pBt);
  --  }
  -+  }while( rc==SQLITE_BUSY && pBt->inTrans==TRANS_NONE &&
  -+      (pH = pBt->pBusyHandler)!=0 && 
  -+      pH->xFunc && pH->xFunc(pH->pArg, busy++)
  -+  );
  -   return rc;
  - }
  - 
  -@@ -2116,7 +2149,7 @@
  -     }
  -   }
  -   if( pBt->pPage1==0 ){
  --    rc = lockBtree(pBt);
  -+    rc = lockBtreeWithRetry(pBt);
  -     if( rc!=SQLITE_OK ){
  -       return rc;
  -     }
  -@@ -5531,7 +5564,7 @@
  -   IntegrityCk sCheck;
  - 
  -   nRef = *sqlite3pager_stats(pBt->pPager);
  --  if( lockBtree(pBt)!=SQLITE_OK ){
  -+  if( lockBtreeWithRetry(pBt)!=SQLITE_OK ){
  -     return sqliteStrDup("Unable to acquire a read lock on the database");
  -   }
  -   sCheck.pBt = pBt;
  -Index: src/pager.c
  -===================================================================
  -RCS file: /sqlite/sqlite/src/pager.c,v
  -retrieving revision 1.192
  -retrieving revision 1.193
  -diff -u -d -u -d -r1.192 -r1.193
  ---- src/pager.c      10 Mar 2005 14:11:13 -0000      1.192
  -+++ src/pager.c      14 Mar 2005 02:01:50 -0000      1.193
  -@@ -18,7 +18,7 @@
  - ** file simultaneously, or one process from reading the database while
  - ** another is writing.
  - **
  --** @(#) $Id: sqlite.patch.v3,v 1.2 2005/03/14 09:16:06 thl Exp $
  -+** @(#) $Id: sqlite.patch.v3,v 1.2 2005/03/14 09:16:06 thl Exp $
  - */
  - #include "sqliteInt.h"
  - #include "os.h"
  -@@ -1824,12 +1824,12 @@
  -     rc = SQLITE_OK;
  -   }else{
  -     int busy = 1;
  -+    BusyHandler *pH;
  -     do {
  -       rc = sqlite3OsLock(&pPager->fd, locktype);
  -     }while( rc==SQLITE_BUSY && 
  --        pPager->pBusyHandler && 
  --        pPager->pBusyHandler->xFunc && 
  --        pPager->pBusyHandler->xFunc(pPager->pBusyHandler->pArg, busy++)
  -+        (pH = pPager->pBusyHandler)!=0 && 
  -+        pH->xFunc && pH->xFunc(pH->pArg, busy++)
  -     );
  -     if( rc==SQLITE_OK ){
  -       pPager->state = locktype;
  -@@ -2633,11 +2633,7 @@
  -       pPager->state = PAGER_EXCLUSIVE;
  -       pPager->origDbSize = pPager->dbSize;
  -     }else{
  --      if( SQLITE_BUSY_RESERVED_LOCK || exFlag ){
  --        rc = pager_wait_on_lock(pPager, RESERVED_LOCK);
  --      }else{
  --        rc = sqlite3OsLock(&pPager->fd, RESERVED_LOCK);
  --      }
  -+      rc = sqlite3OsLock(&pPager->fd, RESERVED_LOCK);
  -       if( rc==SQLITE_OK ){
  -         pPager->state = PAGER_RESERVED;
  -         if( exFlag ){
  -Index: test/lock.test
  -===================================================================
  -RCS file: /sqlite/sqlite/test/lock.test,v
  -retrieving revision 1.30
  -retrieving revision 1.31
  -diff -u -d -u -d -r1.30 -r1.31
  ---- test/lock.test   12 Jan 2005 12:44:04 -0000      1.30
  -+++ test/lock.test   14 Mar 2005 02:01:50 -0000      1.31
  -@@ -11,7 +11,7 @@
  - # This file implements regression tests for SQLite library.  The
  - # focus of this script is database locks.
  - #
  --# $Id: sqlite.patch.v3,v 1.2 2005/03/14 09:16:06 thl Exp $
  -+# $Id: sqlite.patch.v3,v 1.2 2005/03/14 09:16:06 thl Exp $
  - 
  - 
  - set testdir [file dirname $argv0]
  -@@ -169,30 +169,56 @@
  - } {0 {9 8}}
  - 
  - # If the other thread (the one that does not hold the transaction with
  --# a RESERVED lock) tries to get a RESERVED lock, we do not get a busy 
callback.
  -+# a RESERVED lock) tries to get a RESERVED lock, we do get a busy callback
  -+# as long as we were not orginally holding a READ lock.
  - #
  --do_test lock-2.3 {
  -+do_test lock-2.3.1 {
  -   proc callback {count} {
  -     set ::callback_value $count
  -     break
  -   }
  -   set ::callback_value {}
  -   db2 busy callback
  -+  # db2 does not hold a lock so we should get a busy callback here
  -+  set r [catch {execsql {UPDATE t1 SET a=b, b=a} db2} msg]
  -+  lappend r $msg
  -+  lappend r $::callback_value
  -+} {1 {database is locked} 0}
  -+do_test lock-2.3.2 {
  -+  set ::callback_value {}
  -+  execsql {BEGIN; SELECT rowid FROM sqlite_master LIMIT 1} db2
  -+  # This time db2 does hold a read lock.  No busy callback this time.
  -   set r [catch {execsql {UPDATE t1 SET a=b, b=a} db2} msg]
  -   lappend r $msg
  -   lappend r $::callback_value
  - } {1 {database is locked} {}}
  --do_test lock-2.4 {
  -+catch {execsql {ROLLBACK} db2}
  -+do_test lock-2.4.1 {
  -+  proc callback {count} {
  -+    lappend ::callback_value $count
  -+    if {$count>4} break
  -+  }
  -+  set ::callback_value {}
  -+  db2 busy callback
  -+  # We get a busy callback because db2 is not holding a lock
  -+  set r [catch {execsql {UPDATE t1 SET a=b, b=a} db2} msg]
  -+  lappend r $msg
  -+  lappend r $::callback_value
  -+} {1 {database is locked} {0 1 2 3 4 5}}
  -+do_test lock-2.4.2 {
  -   proc callback {count} {
  -     lappend ::callback_value $count
  -     if {$count>4} break
  -   }
  -   set ::callback_value {}
  -   db2 busy callback
  -+  execsql {BEGIN; SELECT rowid FROM sqlite_master LIMIT 1} db2
  -+  # No busy callback this time because we are holding a lock
  -   set r [catch {execsql {UPDATE t1 SET a=b, b=a} db2} msg]
  -   lappend r $msg
  -   lappend r $::callback_value
  - } {1 {database is locked} {}}
  -+catch {execsql {ROLLBACK} db2}
  - do_test lock-2.5 {
  -   proc callback {count} {
  -     lappend ::callback_value $count
  -@@ -255,7 +281,7 @@
  -   db2 busy callback
  -   set rc [catch {db2 eval {UPDATE t1 SET a=0}} msg]
  -   lappend rc $msg $::callback_value
  --} {1 {database is locked} {}}
  -+} {1 {database is locked} {0 1 2 3 4 5}}
  - execsql {ROLLBACK}
  - 
  - # When one thread is writing, other threads cannot read.  Except if the
  -
  @@ .
  patch -p0 <<'@@ .'
  Index: openpkg-src/sqlite/sqlite.spec
  ============================================================================
  $ cvs diff -u -r1.85 -r1.86 sqlite.spec
  --- openpkg-src/sqlite/sqlite.spec    14 Mar 2005 09:16:06 -0000      1.85
  +++ openpkg-src/sqlite/sqlite.spec    17 Mar 2005 07:40:05 -0000      1.86
  @@ -25,7 +25,7 @@
   
   #   package version
   %define       V_v2  2.8.16
  -%define       V_v3  3.1.5
  +%define       V_v3  3.1.6
   
   #   package information
   Name:         sqlite
  @@ -38,7 +38,7 @@
   Group:        Database
   License:      PD
   Version:      %{V_v2}
  -Release:      20050314
  +Release:      20050317
   
   #   package options
   %option       with_utf8            no
  @@ .
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
CVS Repository Commit List                     [email protected]

Reply via email to