cvs: php-src /ext/pdo_dblib dblib_driver.c dblib_stmt.c pdo_dblib.c /ext/pdo_dblib/tests common.phpt

From: Date: Wed, 20 Jul 2005 05:27:27 +0000
Subject: cvs: php-src /ext/pdo_dblib dblib_driver.c dblib_stmt.c pdo_dblib.c /ext/pdo_dblib/tests common.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-33009@lists.php.net to get a copy of this message
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;

« previous php.cvs (#33009) next »