svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/pdo_dblib/dblib_stmt.c trunk/ext/pdo_dblib/dblib_stmt.c
| From: | Felipe Pena | Date: | Sat, 05 Mar 2011 23:07:45 +0000 |
| Subject: | svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/pdo_dblib/dblib_stmt.c trunk/ext/pdo_dblib/dblib_stmt.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-64637@lists.php.net to get a copy of this message | ||
felipe Sat, 05 Mar 2011 23:07:45 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=308948
Log:
- Fixed bug #54167 (PDO_DBLIB returns null on SQLUNIQUE field)
# initial patch by: mjh at hodginsmedia dot com (5.3)
# trunk version by me
Bug: http://bugs.php.net/54167 (Open) PDO_DBLIB returns null
on SQLUNIQUE field
Changed paths:
U php/php-src/branches/PHP_5_3/NEWS
U php/php-src/branches/PHP_5_3/ext/pdo_dblib/dblib_stmt.c
U php/php-src/trunk/ext/pdo_dblib/dblib_stmt.c
Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS 2011-03-05 22:32:53 UTC (rev 308947)
+++ php/php-src/branches/PHP_5_3/NEWS 2011-03-05 23:07:45 UTC (rev 308948)
@@ -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:
Modified: php/php-src/branches/PHP_5_3/ext/pdo_dblib/dblib_stmt.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/pdo_dblib/dblib_stmt.c 2011-03-05 22:32:53 UTC (rev 308947)
+++ php/php-src/branches/PHP_5_3/ext/pdo_dblib/dblib_stmt.c 2011-03-05 23:07:45 UTC (rev 308948)
@@ -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_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 @@
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));
Modified: php/php-src/trunk/ext/pdo_dblib/dblib_stmt.c
===================================================================
--- php/php-src/trunk/ext/pdo_dblib/dblib_stmt.c 2011-03-05 22:32:53 UTC (rev 308947)
+++ php/php-src/trunk/ext/pdo_dblib/dblib_stmt.c 2011-03-05 23:07:45 UTC (rev 308948)
@@ -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"
@@ -224,6 +225,24 @@
*ptr = tmp_ptr;
break;
}
+#ifdef SQLUNIQUE
+ case SQLUNIQUE: {
+#else
+ case 36: { /* FreeTDS hack, also used by ext/mssql */
+#endif
+ *len = 36+1;
+ tmp_ptr = emalloc(*len + 1);
+
+ /* uniqueidentifier is a 16-byte binary number, convert to 32 char hex string */
+#ifdef SQLUNIQUE
+ *len = dbconvert(NULL, SQLUNIQUE, ptr, *len, SQLCHAR, tmp_ptr, *len);
+#else
+ *len = dbconvert(NULL, 36, ptr, *len, SQLCHAR, tmp_ptr, *len);
+#endif
+ php_strtoupper(tmp_ptr, *len);
+ *ptr = tmp_ptr;
+ break;
+ }
default:
if (dbwillconvert(coltype, SQLCHAR)) {
tmp_len = 32 + (2 * (*len));