]> granicus.if.org Git - php/commitdiff
Bug #62489: dba_insert not working as expected
authorLars Strojny <lstrojny@php.net>
Tue, 15 Jan 2013 08:30:44 +0000 (09:30 +0100)
committerLars Strojny <lstrojny@php.net>
Tue, 15 Jan 2013 08:30:44 +0000 (09:30 +0100)
17 files changed:
NEWS
ext/dba/dba_flatfile.c
ext/dba/dba_gdbm.c
ext/dba/dba_inifile.c
ext/dba/dba_qdbm.c
ext/dba/tests/dba_db1.phpt
ext/dba/tests/dba_db2.phpt
ext/dba/tests/dba_db3.phpt
ext/dba/tests/dba_db4_000.phpt
ext/dba/tests/dba_dbm.phpt
ext/dba/tests/dba_flatfile.phpt
ext/dba/tests/dba_gdbm.phpt
ext/dba/tests/dba_handler.inc
ext/dba/tests/dba_inifile.phpt
ext/dba/tests/dba_ndbm.phpt
ext/dba/tests/dba_qdbm.phpt
ext/dba/tests/dba_tcadb.phpt

diff --git a/NEWS b/NEWS
index 9e8cd8502b12e6d6b22624044005feace8a3b2da..4145dc54ee933317bbeca8d539820e7a528186c0 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -27,12 +27,16 @@ PHP                                                                        NEWS
 
 - DateTime
   . Added DateTimeImmutable - a variant of DateTime that only returns the
-    modified state instead of changing itself. (Derick) 
+    modified state instead of changing itself. (Derick)
 
 - pgsql:
   . Bug #46408: Locale number format settings can cause pg_query_params to
     break with numerics. (asmecher, Lars)
 
+- dba:
+  . Bug #62489: dba_insert not working as expected.
+    (marc-bennewitz at arcor dot de, Lars)
+
 18 Dec 2012, PHP 5.5.0 Alpha 2
 
 - General improvements:
index 082aa5cdb6c9b9dbe291b702f643eb3dc4ec307a..34aa635a5430c0509e3b487ed655f6bffffad59c 100644 (file)
@@ -88,15 +88,16 @@ DBA_UPDATE_FUNC(flatfile)
        gval.dsize = vallen;
        
        switch(flatfile_store(dba, gkey, gval, mode==1 ? FLATFILE_INSERT : FLATFILE_REPLACE TSRMLS_CC)) {
-       case -1:
-               php_error_docref1(NULL TSRMLS_CC, key, E_WARNING, "Operation not possible");
-               return FAILURE;
-       default:
-       case 0:
-               return SUCCESS;
-       case 1:
-               php_error_docref1(NULL TSRMLS_CC, key, E_WARNING, "Key already exists");
-               return FAILURE;
+               case 0:
+                       return SUCCESS;
+               case 1:
+                       return FAILURE;
+               case -1:
+                       php_error_docref1(NULL TSRMLS_CC, key, E_WARNING, "Operation not possible");
+                       return FAILURE;
+               default:
+                       php_error_docref2(NULL TSRMLS_CC, key, val, E_WARNING, "Unknown return value");
+                       return FAILURE;
        }
 }
 
index 7534568d39c2de57f4df466a0d63257e5740dfb9..47dd5764966336c53a58fbd4c49eaec608b4a54b 100644 (file)
@@ -104,11 +104,18 @@ DBA_UPDATE_FUNC(gdbm)
        gval.dptr = (char *) val;
        gval.dsize = vallen;
 
