Author: ahristov
Date: 2007-03-16 16:02:21 +0100 (Fri, 16 Mar 2007)
New Revision: 178
Modified:
trunk/ext/mysqli/mysqlnd/mysqlnd.h
trunk/ext/mysqli/mysqlnd/mysqlnd_ps_codec.c
Log:
BLOB (binary charset), should not be converted from utf8 to utf16
but returned as is - as string.
Modified: trunk/ext/mysqli/mysqlnd/mysqlnd.h
===================================================================
--- trunk/ext/mysqli/mysqlnd/mysqlnd.h 2007-03-16 14:44:50 UTC (rev 177)
+++ trunk/ext/mysqli/mysqlnd/mysqlnd.h 2007-03-16 15:02:21 UTC (rev 178)
@@ -249,6 +249,9 @@
#define IS_NUM(t) ((t) <= FIELD_TYPE_INT24 || (t) == FIELD_TYPE_YEAR || (t) ==
FIELD_TYPE_NEWDECIMAL)
+/* see mysqlnd_charset.c for more information */
+#define MYSQLND_BINARY_CHARSET_NR 63
+
/*
/-----> CONN_CLOSE <---------------\
| ^ \
Modified: trunk/ext/mysqli/mysqlnd/mysqlnd_ps_codec.c
===================================================================
--- trunk/ext/mysqli/mysqlnd/mysqlnd_ps_codec.c 2007-03-16 14:44:50 UTC (rev 177)
+++ trunk/ext/mysqli/mysqlnd/mysqlnd_ps_codec.c 2007-03-16 15:02:21 UTC (rev 178)
@@ -66,14 +66,17 @@
+/* {{{ ps_fetch_null */
static
void ps_fetch_null(zval *zv, const MYSQLND_FIELD * const field,
uint pack_len, zend_uchar **row TSRMLS_DC)
{
ZVAL_NULL(zv);
}
+/* }}} */
+/* {{{ ps_fetch_int8 */
static
void ps_fetch_int8(zval *zv, const MYSQLND_FIELD * const field,
uint pack_len, zend_uchar **row TSRMLS_DC)
@@ -86,8 +89,10 @@
}
(*row)++;
}
+/* }}} */
+/* {{{ ps_fetch_int16 */
static
void ps_fetch_int16(zval *zv, const MYSQLND_FIELD * const field,
uint pack_len, zend_uchar **row TSRMLS_DC)
@@ -99,10 +104,13 @@
}
(*row)+= 2;
}
+/* }}} */
-static void ps_fetch_int32(zval *zv, const MYSQLND_FIELD * const field,
- uint pack_len, zend_uchar **row TSRMLS_DC)
+/* {{{ ps_fetch_int32 */
+static
+void ps_fetch_int32(zval *zv, const MYSQLND_FIELD * const field,
+ uint pack_len, zend_uchar **row TSRMLS_DC)
{
if (field->flags & UNSIGNED_FLAG) {
my_uint32 uval;
@@ -133,8 +141,10 @@
}
(*row)+= 4;
}
+/* }}} */
+/* {{{ ps_fetch_int64 */
static
void ps_fetch_int64(zval *zv, const MYSQLND_FIELD * const field,
uint pack_len, zend_uchar **row TSRMLS_DC)
@@ -170,8 +180,10 @@
}
(*row)+= 8;
}
+/* }}} */
+/* {{{ ps_fetch_float */
static
void ps_fetch_float(zval *zv, const MYSQLND_FIELD * const field,
uint pack_len, zend_uchar **row TSRMLS_DC)
@@ -181,8 +193,10 @@
ZVAL_DOUBLE(zv, value);
(*row)+= 4;
}
+/* }}} */
+/* {{{ ps_fetch_double */
static
void ps_fetch_double(zval *zv, const MYSQLND_FIELD * const field,
uint pack_len, zend_uchar **row TSRMLS_DC)
@@ -192,9 +206,10 @@
ZVAL_DOUBLE(zv, value);
(*row)+= 8;
}
+/* }}} */
-
+/* {{{ ps_fetch_time */
static
void ps_fetch_time(zval *zv, const MYSQLND_FIELD * const field,
uint pack_len, zend_uchar **row TSRMLS_DC)
@@ -241,8 +256,10 @@
ZVAL_UTF8_STRINGL(zv, to, length, ZSTR_AUTOFREE);
#endif
}
+/* }}} */
+/* {{{ ps_fetch_date */
static
void ps_fetch_date(zval *zv, const MYSQLND_FIELD * const field,
uint pack_len, zend_uchar **row TSRMLS_DC)
@@ -282,8 +299,10 @@
ZVAL_UTF8_STRINGL(zv, to, length, ZSTR_AUTOFREE);
#endif
}
+/* }}} */
+/* {{{ ps_fetch_datetime */
static
void ps_fetch_datetime(zval *zv, const MYSQLND_FIELD * const field,
uint pack_len, zend_uchar **row TSRMLS_DC)
@@ -331,8 +350,10 @@
ZVAL_UTF8_STRINGL(zv, to, length, ZSTR_AUTOFREE);
#endif
}
+/* }}} */
+/* {{{ ps_fetch_string */
static
void ps_fetch_string(zval *zv, const MYSQLND_FIELD * const field,
uint pack_len, zend_uchar **row TSRMLS_DC)
@@ -346,11 +367,16 @@
#if PHP_MAJOR_VERSION < 6
ZVAL_STRINGL(zv, (char *)*row, length, 1);
#else
- ZVAL_UTF8_STRINGL(zv, (char*)*row, length, ZSTR_DUPLICATE);
+ if (field->charsetnr == MYSQLND_BINARY_CHARSET_NR) {
+ ZVAL_STRINGL(zv, (char *)*row, length, 1);
+ } else {
+ ZVAL_UTF8_STRINGL(zv, (char*)*row, length, ZSTR_DUPLICATE);
+ }
#endif
(*row) += length;
}
+/* }}} */
@@ -461,6 +487,7 @@
/* }}} */
+/* {{{ mysqlnd_stmt_execute_store_params */
void
mysqlnd_stmt_execute_store_params(MYSQLND_STMT *stmt, zend_uchar **buf, zend_uchar **p,
size_t *buf_len, unsigned int null_byte_offset)
@@ -606,8 +633,10 @@
}
}
}
+/* }}} */
+/* {{{ mysqlnd_stmt_execute_generate_request */
zend_uchar* mysqlnd_stmt_execute_generate_request(MYSQLND_STMT *stmt, size_t
*request_len, zend_bool *free_buffer)
{
zend_uchar *p = stmt->cmd_buffer.buffer,
@@ -643,3 +672,4 @@
*request_len = (p - cmd_buffer);
return cmd_buffer;
}
+/* }}} */
| Thread |
|---|
| • PHP mysqlnd svn commit: r178 - trunk/ext/mysqli/mysqlnd | ahristov | 16 Mar |