wez             Wed Jul 20 01:27:27 2005 EDT

  Added files:                 
    /php-src/ext/pdo_dblib/tests        common.phpt 

  Modified files:              
    /php-src/ext/pdo_dblib      dblib_driver.c dblib_stmt.c pdo_dblib.c 
  Log:
  use pdo core test suite.
  Now passes all but one test.  Volunteers that want to track down the cause
  for test pdo_018.phpt not passing are welcome.
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo_dblib/dblib_driver.c?r1=1.8&r2=1.9&ty=u
Index: php-src/ext/pdo_dblib/dblib_driver.c
diff -u php-src/ext/pdo_dblib/dblib_driver.c:1.8 
php-src/ext/pdo_dblib/dblib_driver.c:1.9
--- php-src/ext/pdo_dblib/dblib_driver.c:1.8    Tue Jul 12 08:16:02 2005
+++ php-src/ext/pdo_dblib/dblib_driver.c        Wed Jul 20 01:27:27 2005
@@ -17,7 +17,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: dblib_driver.c,v 1.8 2005/07/12 12:16:02 wez Exp $ */
+/* $Id: dblib_driver.c,v 1.9 2005/07/20 05:27:27 wez Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include "config.h"
@@ -44,15 +44,18 @@
                S = (pdo_dblib_stmt*)stmt->driver_data;
                einfo = &S->err;
        }
-       
+
        if (einfo->dberr == SYBESMSG && einfo->lastmsg) {
                msg = einfo->lastmsg;
+       } else if (einfo->dberr == SYBESMSG && DBLIB_G(err).lastmsg) {
+               msg = DBLIB_G(err).lastmsg;
+               DBLIB_G(err).lastmsg = NULL;
        } else {
                msg = einfo->dberrstr;
        }
 
-       spprintf(&message, 0, "%s [%d] (severity %d)",
-               msg, einfo->dberr, einfo->severity);
+       spprintf(&message, 0, "%s [%d] (severity %d) [%s]",
+               msg, einfo->dberr, einfo->severity, stmt ? 
stmt->active_query_string : "");
 
        add_next_index_long(info, einfo->dberr);
        add_next_index_string(info, message, 0);
http://cvs.php.net/diff.php/php-src/ext/pdo_dblib/dblib_stmt.c?r1=1.5&r2=1.6&ty=u
Index: php-src/ext/pdo_dblib/dblib_stmt.c
diff -u php-src/ext/pdo_dblib/dblib_stmt.c:1.5 
php-src/ext/pdo_dblib/dblib_stmt.c:1.6
--- php-src/ext/pdo_dblib/dblib_stmt.c:1.5      Fri Jun 10 02:32:36 2005
+++ php-src/ext/pdo_dblib/dblib_stmt.c  Wed Jul 20 01:27:27 2005
@@ -17,7 +17,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: dblib_stmt.c,v 1.5 2005/06/10 06:32:36 wez Exp $ */
+/* $Id: dblib_stmt.c,v 1.6 2005/07/20 05:27:27 wez Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include "config.h"
@@ -47,6 +47,7 @@
        }
        efree(S->rows);
        S->rows = NULL;
+       S->nrows = 0;
 }
 
 static int pdo_dblib_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC)
@@ -96,7 +97,7 @@
        ret = dbnextrow(H->link);
 
     if (ret == NO_MORE_ROWS) {
-       return 0;
+       return 1;
     }
     
        if (!S->cols) {
@@ -139,33 +140,38 @@
                for (i = 0; i < S->ncols; i++) {
                        pdo_dblib_colval *val = &S->rows[S->nrows * S->ncols + 
i];
 
-                       switch (S->cols[i].coltype) {
-                               case SQLCHAR:
-                               case SQLTEXT:
-                               case SQLVARBINARY:
-                               case SQLBINARY:
-                               case SQLIMAGE:
-                                       val->len = dbdatlen(H->link, i+1);
-                                       val->data = emalloc(val->len + 1);
-                                       memcpy(val->data, dbdata(H->link, i+1), 
val->len);
-                                       val->data[val->len] = '\0';
-                                       break;
-
-                               default:
-                                       if (dbwillconvert(S->cols[i].coltype, 
SQLCHAR)) {
-                                               val->len = 32 + (2 * 
dbdatlen(H->link, i+1));
-                                               val->data = emalloc(val->len);
-
-                                               val->len = dbconvert(NULL, 
S->cols[i].coltype, dbdata(H->link, i+1),
-                                                               
dbdatlen(H->link, i+1), SQLCHAR, val->data, val->len);
-
-                                               if (val->len >= 0) {
-                                                       val->data[val->len] = 
'\0';
+                       if (dbdatlen(H->link, i+1) == 0 && dbdata(H->link, i+1) 
== NULL) {
+                               val->len = 0;
+                               val->data = NULL;
+                       } else {
+                               switch (S->cols[i].coltype) {
+                                       case SQLCHAR:
+                                       case SQLTEXT:
+                                       case SQLVARBINARY:
+                                       case SQLBINARY:
+                                       case SQLIMAGE:
+                                               val->len = dbdatlen(H->link, 
i+1);
+                                               val->data = emalloc(val->len + 
1);
+                                               memcpy(val->data, 
dbdata(H->link, i+1), val->len);
+                                               val->data[val->len] = '\0';
+                                               break;
+
+                                       default:
+                                               if 
(dbwillconvert(S->cols[i].coltype, SQLCHAR)) {
+                                                       val->len = 32 + (2 * 
dbdatlen(H->link, i+1));
+                                                       val->data = 
emalloc(val->len);
+
+                                                       val->len = 
dbconvert(NULL, S->cols[i].coltype, dbdata(H->link, i+1),
+                                                                       
dbdatlen(H->link, i+1), SQLCHAR, val->data, val->len);
+
+                                                       if (val->len >= 0) {
+                                                               
val->data[val->len] = '\0';
+                                                       }
+                                               } else {
+                                                       val->len = 0;
+                                                       val->data = NULL;
                                                }
-                                       } else {
-                                               val->len = 0;
-                                               val->data = NULL;
-                                       }
+                               }
                        }
                }
 
@@ -178,7 +184,6 @@
                }
        } while (ret != FAIL && ret != NO_MORE_ROWS);
 
-
        if (resret != NO_MORE_RESULTS) {
                /* there are additional result sets available */
                dbresults(H->link);