-       if(gdbm_store(dba->dbf, gkey, gval, 
-                               mode == 1 ? GDBM_INSERT : GDBM_REPLACE) == 0)
-               return SUCCESS;
-       php_error_docref2(NULL TSRMLS_CC, key, val, E_WARNING, "%s", gdbm_strerror(gdbm_errno));
-       return FAILURE;
+       switch (gdbm_store(dba->dbf, gkey, gval, mode == 1 ? GDBM_INSERT : GDBM_REPLACE)) {
+               case 0:
+                       return SUCCESS;
+               case 1:
+                       return FAILURE;
+               case -1:
+                       php_error_docref2(NULL TSRMLS_CC, key, val, E_WARNING, "%s", gdbm_strerror(gdbm_errno));
+                       return FAILURE;
+               default:
+                       php_error_docref2(NULL TSRMLS_CC, key, val, E_WARNING, "Unknown return value");
+                       return FAILURE;
+       }
 }
 
 DBA_EXISTS_FUNC(gdbm)
index e1359b65e984d44cdeb5c5f34fac900ebb1ee5e9..05ee95c0ecbcedaa94da8709b616a6be316bd8d5 100644 (file)
@@ -101,7 +101,6 @@ DBA_UPDATE_FUNC(inifile)
        case 0:
                return SUCCESS;
        case 1:
-               php_error_docref1(NULL TSRMLS_CC, key, E_WARNING, "Key already exists");
                return FAILURE;
        }
 }
index 485b1997e621993edb39e4522e6a91f60ae4c61d..eeece57011d66fca9cd93ff2876965ac8c5aae99 100644 (file)
@@ -96,13 +96,15 @@ DBA_FETCH_FUNC(qdbm)
 DBA_UPDATE_FUNC(qdbm)
 {
        QDBM_DATA;
-       int result;
 
-       result = dpput(dba->dbf, key, keylen, val, vallen, mode == 1 ? DP_DKEEP : DP_DOVER);
-       if (result)
+       if (dpput(dba->dbf, key, keylen, val, vallen, mode == 1 ? DP_DKEEP : DP_DOVER)) {
                return SUCCESS;
+       }
+
+       if (dpecode != DP_EKEEP) {
+               php_error_docref2(NULL TSRMLS_CC, key, val, E_WARNING, "%s", dperrmsg(dpecode));
+       }
 
-       php_error_docref2(NULL TSRMLS_CC, key, val, E_WARNING, "%s", dperrmsg(dpecode));
        return FAILURE;
 }
 
index a24600350f55143bee16420c39ce303553211dc8..d0e530e026f1bb8e1315201ca98c56dec4a67a8e 100644 (file)
@@ -18,6 +18,8 @@ database handler: db1
 Content String 2
 Content 2 replaced
 Read during write: not allowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
