wez Wed Jul 20 01:27:27 2005 EDT
Added files:
/php-src/ext/pdo_dblib/testscommon.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.8Tue Jul 12 08:16:02 2005
+++ php-src/ext/pdo_dblib/dblib_driver.cWed 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);
+ va