summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Pena <felipe@php.net>2011-03-05 23:07:45 +0000
committerFelipe Pena <felipe@php.net>2011-03-05 23:07:45 +0000
commit2f3f629fd4a6b80d2c12fb1b13c955cbefd9b805 (patch)
tree6cbb6602c5b2d22e65edca480f827a53da4f54f5
parentbf5a3715f41053a1582d399ea73d0a6a6daf6dd3 (diff)
downloadphp-git-2f3f629fd4a6b80d2c12fb1b13c955cbefd9b805.tar.gz
- Fixed bug #54167 (PDO_DBLIB returns null on SQLUNIQUE field)
# initial patch by: mjh at hodginsmedia dot com (5.3) # trunk version by me
-rw-r--r--NEWS3
-rw-r--r--ext/pdo_dblib/dblib_stmt.c19
2 files changed, 21 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index 161d8c830c..54e097817c 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,9 @@
PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2011, PHP 5.3.6
+- PDO DBLib driver:
+ . Fixed bug #54167 (PDO_DBLIB returns null on SQLUNIQUE field).
+ (mjh at hodginsmedia dot com, Felipe)
03 Mar 2011, PHP 5.3.6RC2
- Zend Engine:
diff --git a/ext/pdo_dblib/dblib_stmt.c b/ext/pdo_dblib/dblib_stmt.c
index 2f771609b7..e7c8d9e9db 100644
--- a/ext/pdo_dblib/dblib_stmt.c
+++ b/ext/pdo_dblib/dblib_stmt.c
@@ -25,6 +25,7 @@
#include "php.h"
#include "php_ini.h"
+#include "ext/standard/php_string.h"
#include "ext/standard/info.h"
#include "pdo/php_pdo.h"
#include "pdo/php_pdo_driver.h"
@@ -67,7 +68,6 @@ static int pdo_dblib_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC)
static int pdo_dblib_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC)
{
- pdo_dbh_t *dbh = stmt->dbh;
pdo_dblib_stmt *S = (pdo_dblib_stmt*)stmt->driver_data;
pdo_dblib_db_handle *H = S->H;
RETCODE resret, ret;
@@ -174,6 +174,23 @@ static int pdo_dblib_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC)
val->len = spprintf(&val->data, 0, "%.4f", money_value);
}
break;
+#ifdef SQLUNIQUE
+ case SQLUNIQUE: {
+#else
+ case 36: { /* FreeTDS hack, also used by ext/mssql */
+#endif
+ val->len = 36+1;
+ val->data = emalloc(val->len + 1);
+
+ /* uniqueidentifier is a 16-byte binary number, convert to 32 char hex string */
+#ifdef SQLUNIQUE
+ val->len = dbconvert(NULL, SQLUNIQUE, dbdata(H->link, i+1), dbdatlen(H->link, i+1), SQLCHAR, val->data, val->len);
+#else
+ val->len = dbconvert(NULL, 36, dbdata(H->link, i+1), dbdatlen(H->link, i+1), SQLCHAR, val->data, val->len);
+#endif
+ php_strtoupper(val->data, val->len);
+ break;
+ }
default:
if (dbwillconvert(S->cols[i].coltype, SQLCHAR)) {
val->len = 32 + (2 * dbdatlen(H->link, i+1));