http://cvs.php.net/diff.php/php-src/ext/pdo_dblib/pdo_dblib.c?r1=1.7&r2=1.8&ty=u
Index: php-src/ext/pdo_dblib/pdo_dblib.c
diff -u php-src/ext/pdo_dblib/pdo_dblib.c:1.7 
php-src/ext/pdo_dblib/pdo_dblib.c:1.8
--- php-src/ext/pdo_dblib/pdo_dblib.c:1.7       Tue Jul 12 08:21:53 2005
+++ php-src/ext/pdo_dblib/pdo_dblib.c   Wed Jul 20 01:27:27 2005
@@ -17,7 +17,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: pdo_dblib.c,v 1.7 2005/07/12 12:21:53 wez Exp $ */
+/* $Id: pdo_dblib.c,v 1.8 2005/07/20 05:27:27 wez Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include "config.h"
@@ -114,15 +114,19 @@
        pdo_dblib_err *einfo;
        TSRMLS_FETCH();
 
-       einfo = (pdo_dblib_err*)dbgetuserdata(dbproc);
-       if (!einfo) einfo = &DBLIB_G(err);
+       if (severity) {
+               einfo = (pdo_dblib_err*)dbgetuserdata(dbproc);
+               if (!einfo) {
+                       einfo = &DBLIB_G(err);
+               }
+
+               if (einfo->lastmsg) {
+                       efree(einfo->lastmsg);
+               }
 
-       if (einfo->lastmsg) {
-               efree(einfo->lastmsg);
+               einfo->lastmsg = estrdup(msgtext);
        }
 
-       einfo->lastmsg = estrdup(msgtext);
-
 #if 0
        php_error_docref(NULL TSRMLS_CC, E_WARNING, "dblib message: %s 
(severity %d)", msgtext, severity);
 #endif

http://cvs.php.net/co.php/php-src/ext/pdo_dblib/tests/common.phpt?r=1.1&p=1
Index: php-src/ext/pdo_dblib/tests/common.phpt
+++ php-src/ext/pdo_dblib/tests/common.phpt
--TEST--
DBLIB
--SKIPIF--
<?php # vim:ft=php
if (!extension_loaded('pdo_dblib')) print 'skip'; ?>
--REDIRECTTEST--
# magic auto-configuration

$config = array(
        'TESTS' => 'ext/pdo/tests'
);
        

if (false !== getenv('PDO_DBLIB_TEST_DSN')) {
        # user set them from their shell
        $config['ENV']['PDOTEST_DSN'] = getenv('PDO_DBLIB_TEST_DSN');
        $config['ENV']['PDOTEST_USER'] = getenv('PDO_DBLIB_TEST_USER');
        $config['ENV']['PDOTEST_PASS'] = getenv('PDO_DBLIB_TEST_PASS');
        if (false !== getenv('PDO_DBLIB_TEST_ATTR')) {
                $config['ENV']['PDOTEST_ATTR'] = getenv('PDO_DBLIB_TEST_ATTR');
        }
} 
return $config;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to