]> granicus.if.org Git - php/commitdiff
remove old unicode code, that is was compiled out by using a macro
authorandrey <andrey@php.net>
Tue, 25 Sep 2012 14:36:21 +0000 (16:36 +0200)
committerandrey <andrey@php.net>
Tue, 25 Sep 2012 14:36:21 +0000 (16:36 +0200)
14 files changed:
ext/mysqlnd/mysqlnd.c
ext/mysqlnd/mysqlnd_auth.c
ext/mysqlnd/mysqlnd_bt.c
ext/mysqlnd/mysqlnd_enum_n_def.h
ext/mysqlnd/mysqlnd_priv.h
ext/mysqlnd/mysqlnd_ps.c
ext/mysqlnd/mysqlnd_ps_codec.c
ext/mysqlnd/mysqlnd_result.c
ext/mysqlnd/mysqlnd_result_meta.c
ext/mysqlnd/mysqlnd_statistics.c
ext/mysqlnd/mysqlnd_structs.h
ext/mysqlnd/mysqlnd_wireprotocol.c
ext/mysqlnd/mysqlnd_wireprotocol.h
ext/mysqlnd/php_mysqlnd.c

index f7f3245a2c42d54d1c6a08fc61d707bcd9ee922e..65f6a1836cb0531d6fc41a8768ed39a77cccdeb9 100644 (file)
@@ -456,11 +456,7 @@ mysqlnd_switch_to_ssl_if_needed(
        if (options->charset_name && (charset = mysqlnd_find_charset_name(options->charset_name))) {
                auth_packet->charset_no = charset->nr;
        } else {
-#if MYSQLND_UNICODE
-               auth_packet->charset_no = 200;/* utf8 - swedish collation, check mysqlnd_charset.c */
-#else
                auth_packet->charset_no = greet_packet->charset_no;
-#endif
        }
 
 #ifdef MYSQLND_SSL_SUPPORTED
@@ -1030,13 +1026,6 @@ MYSQLND_METHOD(mysqlnd_conn_data, connect)(MYSQLND_CONN_DATA * conn,
 
                mysqlnd_local_infile_default(conn);
 
-#if MYSQLND_UNICODE
-               {
-                       unsigned int as_unicode = 1;
-                       conn->m->set_client_option(conn, MYSQLND_OPT_NUMERIC_AND_DATETIME_AS_UNICODE, (char *)&as_unicode TSRMLS_CC);
-                       DBG_INF("unicode set");
-               }
-#endif
                if (FAIL == conn->m->execute_init_commands(conn TSRMLS_CC)) {
                        goto err;
                }
@@ -2283,11 +2272,6 @@ MYSQLND_METHOD(mysqlnd_conn_data, set_client_option)(MYSQLND_CONN_DATA * const c
                case MYSQLND_OPT_NET_READ_BUFFER_SIZE:
                        ret = conn->net->data->m.set_client_option(conn->net, option, value TSRMLS_CC);
                        break;
-#if MYSQLND_UNICODE
-               case MYSQLND_OPT_NUMERIC_AND_DATETIME_AS_UNICODE:
-                       conn->options->numeric_and_datetime_as_unicode = *(unsigned int*) value;
-                       break;
-#endif
 #ifdef MYSQLND_STRING_TO_INT_CONVERSION
                case MYSQLND_OPT_INT_AND_FLOAT_NATIVE:
                        conn->options->int_and_float_native = *(unsigned int*) value;
index 295b6a338bb28ff055252394e22f1fefd07f1312..d4373cf6484e4154854efacc8c803b96bf74c668 100644 (file)
@@ -88,11 +88,7 @@ mysqlnd_auth_handshake(MYSQLND_CONN_DATA * conn,
                if (options->charset_name && (charset = mysqlnd_find_charset_name(options->charset_name))) {
                        auth_packet->charset_no = charset->nr;
                } else {
-#if MYSQLND_UNICODE
-                       auth_packet->charset_no = 200;/* utf8 - swedish collation, check mysqlnd_charset.c */
-#else
                        auth_packet->charset_no = server_charset_no;
-#endif
                }
 
                auth_packet->send_auth_data = TRUE;
index 937518405a383967bf2e2f9963d20970798d2b3c..73cf1f5a617eeb42f95130931cbd1ffac9dec3df 100644 (file)
 
 /* Follows code borrowed from zend_builtin_functions.c because the functions there are static */
 
-#if MYSQLND_UNICODE
-/* {{{ gettraceasstring() macros */
-#define TRACE_APPEND_CHR(chr)                                            \
-       *str = (char*)erealloc(*str, *len + 1 + 1);                          \
-       (*str)[(*len)++] = chr
-
-#define TRACE_APPEND_STRL(val, vallen)                                   \
-       {                                                                    \
-               int l = vallen;                                                  \
-               *str = (char*)erealloc(*str, *len + l + 1);                      \
-               memcpy((*str) + *len, val, l);                                   \
-               *len += l;                                                       \
-       }
-
-#define TRACE_APPEND_USTRL(val, vallen) \
-       { \
-               zval tmp, copy; \
-               int use_copy; \
-               ZVAL_UNICODEL(&tmp, val, vallen, 1); \
-               zend_make_printable_zval(&tmp, &copy, &use_copy); \
-               TRACE_APPEND_STRL(Z_STRVAL(copy), Z_STRLEN(copy)); \
-               zval_dtor(&copy); \
-               zval_dtor(&tmp); \
-       }
-
-#define TRACE_APPEND_ZVAL(zv) \
-       if (Z_TYPE_P((zv)) == IS_UNICODE) { \
-               zval copy; \
-               int use_copy; \
-               zend_make_printable_zval((zv), &copy, &use_copy); \
-               TRACE_APPEND_STRL(Z_STRVAL(copy), Z_STRLEN(copy)); \
-               zval_dtor(&copy); \
-       } else { \
-               TRACE_APPEND_STRL(Z_STRVAL_P((zv)), Z_STRLEN_P((zv))); \
-       }
-
-#define TRACE_APPEND_STR(val)                                            \
-       TRACE_APPEND_STRL(val, sizeof(val)-1)
-
-#define TRACE_APPEND_KEY(key)                                            \
-       if (zend_ascii_hash_find(ht, key, sizeof(key), (void**)&tmp) == SUCCESS) { \
-               if (Z_TYPE_PP(tmp) == IS_UNICODE) { \
-                       zval copy; \
-                       int use_copy; \
-                       zend_make_printable_zval(*tmp, &copy, &use_copy); \
-                       TRACE_APPEND_STRL(Z_STRVAL(copy), Z_STRLEN(copy)); \
-                       zval_dtor(&copy); \
-               } else { \
-               TRACE_APPEND_STRL(Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp));           \
-               } \
-       }
-/* }}} */
-
-
-/* {{{ mysqlnd_build_trace_args */
-static int mysqlnd_build_trace_args(zval **arg TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key)
-{
-       char **str;
-       int *len;
-
-       str = va_arg(args, char**);
-       len = va_arg(args, int*);
-
-       /* the trivial way would be to do:
-        * conver_to_string_ex(arg);
-        * append it and kill the now tmp arg.
-        * but that could cause some E_NOTICE and also damn long lines.
-        */
-
-       switch (Z_TYPE_PP(arg)) {
-               case IS_NULL:
-                       TRACE_APPEND_STR("NULL, ");
-                       break;
-               case IS_STRING: {
-                       int l_added;
-                       TRACE_APPEND_CHR('\'');
-                       if (Z_STRLEN_PP(arg) > 15) {
-                               TRACE_APPEND_STRL(Z_STRVAL_PP(arg), 15);
-                               TRACE_APPEND_STR("...', ");
-                               l_added = 15 + 6 + 1; /* +1 because of while (--l_added) */
-                       } else {
-                               l_added = Z_STRLEN_PP(arg);
-                               TRACE_APPEND_STRL(Z_STRVAL_PP(arg), l_added);
-                               TRACE_APPEND_STR("', ");
-                               l_added += 3 + 1;
-                       }
-                       while (--l_added) {
-                               if ((unsigned char)(*str)[*len - l_added] < 32) {
-                                       (*str)[*len - l_added] = '?';
-                               }
-                       }
-                       break;
-               }
-               case IS_UNICODE: {
-                       int l_added;
-
-                       /*
-                        * We do not want to apply current error mode here, since
-                        * zend_make_printable_zval() uses output encoding converter.
-                        * Temporarily set output encoding converter to escape offending
-                        * chars with \uXXXX notation.
-                        */
-                       zend_set_converter_error_mode(ZEND_U_CONVERTER(UG(output_encoding_conv)), ZEND_FROM_UNICODE, ZEND_CONV_ERROR_ESCAPE_JAVA);
-                       TRACE_APPEND_CHR('\'');
-                       if (Z_USTRLEN_PP(arg) > 15) {
-                               TRACE_APPEND_USTRL(Z_USTRVAL_PP(arg), 15);
-                               TRACE_APPEND_STR("...', ");
-                               l_added = 15 + 6 + 1; /* +1 because of while (--l_added) */
-                       } else {
-                               l_added = Z_USTRLEN_PP(arg);
-                               TRACE_APPEND_USTRL(Z_USTRVAL_PP(arg), l_added);
-                               TRACE_APPEND_STR("', ");
-                               l_added += 3 + 1;
-                       }
-                       /*
-                        * Reset output encoding converter error mode.
-                        */
-                       zend_set_converter_error_mode(ZEND_U_CONVERTER(UG(output_encoding_conv)), ZEND_FROM_UNICODE, UG(from_error_mode));
-                       while (--l_added) {
-                               if ((unsigned char)(*str)[*len - l_added] < 32) {
-                                       (*str)[*len - l_added] = '?';
-                               }
-                       }
-                       break;
-               }
-               case IS_BOOL:
-                       if (Z_LVAL_PP(arg)) {
-                               TRACE_APPEND_STR("true, ");
-                       } else {
-                               TRACE_APPEND_STR("false, ");
-                       }
-                       break;
-               case IS_RESOURCE:
-                       TRACE_APPEND_STR("Resource id #");
-                       /* break; */
-               case IS_LONG: {
-                       long lval = Z_LVAL_PP(arg);
-                       char s_tmp[MAX_LENGTH_OF_LONG + 1];
-                       int l_tmp = zend_sprintf(s_tmp, "%ld", lval);  /* SAFE */
-                       TRACE_APPEND_STRL(s_tmp, l_tmp);
-                       TRACE_APPEND_STR(", ");
-                       break;
-               }
-               case IS_DOUBLE: {
-                       double dval = Z_DVAL_PP(arg);
-                       char *s_tmp;
-                       int l_tmp;
-
-                       s_tmp = emalloc(MAX_LENGTH_OF_DOUBLE + EG(precision) + 1);
-                       l_tmp = zend_sprintf(s_tmp, "%.*G", (int) EG(precision), dval);  /* SAFE */
-                       TRACE_APPEND_STRL(s_tmp, l_tmp);
-                       /* %G already handles removing trailing zeros from the fractional part, yay */
-                       efree(s_tmp);
-                       TRACE_APPEND_STR(", ");
-                       break;
-               }
-               case IS_ARRAY:
-                       TRACE_APPEND_STR("Array, ");
-                       break;
-               case IS_OBJECT: {
-                       zval tmp;
-                       zstr class_name;
-                       zend_uint class_name_len;
-                       int dup;
-
-                       TRACE_APPEND_STR("Object(");
-
-                       dup = zend_get_object_classname(*arg, &class_name, &class_name_len TSRMLS_CC);
-
-                       ZVAL_UNICODEL(&tmp, class_name.u, class_name_len, 1);
-                       convert_to_string_with_converter(&tmp, ZEND_U_CONVERTER(UG(output_encoding_conv)));
-                       TRACE_APPEND_STRL(Z_STRVAL(tmp), Z_STRLEN(tmp));
-                       zval_dtor(&tmp);
-
-                       if(!dup) {
-                               efree(class_name.v);
-                       }
-
-                       TRACE_APPEND_STR("), ");
-                       break;
-               }
-               default:
-                       break;
-       }
-       return ZEND_HASH_APPLY_KEEP;
-}
-/* }}} */
-
-
-static int mysqlnd_build_trace_string(zval **frame TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key) /* {{{ */
-{
-       char *s_tmp, **str;
-       int *len, *num;
-       long line;
-       HashTable *ht = Z_ARRVAL_PP(frame);
-       zval **file, **tmp;
-       uint * level;
-
-       level = va_arg(args, uint *);
-       str = va_arg(args, char**);
-       len = va_arg(args, int*);
-       num = va_arg(args, int*);
-
-       if (!*level) {
-               return ZEND_HASH_APPLY_KEEP;
-       }
-       --*level;
-
-       s_tmp = emalloc(1 + MAX_LENGTH_OF_LONG + 1 + 1);
-       sprintf(s_tmp, "#%d ", (*num)++);
-       TRACE_APPEND_STRL(s_tmp, strlen(s_tmp));
-       efree(s_tmp);
-       if (zend_ascii_hash_find(ht, "file", sizeof("file"), (void**)&file) == SUCCESS) {
-               if (zend_ascii_hash_find(ht, "line", sizeof("line"), (void**)&tmp) == SUCCESS) {
-                       line = Z_LVAL_PP(tmp);
-               } else {
-                       line = 0;
-               }
-               TRACE_APPEND_ZVAL(*file);
-               s_tmp = emalloc(MAX_LENGTH_OF_LONG + 2 + 1);
-               sprintf(s_tmp, "(%ld): ", line);
-               TRACE_APPEND_STRL(s_tmp, strlen(s_tmp));
-               efree(s_tmp);
-       } else {
-               TRACE_APPEND_STR("[internal function]: ");
-       }
-       TRACE_APPEND_KEY("class");
-       TRACE_APPEND_KEY("type");
-       TRACE_APPEND_KEY("function");
-       TRACE_APPEND_CHR('(');
-       if (zend_ascii_hash_find(ht, "args", sizeof("args"), (void**)&tmp) == SUCCESS) {
-               int last_len = *len;
-               zend_hash_apply_with_arguments(Z_ARRVAL_PP(tmp) TSRMLS_CC, (apply_func_args_t)mysqlnd_build_trace_args, 2, str, len);
-               if (last_len != *len) {
-                       *len -= 2; /* remove last ', ' */
-               }
-       }
-       TRACE_APPEND_STR(")\n");
-       return ZEND_HASH_APPLY_KEEP;
-}
-/* }}} */
-
-
-#else /* PHP 5*/
-
-
 /* {{{ gettraceasstring() macros */
 #define TRACE_APPEND_CHR(chr)                                            \
        *str = (char*)erealloc(*str, *len + 1 + 1);                          \
@@ -295,7 +49,8 @@ static int mysqlnd_build_trace_string(zval **frame TSRMLS_DC, int num_args, va_l
 /* }}} */
 
 
-static int mysqlnd_build_trace_args(zval **arg TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key) /* {{{ */
+static int
+mysqlnd_build_trace_args(zval **arg TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key) /* {{{ */
 {
        char **str;
        int *len;
@@ -391,7 +146,8 @@ static int mysqlnd_build_trace_args(zval **arg TSRMLS_DC, int num_args, va_list
 }
 /* }}} */
 
-static int mysqlnd_build_trace_string(zval **frame TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key) /* {{{ */
+static int
+mysqlnd_build_trace_string(zval **frame TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key) /* {{{ */
 {
        char *s_tmp, **str;
        int *len, *num;
@@ -442,10 +198,10 @@ static int mysqlnd_build_trace_string(zval **frame TSRMLS_DC, int num_args, va_l
        return ZEND_HASH_APPLY_KEEP;
 }
 /* }}} */
-#endif
 
 
-PHPAPI char * mysqlnd_get_backtrace(uint max_levels, size_t * length TSRMLS_DC)
+PHPAPI char *
+mysqlnd_get_backtrace(uint max_levels, size_t * length TSRMLS_DC)
 {
        zval *trace;
        char *res = estrdup(""), **str = &res, *s_tmp;
index 60e53b3c60b4dbf6034d6a7e91eb677514b1db0b..26ad8815c16d62986a7abfe2a4a7f2b55f827cb3 100644 (file)
@@ -167,9 +167,7 @@ typedef enum mysqlnd_option
        MYSQL_PLUGIN_DIR,
        MYSQL_DEFAULT_AUTH,
        MYSQL_SERVER_PUBLIC_KEY,
-#if MYSQLND_UNICODE
-       MYSQLND_OPT_NUMERIC_AND_DATETIME_AS_UNICODE = 200,
-#endif
+       MYSQLND_DEPRECATED_ENUM1 = 200,
 #ifdef MYSQLND_STRING_TO_INT_CONVERSION
        MYSQLND_OPT_INT_AND_FLOAT_NATIVE = 201,
 #endif
index 0d5aef55d4e8b5438229882c76fb16730ed753c7..8fe74cb75813adf19b8e8366f01affc2c286ca3a 100644 (file)
 #define Z_DELREF_PP(ppz)                       Z_DELREF_P(*(ppz))
 #endif
 
-#if PHP_MAJOR_VERSION >= 6
-#define MYSQLND_UNICODE 1
-#else
-#define MYSQLND_UNICODE 0
-#endif
-
 #ifdef ZTS
 #include "TSRM.h"
 #endif
 #define pestrndup(s, length, persistent) ((persistent)?zend_strndup((s),(length)):estrndup((s),(length)))
 #endif
 
-#if MYSQLND_UNICODE
-#define mysqlnd_array_init(arg, field_count) \
-{ \
-       ALLOC_HASHTABLE_REL(Z_ARRVAL_P(arg));\
-       zend_u_hash_init(Z_ARRVAL_P(arg), (field_count), NULL, ZVAL_PTR_DTOR, 0, 0);\
-       Z_TYPE_P(arg) = IS_ARRAY;\
-}
-#else
 #define mysqlnd_array_init(arg, field_count) \
 { \
        ALLOC_HASHTABLE_REL(Z_ARRVAL_P(arg));\
        zend_hash_init(Z_ARRVAL_P(arg), (field_count), NULL, ZVAL_PTR_DTOR, 0); \
        Z_TYPE_P(arg) = IS_ARRAY;\
 }
-#endif
 
 #define MYSQLND_STR_W_LEN(str)  str, (sizeof(str) - 1)
 
 #define CONN_SET_STATE(c, s)   (c)->m->set_state((c), (s) TSRMLS_CC)
 
 /* PS stuff */
-typedef void (*ps_field_fetch_func)(zval *zv, const MYSQLND_FIELD * const field,
-                                                                       unsigned int pack_len, zend_uchar **row,
-                                                                       zend_bool everything_as_unicode TSRMLS_DC);
+typedef void (*ps_field_fetch_func)(zval * zv, const MYSQLND_FIELD * const field, unsigned int pack_len, zend_uchar ** row TSRMLS_DC);
 struct st_mysqlnd_perm_bind {
        ps_field_fetch_func func;
        /* should be signed int */
@@ -200,16 +183,14 @@ PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_res);
 PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_protocol);
 PHPAPI extern MYSQLND_CLASS_METHOD_TABLE_NAME_FORWARD(mysqlnd_net);
 
-enum_func_status mysqlnd_handle_local_infile(MYSQLND_CONN_DATA * conn, const char *filename, zend_bool *is_warning TSRMLS_DC);
+enum_func_status mysqlnd_handle_local_infile(MYSQLND_CONN_DATA * conn, const char * filename, zend_bool * is_warning TSRMLS_DC);
 
 
 
 void _mysqlnd_init_ps_subsystem();/* This one is private, mysqlnd_library_init() will call it */
 void _mysqlnd_init_ps_fetch_subsystem();
 
-void ps_fetch_from_1_to_8_bytes(zval *zv, const MYSQLND_FIELD * const field,
-                                                               unsigned int pack_len, zend_uchar **row, zend_bool as_unicode,
-                                                               unsigned int byte_count TSRMLS_DC);
+void ps_fetch_from_1_to_8_bytes(zval * zv, const MYSQLND_FIELD * const field, unsigned int pack_len, zend_uchar ** row, unsigned int byte_count TSRMLS_DC);
 
 void mysqlnd_plugin_subsystem_init(TSRMLS_D);
 void mysqlnd_plugin_subsystem_end(TSRMLS_D);
index 1b48ba1d7b23c457f4eeedf1c33c5f3a614dd5b3..d5e7d3ffba886c441e304d48e169472294a65087 100644 (file)
@@ -734,7 +734,6 @@ mysqlnd_stmt_fetch_row_buffered(MYSQLND_RES *result, void *param, unsigned int f
                                                                                                current_row,
                                                                                                meta->field_count,
                                                                                                meta->fields,
-                                                                                               result->conn->options->numeric_and_datetime_as_unicode,
                                                                                                result->conn->options->int_and_float_native,
                                                                                                result->conn->stats TSRMLS_CC);
                                if (PASS != rc) {
@@ -853,7 +852,6 @@ mysqlnd_stmt_fetch_row_unbuffered(MYSQLND_RES *result, void *param, unsigned int
                                                                        result->unbuf->last_row_data,
                                                                        row_packet->field_count,
                                                                        row_packet->fields_metadata,
-                                                                       result->conn->options->numeric_and_datetime_as_unicode,
                                                                        result->conn->options->int_and_float_native,
                                                                        result->conn->stats TSRMLS_CC))
                        {
@@ -871,14 +869,7 @@ mysqlnd_stmt_fetch_row_unbuffered(MYSQLND_RES *result, void *param, unsigned int
                                        zval_dtor(stmt->result_bind[i].zv);
 #endif
                                        if (IS_NULL != (Z_TYPE_P(stmt->result_bind[i].zv) = Z_TYPE_P(data)) ) {
-                                               if (
-                                                       (Z_TYPE_P(data) == IS_STRING
-#if MYSQLND_UNICODE
-                                                       || Z_TYPE_P(data) == IS_UNICODE
-#endif
-                                                       )
-                                                        && (result->meta->fields[i].max_length < (unsigned long) Z_STRLEN_P(data)))
-                                               {
+                                               if ((Z_TYPE_P(data) == IS_STRING) && (result->meta->fields[i].max_length < (unsigned long) Z_STRLEN_P(data))) {
                                                        result->meta->fields[i].max_length = Z_STRLEN_P(data);
                                                }
                                                stmt->result_bind[i].zv->value = data->value;
@@ -1037,7 +1028,6 @@ mysqlnd_fetch_stmt_row_cursor(MYSQLND_RES *result, void *param, unsigned int fla
                                                                          result->unbuf->last_row_data,
                                                                          row_packet->field_count,
                                                                          row_packet->fields_metadata,
-                                                                         result->conn->options->numeric_and_datetime_as_unicode,
                                                                          result->conn->options->int_and_float_native,
                                                                          result->conn->stats TSRMLS_CC))
                        {
@@ -1058,13 +1048,7 @@ mysqlnd_fetch_stmt_row_cursor(MYSQLND_RES *result, void *param, unsigned int fla
                                        DBG_INF_FMT("i=%u bound_var=%p type=%u refc=%u", i, stmt->result_bind[i].zv,
                                                                Z_TYPE_P(data), Z_REFCOUNT_P(stmt->result_bind[i].zv));
                                        if (IS_NULL != (Z_TYPE_P(stmt->result_bind[i].zv) = Z_TYPE_P(data))) {
-                                               if ((Z_TYPE_P(data) == IS_STRING
-#if MYSQLND_UNICODE
-                                                       || Z_TYPE_P(data) == IS_UNICODE
-#endif
-                                                       )
-                                                        && (result->meta->fields[i].max_length < (unsigned long) Z_STRLEN_P(data)))
-                                               {
+                                               if ((Z_TYPE_P(data) == IS_STRING) && (result->meta->fields[i].max_length < (unsigned long) Z_STRLEN_P(data))) {
                                                        result->meta->fields[i].max_length = Z_STRLEN_P(data);
                                                }
                                                stmt->result_bind[i].zv->value = data->value;
index ce0736fdffaeabdab42dad2661567fde0d40ad5c..95945cf670185fbb748dc9f5ec32f53c91816421 100644 (file)
@@ -53,9 +53,9 @@ struct st_mysqlnd_perm_bind mysqlnd_ps_fetch_functions[MYSQL_TYPE_LAST + 1];
 #define MYSQLND_PS_SKIP_RESULT_STR             -2
 
 /* {{{ ps_fetch_from_1_to_8_bytes */
-void ps_fetch_from_1_to_8_bytes(zval *zv, const MYSQLND_FIELD * const field,
-                                                               unsigned int pack_len, zend_uchar **row, zend_bool as_unicode,
-                                                               unsigned int byte_count TSRMLS_DC)
+void
+ps_fetch_from_1_to_8_bytes(zval * zv, const MYSQLND_FIELD * const field, unsigned int pack_len,
+                                                  zend_uchar ** row, unsigned int byte_count TSRMLS_DC)
 {
        char tmp[22];
        size_t tmp_len = 0;
@@ -117,16 +117,7 @@ void ps_fetch_from_1_to_8_bytes(zval *zv, const MYSQLND_FIELD * const field,
        }
 
        if (tmp_len) {
-#if MYSQLND_UNICODE
-               if (as_unicode) {
-                       DBG_INF("stringify");
-                       ZVAL_UTF8_STRINGL(zv, tmp, tmp_len, ZSTR_DUPLICATE);
-               } else
-#endif
-               {
-                       DBG_INF("stringify");
-                       ZVAL_STRINGL(zv, tmp, tmp_len, 1);
-               }
+               ZVAL_STRINGL(zv, tmp, tmp_len, 1);
        }
        (*row)+= byte_count;
        DBG_VOID_RETURN;
@@ -135,10 +126,8 @@ void ps_fetch_from_1_to_8_bytes(zval *zv, const MYSQLND_FIELD * const field,
 
 
 /* {{{ ps_fetch_null */
-static
-void ps_fetch_null(zval *zv, const MYSQLND_FIELD * const field,
-                                  unsigned int pack_len, zend_uchar **row,
-                                  zend_bool as_unicode TSRMLS_DC)
+static void
+ps_fetch_null(zval *zv, const MYSQLND_FIELD * const field, unsigned int pack_len, zend_uchar ** row TSRMLS_DC)
 {
        ZVAL_NULL(zv);
 }
@@ -146,54 +135,44 @@ void ps_fetch_null(zval *zv, const MYSQLND_FIELD * const field,
 
 
 /* {{{ ps_fetch_int8 */
-static
-void ps_fetch_int8(zval *zv, const MYSQLND_FIELD * const field,
-                                  unsigned int pack_len, zend_uchar **row,
-                                  zend_bool as_unicode TSRMLS_DC)
+static void
+ps_fetch_int8(zval * zv, const MYSQLND_FIELD * const field, unsigned int pack_len, zend_uchar ** row TSRMLS_DC)
 {
-       ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, as_unicode, 1 TSRMLS_CC);
+       ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, 1 TSRMLS_CC);
 }
 /* }}} */
 
 
 /* {{{ ps_fetch_int16 */
-static
-void ps_fetch_int16(zval *zv, const MYSQLND_FIELD * const field,
-                                       unsigned int pack_len, zend_uchar **row,
-                                       zend_bool as_unicode TSRMLS_DC)
+static void
+ps_fetch_int16(zval * zv, const MYSQLND_FIELD * const field, unsigned int pack_len, zend_uchar ** row TSRMLS_DC)
 {
-       ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, as_unicode, 2 TSRMLS_CC);
+       ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, 2 TSRMLS_CC);
 }
 /* }}} */
 
 
 /* {{{ ps_fetch_int32 */
-static
-void ps_fetch_int32(zval *zv, const MYSQLND_FIELD * const field,
-                                       unsigned int pack_len, zend_uchar **row,
-                                       zend_bool as_unicode TSRMLS_DC)
+static void
+ps_fetch_int32(zval * zv, const MYSQLND_FIELD * const field, unsigned int pack_len, zend_uchar ** row TSRMLS_DC)
 {
-       ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, as_unicode, 4 TSRMLS_CC);
+       ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, 4 TSRMLS_CC);
 }
 /* }}} */
 
 
 /* {{{ ps_fetch_int64 */
-static
-void ps_fetch_int64(zval *zv, const MYSQLND_FIELD * const field,
-                                       unsigned int pack_len, zend_uchar **row,
-                                       zend_bool as_unicode TSRMLS_DC)
+static void
+ps_fetch_int64(zval * zv, const MYSQLND_FIELD * const field, unsigned int pack_len, zend_uchar ** row TSRMLS_DC)
 {
-       ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, as_unicode, 8 TSRMLS_CC);
+       ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, 8 TSRMLS_CC);
 }
 /* }}} */
 
 
 /* {{{ ps_fetch_float */
-static
-void ps_fetch_float(zval *zv, const MYSQLND_FIELD * const field,
-                                       unsigned int pack_len, zend_uchar **row,
-                                       zend_bool as_unicode TSRMLS_DC)
+static void
+ps_fetch_float(zval * zv, const MYSQLND_FIELD * const field, unsigned int pack_len, zend_uchar ** row TSRMLS_DC)
 {
        float value;
        DBG_ENTER("ps_fetch_float");
@@ -207,10 +186,8 @@ void ps_fetch_float(zval *zv, const MYSQLND_FIELD * const field,
 
 
 /* {{{ ps_fetch_double */
-static
-void ps_fetch_double(zval *zv, const MYSQLND_FIELD * const field,
-                                       unsigned int pack_len, zend_uchar **row,
-                                       zend_bool as_unicode TSRMLS_DC)
+static void
+ps_fetch_double(zval * zv, const MYSQLND_FIELD * const field, unsigned int pack_len, zend_uchar ** row TSRMLS_DC)
 {
        double value;
        DBG_ENTER("ps_fetch_double");
@@ -224,18 +201,16 @@ void ps_fetch_double(zval *zv, const MYSQLND_FIELD * const field,
 
 
 /* {{{ ps_fetch_time */
-static
-void ps_fetch_time(zval *zv, const MYSQLND_FIELD * const field,
-                                  unsigned int pack_len, zend_uchar **row,
-                                  zend_bool as_unicode TSRMLS_DC)
+static void
+ps_fetch_time(zval * zv, const MYSQLND_FIELD * const field, unsigned int pack_len, zend_uchar ** row TSRMLS_DC)
 {
        struct st_mysqlnd_time t;
-       unsigned int length; /* First byte encodes the length*/
+       unsigned long length; /* First byte encodes the length*/
        char * value;
        DBG_ENTER("ps_fetch_time");
 
        if ((length = php_mysqlnd_net_field_length(row))) {
-               zend_uchar *to= *row;
+               zend_uchar * to= *row;
 
                t.time_type = MYSQLND_TIMESTAMP_TIME;
                t.neg                   = (zend_bool) to[0];
@@ -261,29 +236,19 @@ void ps_fetch_time(zval *zv, const MYSQLND_FIELD * const field,
        length = mnd_sprintf(&value, 0, "%s%02u:%02u:%02u", (t.neg ? "-" : ""), t.hour, t.minute, t.second);
 
        DBG_INF_FMT("%s", value);
-#if MYSQLND_UNICODE
-       if (!as_unicode) {
-#endif
-               ZVAL_STRINGL(zv, value, length, 1);
-               mnd_sprintf_free(value);
-#if MYSQLND_UNICODE
-       } else {
-               ZVAL_UTF8_STRINGL(zv, value, length, ZSTR_AUTOFREE);
-       }
-#endif
+       ZVAL_STRINGL(zv, value, length, 1);
+       mnd_sprintf_free(value);
        DBG_VOID_RETURN;
 }
 /* }}} */
 
 
 /* {{{ ps_fetch_date */
-static
-void ps_fetch_date(zval *zv, const MYSQLND_FIELD * const field,
-                                  unsigned int pack_len, zend_uchar **row,
-                                  zend_bool as_unicode TSRMLS_DC)
+static void
+ps_fetch_date(zval * zv, const MYSQLND_FIELD * const field, unsigned int pack_len, zend_uchar ** row TSRMLS_DC)
 {
        struct st_mysqlnd_time t = {0};
-       unsigned int length; /* First byte encodes the length*/
+       unsigned long length; /* First byte encodes the length*/
        char * value;
        DBG_ENTER("ps_fetch_date");
 
@@ -308,34 +273,24 @@ void ps_fetch_date(zval *zv, const MYSQLND_FIELD * const field,
        length = mnd_sprintf(&value, 0, "%04u-%02u-%02u", t.year, t.month, t.day);
 
        DBG_INF_FMT("%s", value);
-#if MYSQLND_UNICODE
-       if (!as_unicode) {
-#endif
-               ZVAL_STRINGL(zv, value, length, 1);
-               mnd_sprintf_free(value);
-#if MYSQLND_UNICODE
-       } else {
-               ZVAL_UTF8_STRINGL(zv, value, length, ZSTR_AUTOFREE);
-       }
-#endif
+       ZVAL_STRINGL(zv, value, length, 1);
+       mnd_sprintf_free(value);
        DBG_VOID_RETURN;
 }
 /* }}} */
 
 
 /* {{{ ps_fetch_datetime */
-static
-void ps_fetch_datetime(zval *zv, const MYSQLND_FIELD * const field,
-                                          unsigned int pack_len, zend_uchar **row,
-                                          zend_bool as_unicode TSRMLS_DC)
+static void
+ps_fetch_datetime(zval * zv, const MYSQLND_FIELD * const field, unsigned int pack_len, zend_uchar ** row TSRMLS_DC)
 {
        struct st_mysqlnd_time t;
-       unsigned int length; /* First byte encodes the length*/
+       unsigned long length; /* First byte encodes the length*/
        char * value;
        DBG_ENTER("ps_fetch_datetime");
 
        if ((length = php_mysqlnd_net_field_length(row))) {
-               zend_uchar *to= *row;
+               zend_uchar * to = *row;
 
                t.time_type = MYSQLND_TIMESTAMP_DATETIME;
                t.neg    = 0;
@@ -362,46 +317,26 @@ void ps_fetch_datetime(zval *zv, const MYSQLND_FIELD * const field,
        length = mnd_sprintf(&value, 0, "%04u-%02u-%02u %02u:%02u:%02u", t.year, t.month, t.day, t.hour, t.minute, t.second);
 
        DBG_INF_FMT("%s", value);
-#if MYSQLND_UNICODE
-       if (!as_unicode) {
-#endif
-               ZVAL_STRINGL(zv, value, length, 1);
-               mnd_sprintf_free(value);
-#if MYSQLND_UNICODE
-       } else {
-               ZVAL_UTF8_STRINGL(zv, to, length, ZSTR_AUTOFREE);
-       }
-#endif
+       ZVAL_STRINGL(zv, value, length, 1);
+       mnd_sprintf_free(value);
        DBG_VOID_RETURN;
 }
 /* }}} */
 
 
 /* {{{ ps_fetch_string */
-static
-void ps_fetch_string(zval *zv, const MYSQLND_FIELD * const field,
-                                        unsigned int pack_len, zend_uchar **row,
-                                        zend_bool as_unicode TSRMLS_DC)
+static void
+ps_fetch_string(zval * zv, const MYSQLND_FIELD * const field, unsigned int pack_len, zend_uchar ** row TSRMLS_DC)
 {
        /*
          For now just copy, before we make it possible
          to write \0 to the row buffer
        */
-       unsigned long length = php_mysqlnd_net_field_length(row);
+       const unsigned long length = php_mysqlnd_net_field_length(row);
        DBG_ENTER("ps_fetch_string");
        DBG_INF_FMT("len = %lu", length);
-#if MYSQLND_UNICODE
-       if (field->charsetnr == MYSQLND_BINARY_CHARSET_NR) {
-               DBG_INF("Binary charset");
-               ZVAL_STRINGL(zv, (char *)*row, length, 1);
-       } else {
-               DBG_INF_FMT("copying from the row buffer");
-               ZVAL_UTF8_STRINGL(zv, (char*)*row, length, ZSTR_DUPLICATE);
-       }
-#else
        DBG_INF("copying from the row buffer");
        ZVAL_STRINGL(zv, (char *)*row, length, 1);
-#endif
 
        (*row) += length;
        DBG_VOID_RETURN;
@@ -410,13 +345,11 @@ void ps_fetch_string(zval *zv, const MYSQLND_FIELD * const field,
 
 
 /* {{{ ps_fetch_bit */
-static
-void ps_fetch_bit(zval *zv, const MYSQLND_FIELD * const field,
-                                 unsigned int pack_len, zend_uchar **row,
-                                 zend_bool as_unicode TSRMLS_DC)
+static void
+ps_fetch_bit(zval * zv, const MYSQLND_FIELD * const field, unsigned int pack_len, zend_uchar ** row TSRMLS_DC)
 {
-       unsigned long length= php_mysqlnd_net_field_length(row);
-       ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, as_unicode, length TSRMLS_CC);
+       unsigned long length = php_mysqlnd_net_field_length(row);
+       ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, length TSRMLS_CC);
 }
 /* }}} */
 
@@ -566,7 +499,7 @@ void _mysqlnd_init_ps_fetch_subsystem()
 
 /* {{{ mysqlnd_stmt_copy_it */
 static enum_func_status
-mysqlnd_stmt_copy_it(zval *** copies, zval *original, unsigned int param_count, unsigned int current TSRMLS_DC)
+mysqlnd_stmt_copy_it(zval *** copies, zval * original, unsigned int param_count, unsigned int current TSRMLS_DC)
 {
        if (!*copies) {
                *copies = mnd_ecalloc(param_count, sizeof(zval *));
@@ -786,12 +719,7 @@ mysqlnd_stmt_execute_store_params(MYSQLND_STMT * s, zend_uchar **buf, zend_uchar
                        case MYSQL_TYPE_VAR_STRING:
 use_string:
                                data_size += 8; /* max 8 bytes for size */
-#if MYSQLND_UNICODE
-                               if (Z_TYPE_P(the_var) != IS_STRING || Z_TYPE_P(the_var) == IS_UNICODE)
-#else
-                               if (Z_TYPE_P(the_var) != IS_STRING)
-#endif
-                               {
+                               if (Z_TYPE_P(the_var) != IS_STRING) {
                                        if (!copies || !copies[i]) {
                                                if (PASS != mysqlnd_stmt_copy_it(&copies, the_var, stmt->param_count, i TSRMLS_CC)) {
                                                        SET_OOM_ERROR(*stmt->error_info);
@@ -799,11 +727,6 @@ use_string:
                                                }
                                        }
                                        the_var = copies[i];
-#if MYSQLND_UNICODE
-                                       if (Z_TYPE_P(the_var) == IS_UNICODE) {
-                                               zval_unicode_to_string_ex(the_var, UG(utf8_conv) TSRMLS_CC);
-                                       }
-#endif
                                }
                                convert_to_string_ex(&the_var);
                                data_size += Z_STRLEN_P(the_var);
index 8ae2665ba76f765711718fada69a21d5ae17e61d..3dd06edb34e3e75a33421b36dff2d4a98a22c039 100644 (file)
@@ -55,7 +55,6 @@ MYSQLND_METHOD(mysqlnd_res, initialize_result_set_rest)(MYSQLND_RES * const resu
                                                                        data_cursor,
                                                                        result->meta->field_count,
                                                                        result->meta->fields,
-                                                                       result->conn->options->numeric_and_datetime_as_unicode,
                                                                        result->conn->options->int_and_float_native,
                                                                        result->conn->stats TSRMLS_CC);
                        if (rc != PASS) {
@@ -106,16 +105,6 @@ mysqlnd_rset_zval_ptr_dtor(zval **zv, enum_mysqlnd_res_type type, zend_bool * co
                /*
                  Not a prepared statement, then we have to
                  call copy_ctor and then zval_ptr_dtor()
-
-                 In Unicode mode the destruction  of the zvals should not call
-                 zval_copy_ctor() because then we will leak.
-                 I suppose we can use UG(unicode) in mysqlnd.c when freeing a result set
-                 to check if we need to call copy_ctor().
-
-                 If the type is IS_UNICODE, which can happen with PHP6, then we don't
-                 need to copy_ctor, as the data doesn't point to our internal buffers.
-                 If it's string (in PHP5 always) and in PHP6 if data is binary, then
-                 it still points to internal buffers and has to be copied.
                */
                if (Z_TYPE_PP(zv) == IS_STRING) {
                        zval_copy_ctor(*zv);
@@ -669,7 +658,6 @@ mysqlnd_fetch_row_unbuffered_c(MYSQLND_RES * result TSRMLS_DC)
                                                                                  result->unbuf->last_row_data,
                                                                                  row_packet->field_count,
                                                                                  row_packet->fields_metadata,
-                                                                                 result->conn->options->numeric_and_datetime_as_unicode,
                                                                                  result->conn->options->int_and_float_native,
                                                                                  result->conn->stats TSRMLS_CC);
                        if (PASS != rc) {
@@ -784,7 +772,6 @@ mysqlnd_fetch_row_unbuffered(MYSQLND_RES * result, void *param, unsigned int fla
                                                                                        result->unbuf->last_row_data,
                                                                                        field_count,
                                                                                        row_packet->fields_metadata,
-                                                                                       result->conn->options->numeric_and_datetime_as_unicode,
                                                                                        result->conn->options->int_and_float_native,
                                                                                        result->conn->stats TSRMLS_CC);
                        if (PASS != rc) {
@@ -812,19 +799,11 @@ mysqlnd_fetch_row_unbuffered(MYSQLND_RES * result, void *param, unsigned int fla
                                        */
                                        Z_ADDREF_P(data);
                                        if (hash_key->is_numeric == FALSE) {
-#if MYSQLND_UNICODE
-                                               zend_u_hash_quick_update(Z_ARRVAL_P(row), IS_UNICODE,
-                                                                                                hash_key->ustr,
-                                                                                                hash_key->ulen + 1,
-                                                                                                hash_key->key,
-                                                                                                (void *) &data, sizeof(zval *), NULL);
-#else
                                                zend_hash_quick_update(Z_ARRVAL_P(row),
                                                                                           field->name,
                                                                                           field->name_length + 1,
                                                                                           hash_key->key,
                                                                                           (void *) &data, sizeof(zval *), NULL);
-#endif
                                        } else {
                                                zend_hash_index_update(Z_ARRVAL_P(row),
                                                                                           hash_key->key,
@@ -950,7 +929,6 @@ mysqlnd_fetch_row_buffered_c(MYSQLND_RES * result TSRMLS_DC)
                                                                                        current_row,
                                                                                        result->meta->field_count,
                                                                                        result->meta->fields,
-                                                                                       result->conn->options->numeric_and_datetime_as_unicode,
                                                                                        result->conn->options->int_and_float_native,
                                                                                        result->conn->stats TSRMLS_CC);
                        if (rc != PASS) {
@@ -1023,7 +1001,6 @@ mysqlnd_fetch_row_buffered(MYSQLND_RES * result, void *param, unsigned int flags
                                                                                        current_row,
                                                                                        result->meta->field_count,
                                                                                        result->meta->fields,
-                                                                                       result->conn->options->numeric_and_datetime_as_unicode,
                                                                                        result->conn->options->int_and_float_native,
                                                                                        result->conn->stats TSRMLS_CC);
                        if (rc != PASS) {
@@ -1062,19 +1039,11 @@ mysqlnd_fetch_row_buffered(MYSQLND_RES * result, void *param, unsigned int flags
                                */
                                Z_ADDREF_P(data);
                                if (hash_key->is_numeric == FALSE) {
-#if MYSQLND_UNICODE
-                                       zend_u_hash_quick_update(Z_ARRVAL_P(row), IS_UNICODE,
-                                                                                        hash_key->ustr,
-                                                                                        hash_key->ulen + 1,
-                                                                                        hash_key->key,
-                                                                                        (void *) &data, sizeof(zval *), NULL);
-#else
                                        zend_hash_quick_update(Z_ARRVAL_P(row),
                                                                                   field->name,
                                                                                   field->name_length + 1,
                                                                                   hash_key->key,
                                                                                   (void *) &data, sizeof(zval *), NULL);
-#endif
                                } else {
                                        zend_hash_index_update(Z_ARRVAL_P(row),
                                                                                   hash_key->key,
index 9469ceaf111d7337600aaf6fbc634b04ffd4f895..53368a8fb8fa7b867a89f5674eb101824f8e9c4a 100644 (file)
@@ -92,60 +92,12 @@ mysqlnd_is_key_numeric(const char * key, size_t length, long *idx)
 /* }}} */
 
 
-#if MYSQLND_UNICODE
-/* {{{ mysqlnd_unicode_is_key_numeric */
-static zend_bool
-mysqlnd_unicode_is_key_numeric(UChar *key, size_t length, long *idx)
-{
-       register UChar * tmp=key;
-
-       if (*tmp==0x2D /*'-'*/) {
-               tmp++;
-       }
-       if ((*tmp>=0x30 /*'0'*/ && *tmp<=0x39 /*'9'*/)) { /* possibly a numeric index */
-               do {
-                       UChar *end=key+length-1;
-
-                       if (*tmp++==0x30 && length>2) { /* don't accept numbers with leading zeros */
-                               break;
-                       }
-                       while (tmp<end) {
-                               if (!(*tmp>=0x30 /*'0'*/ && *tmp<=0x39 /*'9'*/)) {
-                                       break;
-                               }
-                               tmp++;
-                       }
-                       if (tmp==end && *tmp==0) { /* a numeric index */
-                               if (*key==0x2D /*'-'*/) {
-                                       *idx = zend_u_strtol(key, NULL, 10);
-                                       if (*idx!=LONG_MIN) {
-                                               return TRUE;
-                                       }
-                               } else {
-                                       *idx = zend_u_strtol(key, NULL, 10);
-                                       if (*idx!=LONG_MAX) {
-                                               return TRUE;
-                                       }
-                               }
-                       }
-               } while (0);
-       }
-       return FALSE;
-}
-/* }}} */
-#endif
-
-
 /* {{{ mysqlnd_res_meta::read_metadata */
 static enum_func_status
 MYSQLND_METHOD(mysqlnd_res_meta, read_metadata)(MYSQLND_RES_METADATA * const meta, MYSQLND_CONN_DATA * conn TSRMLS_DC)
 {
        unsigned int i = 0;
        MYSQLND_PACKET_RES_FIELD * field_packet;
-#if MYSQLND_UNICODE
-       UChar *ustr;
-       int ulen;
-#endif
 
        DBG_ENTER("mysqlnd_res_meta::read_metadata");
 
@@ -226,21 +178,6 @@ MYSQLND_METHOD(mysqlnd_res_meta, read_metadata)(MYSQLND_RES_METADATA * const met
                        }
                }
 
-#if MYSQLND_UNICODE
-               zend_string_to_unicode(UG(utf8_conv), &ustr, &ulen,
-                                                          meta->fields[i].name,
-                                                          meta->fields[i].name_length TSRMLS_CC);
-               if ((meta->zend_hash_keys[i].is_numeric =
-                                               mysqlnd_unicode_is_key_numeric(ustr, ulen + 1, &idx)))
-               {
-                       meta->zend_hash_keys[i].key = idx;
-                       mnd_efree(ustr);
-               } else {
-                       meta->zend_hash_keys[i].ustr.u = ustr;
-                       meta->zend_hash_keys[i].ulen = ulen;
-                       meta->zend_hash_keys[i].key = zend_u_get_hash_value(IS_UNICODE, ZSTR(ustr), ulen + 1);
-               }
-#else
                /* For BC we have to check whether the key is numeric and use it like this */
                if ((meta->zend_hash_keys[i].is_numeric =
                                        mysqlnd_is_key_numeric(field_packet->metadata->name,
@@ -253,7 +190,6 @@ MYSQLND_METHOD(mysqlnd_res_meta, read_metadata)(MYSQLND_RES_METADATA * const met
                                        zend_get_hash_value(field_packet->metadata->name,
                                                                                field_packet->metadata->name_length + 1);
                }
-#endif
        }
        PACKET_FREE(field_packet);
 
@@ -283,15 +219,6 @@ MYSQLND_METHOD(mysqlnd_res_meta, free)(MYSQLND_RES_METADATA * meta TSRMLS_DC)
 
        if (meta->zend_hash_keys) {
                DBG_INF("Freeing zend_hash_keys");
-#if MYSQLND_UNICODE
-               if (UG(unicode)) {
-                       for (i = 0; i < meta->field_count; i++) {
-                               if (meta->zend_hash_keys[i].ustr.v) {
-                                       mnd_pefree(meta->zend_hash_keys[i].ustr.v, meta->persistent);
-                               }
-                       }
-               }
-#endif
                mnd_pefree(meta->zend_hash_keys, meta->persistent);
                meta->zend_hash_keys = NULL;
        }
@@ -379,15 +306,6 @@ MYSQLND_METHOD(mysqlnd_res_meta, clone_metadata)(const MYSQLND_RES_METADATA * co
                        /* copy the trailing \0 too */
                        memcpy(new_fields[i].def, orig_fields[i].def, orig_fields[i].def_length + 1);
                }
-#if MYSQLND_UNICODE
-               if (new_meta->zend_hash_keys[i].ustr.u) {
-                       new_meta->zend_hash_keys[i].ustr.u =
-                                       eustrndup(new_meta->zend_hash_keys[i].ustr.u, new_meta->zend_hash_keys[i].ulen);
-                       if (!new_meta->zend_hash_keys[i].ustr.u) {
-                               goto oom;
-                       }
-               }
-#endif
        }
        new_meta->current_field = 0;
        new_meta->field_count = meta->field_count;
index bb00a9192dfef9d32d4ddf3079190beec3f3d25b..00145a3dbce8276a34bc1288c7be430024ce058e 100644 (file)
@@ -203,22 +203,10 @@ mysqlnd_fill_stats_hash(const MYSQLND_STATS * const stats, const MYSQLND_STRING
 
        mysqlnd_array_init(return_value, stats->count);
        for (i = 0; i < stats->count; i++) {
-#if MYSQLND_UNICODE
-               UChar *ustr, *tstr;
-               int ulen, tlen;
-#endif
                char tmp[25];
 
                sprintf((char *)&tmp, MYSQLND_LLU_SPEC, stats->values[i]);
-#if MYSQLND_UNICODE
-               zend_string_to_unicode(UG(utf8_conv), &ustr, &ulen, names[i].s, names[i].l + 1 TSRMLS_CC);
-               zend_string_to_unicode(UG(utf8_conv), &tstr, &tlen, tmp, strlen(tmp) + 1 TSRMLS_CC);
-               add_u_assoc_unicode_ex(return_value, IS_UNICODE, ZSTR(ustr), ulen, tstr, 1);
-               efree(ustr);
-               efree(tstr);
-#else
                add_assoc_string_ex(return_value, names[i].s, names[i].l + 1, tmp, 1);
-#endif
        }
 }
 /* }}} */
index 511a168b564976c8c24577807d853a0898513ef4..16092e987c59068f7b22f4aecbcf82be121c1831 100644 (file)
@@ -183,7 +183,6 @@ typedef struct st_mysqlnd_options
        /* maximum allowed packet size for communication */
        ulong           max_allowed_packet;
 
-       zend_bool       numeric_and_datetime_as_unicode;
 #ifdef MYSQLND_STRING_TO_INT_CONVERSION
        zend_bool       int_and_float_native;
 #endif
@@ -625,9 +624,8 @@ typedef void                                (*func_mysqlnd_res__unbuffered_free_last_data)(MYSQLND_RES *resu
 
        /* for decoding - binary or text protocol */
 typedef enum_func_status       (*func_mysqlnd_res__row_decoder)(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval ** fields,
-                                                                       unsigned int field_count, MYSQLND_FIELD *fields_metadata,
-                                                                       zend_bool as_unicode, zend_bool as_int_or_float,
-                                                                       MYSQLND_STATS * stats TSRMLS_DC);
+                                                                       unsigned int field_count, const MYSQLND_FIELD * fields_metadata,
+                                                                       zend_bool as_int_or_float, MYSQLND_STATS * stats TSRMLS_DC);
 
 typedef MYSQLND_RES_METADATA * (*func_mysqlnd_res__result_meta_init)(unsigned int field_count, zend_bool persistent TSRMLS_DC);
 
@@ -932,10 +930,6 @@ struct mysqlnd_field_hash_key
 {
        zend_bool               is_numeric;
        unsigned long   key;
-#if MYSQLND_UNICODE
-       zstr                    ustr;
-       unsigned int    ulen;
-#endif
 };
 
 
index e41c771a8a0898f917754602e07ab4754fcf65a1..4697a01a66091cee5ca2a5c0c40f83baf4ff3cf6 100644 (file)
@@ -1411,9 +1411,8 @@ php_mysqlnd_read_row_ex(MYSQLND_CONN_DATA * conn, MYSQLND_MEMORY_POOL * result_s
 /* {{{ php_mysqlnd_rowp_read_binary_protocol */
 enum_func_status
 php_mysqlnd_rowp_read_binary_protocol(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval ** fields,
-                                                                         unsigned int field_count, MYSQLND_FIELD *fields_metadata,
-                                                                         zend_bool as_unicode, zend_bool as_int_or_float,
-                                                                         MYSQLND_STATS * stats TSRMLS_DC)
+                                                                         unsigned int field_count, const MYSQLND_FIELD * fields_metadata,
+                                                                         zend_bool as_int_or_float, MYSQLND_STATS * stats TSRMLS_DC)
 {
        unsigned int i;
        zend_uchar * p = row_buffer->ptr;
@@ -1446,17 +1445,17 @@ php_mysqlnd_rowp_read_binary_protocol(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zv
                enum_mysqlnd_collected_stats statistic;
                zend_uchar * orig_p = p;
 
-               DBG_INF_FMT("Into zval=%p decoding column %u [%s.%s.%s] type=%u field->flags&unsigned=%u flags=%u is_bit=%u as_unicode=%u",
+               DBG_INF_FMT("Into zval=%p decoding column %u [%s.%s.%s] type=%u field->flags&unsigned=%u flags=%u is_bit=%u",
                        *current_field, i,
                        fields_metadata[i].db, fields_metadata[i].table, fields_metadata[i].name, fields_metadata[i].type,
-                       fields_metadata[i].flags & UNSIGNED_FLAG, fields_metadata[i].flags, fields_metadata[i].type == MYSQL_TYPE_BIT, as_unicode);
+                       fields_metadata[i].flags & UNSIGNED_FLAG, fields_metadata[i].flags, fields_metadata[i].type == MYSQL_TYPE_BIT);
                if (*null_ptr & bit) {
                        DBG_INF("It's null");
                        ZVAL_NULL(*current_field);
                        statistic = STAT_BINARY_TYPE_FETCHED_NULL;
                } else {
                        enum_mysqlnd_field_types type = fields_metadata[i].type;
-                       mysqlnd_ps_fetch_functions[type].func(*current_field, &fields_metadata[i], 0, &p, as_unicode TSRMLS_CC);
+                       mysqlnd_ps_fetch_functions[type].func(*current_field, &fields_metadata[i], 0, &p TSRMLS_CC);
 
                        if (MYSQLND_G(collect_statistics)) {
                                switch (fields_metadata[i].type) {
@@ -1510,9 +1509,8 @@ php_mysqlnd_rowp_read_binary_protocol(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zv
 /* {{{ php_mysqlnd_rowp_read_text_protocol */
 enum_func_status
 php_mysqlnd_rowp_read_text_protocol(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval ** fields,
-                                                                       unsigned int field_count, MYSQLND_FIELD *fields_metadata,
-                                                                       zend_bool as_unicode, zend_bool as_int_or_float,
-                                                                       MYSQLND_STATS * stats TSRMLS_DC)
+                                                                       unsigned int field_count, const MYSQLND_FIELD * fields_metadata,
+                                                                       zend_bool as_int_or_float, MYSQLND_STATS * stats TSRMLS_DC)
 {
        unsigned int i;
        zend_bool last_field_was_string = FALSE;
@@ -1564,7 +1562,7 @@ php_mysqlnd_rowp_read_text_protocol(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval
                        ZVAL_NULL(*current_field);
                        last_field_was_string = FALSE;
                } else {
-#if MYSQLND_UNICODE || defined(MYSQLND_STRING_TO_INT_CONVERSION)
+#if defined(MYSQLND_STRING_TO_INT_CONVERSION)
                        struct st_mysqlnd_perm_bind perm_bind =
                                        mysqlnd_ps_fetch_functions[fields_metadata[i].type];
 #endif
@@ -1660,7 +1658,7 @@ php_mysqlnd_rowp_read_text_protocol(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval
                                  Definitely not nice, _hackish_ :(, but works.
                                */
                                zend_uchar *start = bit_area;
-                               ps_fetch_from_1_to_8_bytes(*current_field, &(fields_metadata[i]), 0, &p, as_unicode, len TSRMLS_CC);
+                               ps_fetch_from_1_to_8_bytes(*current_field, &(fields_metadata[i]), 0, &p, len TSRMLS_CC);
                                /*
                                  We have advanced in ps_fetch_from_1_to_8_bytes. We should go back because
                                  later in this function there will be an advancement.
@@ -1668,60 +1666,16 @@ php_mysqlnd_rowp_read_text_protocol(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval
                                p -= len;
                                if (Z_TYPE_PP(current_field) == IS_LONG) {
                                        bit_area += 1 + sprintf((char *)start, "%ld", Z_LVAL_PP(current_field));
-#if MYSQLND_UNICODE
-                                       if (as_unicode) {
-                                               ZVAL_UTF8_STRINGL(*current_field, start, bit_area - start - 1, 0);
-                                       } else
-#endif
-                                       {
-                                               ZVAL_STRINGL(*current_field, (char *) start, bit_area - start - 1, 0);
-                                       }
+                                       ZVAL_STRINGL(*current_field, (char *) start, bit_area - start - 1, 0);
                                } else if (Z_TYPE_PP(current_field) == IS_STRING){
                                        memcpy(bit_area, Z_STRVAL_PP(current_field), Z_STRLEN_PP(current_field));
                                        bit_area += Z_STRLEN_PP(current_field);
                                        *bit_area++ = '\0';
                                        zval_dtor(*current_field);
-#if MYSQLND_UNICODE
-                                       if (as_unicode) {
-                                               ZVAL_UTF8_STRINGL(*current_field, start, bit_area - start - 1, 0);
-                                       } else
-#endif
-                                       {
-                                               ZVAL_STRINGL(*current_field, (char *) start, bit_area - start - 1, 0);
-                                       }
+                                       ZVAL_STRINGL(*current_field, (char *) start, bit_area - start - 1, 0);
                                }
-                               /*
-                                 IS_UNICODE should not be specially handled. In unicode mode
-                                 the buffers are not referenced - everything is copied.
-                               */
                        } else
-#if MYSQLND_UNICODE == 0
-                       {
-                               ZVAL_STRINGL(*current_field, (char *)p, len, 0);
-                       }
-#else
-                       /*
-                         Here we have to convert to UTF16, which means not reusing the buffer.
-                         Which in turn means that we can free the buffers once we have
-                         stored the result set, if we use store_result().
-
-                         Also the destruction of the zvals should not call zval_copy_ctor()
-                         because then we will leak.
-
-                         XXX: Keep in mind that up there there is an open `else` in
-                         #ifdef MYSQLND_STRING_TO_INT_CONVERSION
-                         which will make with this `if` an `else if`.
-                       */
-                       if ((perm_bind.is_possibly_blob == TRUE &&
-                                fields_metadata[i].charsetnr == MYSQLND_BINARY_CHARSET_NR) ||
-                               (!as_unicode && perm_bind.can_ret_as_str_in_uni == TRUE))
-                       {
-                               /* BLOB - no conversion please */
-                               ZVAL_STRINGL(*current_field, (char *)p, len, 0);
-                       } else {
-                               ZVAL_UTF8_STRINGL(*current_field, (char *)p, len, 0);
-                       }
-#endif
+                       ZVAL_STRINGL(*current_field, (char *)p, len, 0);
                        p += len;
                        last_field_was_string = TRUE;
                }
index e5008e6db559ce9d5954b10435a1363bea29e2b8..92c8e502de36fefea4ebf1e6b08f59163a689fca 100644 (file)
@@ -307,15 +307,13 @@ PHPAPI const extern char * const mysqlnd_empty_string;
 
 
 enum_func_status php_mysqlnd_rowp_read_binary_protocol(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval ** fields,
-                                                                                unsigned int field_count, MYSQLND_FIELD *fields_metadata,
-                                                                                zend_bool as_unicode, zend_bool as_int_or_float,
-                                                                                MYSQLND_STATS * stats TSRMLS_DC);
+                                                                                unsigned int field_count, const MYSQLND_FIELD * fields_metadata,
+                                                                                zend_bool as_int_or_float, MYSQLND_STATS * stats TSRMLS_DC);
 
 
 enum_func_status php_mysqlnd_rowp_read_text_protocol(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval ** fields,
-                                                                                unsigned int field_count, MYSQLND_FIELD *fields_metadata,
-                                                                                zend_bool as_unicode, zend_bool as_int_or_float,
-                                                                                MYSQLND_STATS * stats TSRMLS_DC);
+                                                                                unsigned int field_count, const MYSQLND_FIELD * fields_metadata,
+                                                                                zend_bool as_int_or_float, MYSQLND_STATS * stats TSRMLS_DC);
 
 
 PHPAPI MYSQLND_PROTOCOL * mysqlnd_protocol_init(zend_bool persistent TSRMLS_DC);
index 8dccf37c4b3cd7e503995c7afa1a21d39057a870..f2f7ab98ebdfbb8f51f2626c84ba9d8a792cd36a 100644 (file)
@@ -40,39 +40,8 @@ static zend_function_entry mysqlnd_functions[] = {
 
 
 /* {{{ mysqlnd_minfo_print_hash */
-#if MYSQLND_UNICODE
-PHPAPI void mysqlnd_minfo_print_hash(zval *values)
-{
-       zval **values_entry;
-       HashPosition pos_values;
-
-       zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(values), &pos_values);
-       while (zend_hash_get_current_data_ex(Z_ARRVAL_P(values),
-               (void **)&values_entry, &pos_values) == SUCCESS) {
-               zstr    string_key;
-               uint    string_key_len;
-               ulong   num_key;
-               int             s_len;
-               char    *s = NULL;
-
-               TSRMLS_FETCH();
-               zend_hash_get_current_key_ex(Z_ARRVAL_P(values), &string_key, &string_key_len, &num_key, 0, &pos_values);
-
-               convert_to_string(*values_entry);
-
-               if (zend_unicode_to_string(ZEND_U_CONVERTER(UG(runtime_encoding_conv)),
-                                                                  &s, &s_len, string_key.u, string_key_len TSRMLS_CC) == SUCCESS) {
-                       php_info_print_table_row(2, s, Z_STRVAL_PP(values_entry));
-               }
-               if (s) {
-                       mnd_efree(s);
-               }
-
-               zend_hash_move_forward_ex(Z_ARRVAL_P(values), &pos_values);
-       }
-}
-#else
-PHPAPI void mysqlnd_minfo_print_hash(zval *values)
+PHPAPI void
+mysqlnd_minfo_print_hash(zval *values)
 {
        zval **values_entry;
        HashPosition pos_values;
@@ -91,7 +60,6 @@ PHPAPI void mysqlnd_minfo_print_hash(zval *values)
                zend_hash_move_forward_ex(Z_ARRVAL_P(values), &pos_values);
        }
 }
-#endif
 /* }}} */