Re: cvs: php-src(PHP_5_3) /ext/mysqli mysqli.c /ext/mysqlnd mysqlnd.c mysqlnd_enum_n_def.h mysqlnd_structs.h mysqlnd_wireprotocol.c
| From: | Dmitry Stogov | Date: | Tue, 16 Sep 2008 08:08:17 +0000 |
| Subject: | Re: cvs: php-src(PHP_5_3) /ext/mysqli mysqli.c /ext/mysqlnd mysqlnd.c mysqlnd_enum_n_def.h mysqlnd_structs.h mysqlnd_wireprotocol.c | ||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-53172@lists.php.net to get a copy of this message | ||
Hi Andrey,
All ext/mysql tests still crash for me.
$ gdb sapi/cli/php
(gdb) r ../ext/mysql/tests/001.php
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1208944352 (LWP 31989)]
0x083c63ec in mysqlnd_connect (conn=0x9943e3c, host=0x9942f0c "localhost",
user=0x9942684 "root", passwd=0x9946178 "", passwd_len=0,
db=0x890f751 "",
db_len=0, port=3306, socket=0x9820d00 "/var/lib/mysql/mysql.sock",
mysql_flags=128, zval_cache=0x99ad288)
at /home/dmitry/php/php5.3/ext/mysqlnd/mysqlnd.c:757
757 conn->m->set_client_option(conn,
MYSQLND_OPT_NET_READ_BUFFER_SIZE,
Thanks. Dmitry.
Andrey Hristov wrote:
> andrey Mon Sep 15 18:09:20 2008 UTC
>
> Modified files: (Branch: PHP_5_3)
> /php-src/ext/mysqli mysqli.c
> /php-src/ext/mysqlnd mysqlnd.c mysqlnd_enum_n_def.h
> mysqlnd_structs.h mysqlnd_wireprotocol.c
> Log:
> MFH:
> Add float conversions too. Float users should understand how float works!!!
>
>
>
> http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/mysqli.c?r1=1.72.2.16.2.17.2.29&r2=1.72.2.16.2.17.2.30&diff_format=u
> Index: php-src/ext/mysqli/mysqli.c
> diff -u php-src/ext/mysqli/mysqli.c:1.72.2.16.2.17.2.29
> php-src/ext/mysqli/mysqli.c:1.72.2.16.2.17.2.30
> --- php-src/ext/mysqli/mysqli.c:1.72.2.16.2.17.2.29 Fri Jul 25 08:23:06 2008
> +++ php-src/ext/mysqli/mysqli.c Mon Sep 15 18:09:20 2008
> @@ -17,7 +17,7 @@
> | Ulf Wendel <uw@php.net> |
> +----------------------------------------------------------------------+
>
> - $Id: mysqli.c,v 1.72.2.16.2.17.2.29 2008/07/25 08:23:06 dmitry Exp $
> + $Id: mysqli.c,v 1.72.2.16.2.17.2.30 2008/09/15 18:09:20 andrey Exp $
> */
>
> #ifdef HAVE_CONFIG_H
> @@ -777,7 +777,7 @@
> REGISTER_LONG_CONSTANT("MYSQLI_OPT_NET_READ_BUFFER_SIZE",
> MYSQLND_OPT_NET_READ_BUFFER_SIZE, CONST_CS | CONST_PERSISTENT);
> #endif
> #ifdef MYSQLND_STRING_TO_INT_CONVERSION
> - REGISTER_LONG_CONSTANT("MYSQLI_OPT_INT_AND_YEAR_AS_INT",
> MYSQLND_OPT_INT_AND_YEAR_AS_INT, CONST_CS | CONST_PERSISTENT);
> + REGISTER_LONG_CONSTANT("MYSQLI_OPT_INT_AND_FLOAT_NATIVE",
> MYSQLND_OPT_INT_AND_FLOAT_NATIVE, CONST_CS | CONST_PERSISTENT);
> #endif
>
> /* mysqli_real_connect flags */
>
> http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd.c?r1=1.5.2.26&r2=1.5.2.27&diff_format=u
> Index: php-src/ext/mysqlnd/mysqlnd.c
> diff -u php-src/ext/mysqlnd/mysqlnd.c:1.5.2.26 php-src/ext/mysqlnd/mysqlnd.c:1.5.2.27
> --- php-src/ext/mysqlnd/mysqlnd.c:1.5.2.26 Tue Aug 19 10:42:11 2008
> +++ php-src/ext/mysqlnd/mysqlnd.c Mon Sep 15 18:09:20 2008
> @@ -18,7 +18,7 @@
> +----------------------------------------------------------------------+
> */
>
> -/* $Id: mysqlnd.c,v 1.5.2.26 2008/08/19 10:42:11 johannes Exp $ */
> +/* $Id: mysqlnd.c,v 1.5.2.27 2008/09/15 18:09:20 andrey Exp $ */
> #include "php.h"
> #include "mysqlnd.h"
> #include "mysqlnd_wireprotocol.h"
> @@ -1711,8 +1711,8 @@
> conn->options.net_read_buffer_size = *(uint*) value;
> break;
> #ifdef MYSQLND_STRING_TO_INT_CONVERSION
> - case MYSQLND_OPT_INT_AND_YEAR_AS_INT:
> - conn->options.int_and_year_as_int = *(uint*) value;
> + case MYSQLND_OPT_INT_AND_FLOAT_NATIVE:
> + conn->options.int_and_float_native = *(uint*) value;
> break;
> #endif
> case MYSQL_OPT_CONNECT_TIMEOUT:
>
> http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_enum_n_def.h?r1=1.2.2.10&r2=1.2.2.11&diff_format=u
> Index: php-src/ext/mysqlnd/mysqlnd_enum_n_def.h
> diff -u php-src/ext/mysqlnd/mysqlnd_enum_n_def.h:1.2.2.10
> php-src/ext/mysqlnd/mysqlnd_enum_n_def.h:1.2.2.11
> --- php-src/ext/mysqlnd/mysqlnd_enum_n_def.h:1.2.2.10 Fri Sep 12 15:08:41 2008
> +++ php-src/ext/mysqlnd/mysqlnd_enum_n_def.h Mon Sep 15 18:09:20 2008
> @@ -18,7 +18,7 @@
> +----------------------------------------------------------------------+
> */
>
> -/* $Id: mysqlnd_enum_n_def.h,v 1.2.2.10 2008/09/12 15:08:41 andrey Exp $ */
> +/* $Id: mysqlnd_enum_n_def.h,v 1.2.2.11 2008/09/15 18:09:20 andrey Exp $ */
> #ifndef MYSQLND_ENUM_N_DEF_H
> #define MYSQLND_ENUM_N_DEF_H
>
> @@ -136,7 +136,7 @@
> MYSQLND_OPT_NUMERIC_AND_DATETIME_AS_UNICODE = 200,
> #endif
> #ifdef MYSQLND_STRING_TO_INT_CONVERSION
> - MYSQLND_OPT_INT_AND_YEAR_AS_INT = 201,
> + MYSQLND_OPT_INT_AND_FLOAT_NATIVE = 201,
> #endif
> MYSQLND_OPT_NET_CMD_BUFFER_SIZE = 202,
> MYSQLND_OPT_NET_READ_BUFFER_SIZE = 203,
>
> http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_structs.h?r1=1.2.2.13&r2=1.2.2.14&diff_format=u
> Index: php-src/ext/mysqlnd/mysqlnd_structs.h
> diff -u php-src/ext/mysqlnd/mysqlnd_structs.h:1.2.2.13
> php-src/ext/mysqlnd/mysqlnd_structs.h:1.2.2.14
> --- php-src/ext/mysqlnd/mysqlnd_structs.h:1.2.2.13 Thu Apr 24 14:22:19 2008
> +++ php-src/ext/mysqlnd/mysqlnd_structs.h Mon Sep 15 18:09:20 2008
> @@ -18,7 +18,7 @@
> +----------------------------------------------------------------------+
> */
>
> -/* $Id: mysqlnd_structs.h,v 1.2.2.13 2008/04/24 14:22:19 andrey Exp $ */
> +/* $Id: mysqlnd_structs.h,v 1.2.2.14 2008/09/15 18:09:20 andrey Exp $ */
>
> #ifndef MYSQLND_STRUCTS_H
> #define MYSQLND_STRUCTS_H
> @@ -177,7 +177,7 @@
>
> zend_bool numeric_and_datetime_as_unicode;
> #ifdef MYSQLND_STRING_TO_INT_CONVERSION
> - zend_bool int_and_year_as_int;
> + zend_bool int_and_float_native;
> #endif
> unsigned int net_read_buffer_size;
> } MYSQLND_OPTION;
>
> http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_wireprotocol.c?r1=1.4.2.18&r2=1.4.2.19&diff_format=u
> Index: php-src/ext/mysqlnd/mysqlnd_wireprotocol.c
> diff -u php-src/ext/mysqlnd/mysqlnd_wireprotocol.c:1.4.2.18
> php-src/ext/mysqlnd/mysqlnd_wireprotocol.c:1.4.2.19
> --- php-src/ext/mysqlnd/mysqlnd_wireprotocol.c:1.4.2.18 Mon Sep 15 14:07:44 2008
> +++ php-src/ext/mysqlnd/mysqlnd_wireprotocol.c Mon Sep 15 18:09:20 2008
> @@ -1467,7 +1467,7 @@
> zend_uchar *bit_area = (zend_uchar*) row_buffer->ptr + data_size + 1; /* we allocate from
> here */
> zend_bool as_unicode = conn->options.numeric_and_datetime_as_unicode;
> #ifdef MYSQLND_STRING_TO_INT_CONVERSION
> - zend_bool as_int = conn->options.int_and_year_as_int;
> + zend_bool as_int_or_float = conn->options.int_and_float_native;
> #endif
>
> DBG_ENTER("php_mysqlnd_rowp_read_text_protocol");
> @@ -1551,7 +1551,7 @@
> }
>
> #ifdef MYSQLND_STRING_TO_INT_CONVERSION
> - if (as_int && perm_bind.php_type == IS_LONG &&
> + if (as_int_or_float && perm_bind.php_type == IS_LONG &&
> perm_bind.pack_len <= SIZEOF_LONG)
> {
> zend_uchar save = *(p + len);
> @@ -1580,6 +1580,14 @@
> }
> }
> *(p + len) = save;
> + } else if (as_int_or_float && perm_bind.php_type == IS_DOUBLE)
> + {
> + zend_uchar save = *(p + len);
> + /* We have to make it ASCIIZ temporarily */
> + *(p + len) = '\0';
> + double v = atof((char *) p);
> + ZVAL_DOUBLE(*current_field, v);
> + *(p + len) = save;
> } else
> #endif /* MYSQLND_STRING_TO_INT_CONVERSION */
> if (fields_metadata[i].type == MYSQL_TYPE_BIT) {
>
>
>