@@ -33,6 +35,8 @@ array(3) {
 Content String 2
 Content 2 replaced
 Read during write: not allowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
index 89d8a926e125ae759242a22914d30865b43878d9..1cfbb3e340c2edc0d495555f07166db2344d0cd3 100644 (file)
@@ -18,6 +18,8 @@ database handler: db2
 Content String 2
 Content 2 replaced
 Read during write: not allowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
@@ -33,6 +35,8 @@ array(3) {
 Content String 2
 Content 2 replaced
 Read during write: not allowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
index 257c88217524eff50e570bdc858a845ad935ee8e..5de7e5a0417ba081689f10c4e8d50c14fa3d0dae 100644 (file)
@@ -18,6 +18,8 @@ database handler: db3
 Content String 2
 Content 2 replaced
 Read during write: not allowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
@@ -33,6 +35,8 @@ array(3) {
 Content String 2
 Content 2 replaced
 Read during write: not allowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
index bbbc52c9f18c1e755a523f031d746e7f4bf6fda0..17db4bb62dfa83bdeb22ea8675cadcf0a0a93846 100644 (file)
@@ -22,6 +22,8 @@ database handler: db4
 Content String 2
 Content 2 replaced
 Read during write: not allowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
@@ -37,6 +39,8 @@ array(3) {
 Content String 2
 Content 2 replaced
 Read during write: not allowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
index dd1fe1e31cdabebd32446d8f30219e49270b26ad..8bea8463da76c06eac8a8ec01409b1753b01d473 100644 (file)
@@ -18,6 +18,8 @@ database handler: dbm
 Content String 2
 Content 2 replaced
 Read during write: not allowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
@@ -33,6 +35,8 @@ array(3) {
 Content String 2
 Content 2 replaced
 Read during write: not allowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
index 8e1ca6a93340e250becba423d76f0ba37e0db877..ac7f86ebdaafbd1c6f4336d85e4c16e355d99b04 100644 (file)
@@ -22,6 +22,8 @@ database handler: flatfile
 Content String 2
 Content 2 replaced
 Read during write: not allowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
@@ -37,6 +39,8 @@ array(3) {
 Content String 2
 Content 2 replaced
 Read during write: not allowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
index 33d7d206159ac416d87e15938e3b7292e73fad07..e68e8b74090245f4b094e6fbbf5b7daa44d9ce32 100644 (file)
@@ -21,6 +21,8 @@ database handler: gdbm
 Content String 2
 Content 2 replaced
 Read during write:%sallowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
index 1c3f5127ef3846206825d545b080782105f05eb8..a950e903af426b49389688d7b85be456554cc669 100644 (file)
@@ -46,8 +46,16 @@ do {
                        echo "Read during write: allowed\n";
                }
                if ($db_writer!==FALSE) {
-                       dba_insert("key number 6", "The 6th value", $db_writer);
-                       @dba_insert("key number 6", "The 6th value inserted again would be an error", $db_writer);
+                       if (dba_insert("key number 6", "The 6th value", $db_writer)) {
+                               echo '"key number 6" written' . "\n";
+                       } else {
+                               echo 'Failed to write "key number 6"' . "\n";
+                       }
+                       if (dba_insert("key number 6", "The 6th value inserted again would be an error", $db_writer)) {
+                               echo '"key number 6" written 2nd time' . "\n";
+                       } else {
+                               echo 'Failed to write "key number 6" 2nd time' . "\n";
+                       }
                        dba_replace("key2", "Content 2 replaced 2nd time", $db_writer);
                        dba_delete("key4", $db_writer);
                        echo dba_fetch("key2", $db_writer)."\n";
index 81ab738796315423d153ea378c3a946153236186..5975d25f4dc54c190b4ff7d03619812f33476491 100644 (file)
@@ -18,6 +18,8 @@ database handler: inifile
 Content String 2
 Content 2 replaced
 Read during write: not allowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
@@ -33,6 +35,8 @@ array(3) {
 Content String 2
 Content 2 replaced
 Read during write: not allowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
index b0f5542de49696cc72c844aa618f8e777e94d077..193db6f94d748a61631bbb236ee0f153541e8bb8 100644 (file)
@@ -18,6 +18,8 @@ database handler: ndbm
 Content String 2
 Content 2 replaced
 Read during write: not allowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
@@ -33,6 +35,8 @@ array(3) {
 Content String 2
 Content 2 replaced
 Read during write: not allowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
index ef216d9258bc445edb9026ffdf72c07f7bbbd5fd..e2205baa267dd8dd5e3a13a72a8191c39998f8bd 100644 (file)
@@ -19,6 +19,8 @@ database handler: qdbm
 Content String 2
 Content 2 replaced
 Read during write:%sallowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
index 52dd4de3361fe450c3211fafae47a352cc3ca912..28b6dd8f0b5a0491037e43c4c63997c192764d94 100644 (file)
@@ -22,6 +22,8 @@ database handler: tcadb
 Content String 2
 Content 2 replaced
 Read during write: not allowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {
@@ -37,6 +39,8 @@ array(3) {
 Content String 2
 Content 2 replaced
 Read during write: not allowed
+"key number 6" written
+Failed to write "key number 6" 2nd time
 Content 2 replaced 2nd time
 The 6th value
 array(3) {