]> granicus.if.org Git - php/commitdiff
MFH:
authorChristopher Jones <sixd@php.net>
Thu, 19 Jun 2008 22:39:56 +0000 (22:39 +0000)
committerChristopher Jones <sixd@php.net>
Thu, 19 Jun 2008 22:39:56 +0000 (22:39 +0000)
Fix bug #45266 (Fix build with BDB 4)
Fix bug #45267 (Revert invalid assumption about BDB 4 locking; let DBA handle locking)
Fix bug #45268 (Fix error callback prototype)

ext/dba/dba.c
ext/dba/dba_db4.c
ext/dba/tests/dba_db4.phpt

index 61b3bc0c413375581ea9257675f86f9c824ed952..22ea355939a31858cd6190f53475fed631e68b6c 100644 (file)
@@ -360,7 +360,7 @@ static dba_handler handler[] = {
        DBA_HND(db3, DBA_LOCK_ALL) /* No lock in lib */
 #endif
 #if DBA_DB4
-       DBA_HND(db4, DBA_LOCK_EXT) /* Locking done in library itself */
+       DBA_HND(db4, DBA_LOCK_ALL) /* No lock in lib */
 #endif
 #if DBA_INIFILE
        DBA_HND(inifile, DBA_STREAM_OPEN|DBA_LOCK_ALL|DBA_CAST_AS_FD) /* No lock in lib */
index 69f3967bb5046fdf105aec0b3cb6b9b5d6cbdf50..e0e6ec0424633bd87149904a99fc8d980003fa7a 100644 (file)
 #include <db.h>
 #endif
 
-static void php_dba_db4_errcall_fcn(const char *errpfx, char *msg)
+static void php_dba_db4_errcall_fcn(
+#if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 3)
+       const DB_ENV *dbenv, 
+#endif
+       const char *errpfx, const char *msg)
 {
        TSRMLS_FETCH();
        
@@ -81,7 +85,6 @@ DBA_OPEN_FUNC(db4)
                return FAILURE; /* not possible */
        }
 
-       gmode |= DB_INIT_LOCK;
        if (info->flags & DBA_PERSISTENT) {
                gmode |= DB_THREAD;
        }
@@ -91,10 +94,6 @@ DBA_OPEN_FUNC(db4)
                filemode = Z_LVAL_PP(info->argv[0]);
        }
 
-#ifdef DB_FCNTL_LOCKING
-       gmode |= DB_FCNTL_LOCKING;
-#endif
-
        if ((err=db_create(&dbp, NULL, 0)) == 0) {
            dbp->set_errcall(dbp, php_dba_db4_errcall_fcn);
            if (
index 252797bf41168a4ddd361f7a380200f7e5f68870..fcf089a1e90b017113f6ed991302c630027eb571 100644 (file)
@@ -9,7 +9,6 @@ DBA DB4 handler test
 <?php
        $handler = 'db4';
        require_once('test.inc');
-       $lock_flag = ''; // lock in library
        require_once('dba_handler.inc');
 ?>
 ===DONE===
@@ -18,7 +17,22 @@ database handler: db4
 3NYNYY
 Content String 2
 Content 2 replaced
-Read during write: allowed
+Read during write: not allowed
+Content 2 replaced 2nd time
+The 6th value
+array(3) {
+  ["key number 6"]=>
+  string(13) "The 6th value"
+  ["key2"]=>
+  string(27) "Content 2 replaced 2nd time"
+  ["key5"]=>
+  string(23) "The last content string"
+}
+--NO-LOCK--
+3NYNYY
+Content String 2
+Content 2 replaced
+Read during write: not allowed
 Content 2 replaced 2nd time
 The 6th value
 array(3) {