cvs: php-src /ext/mysqli mysqli.c /ext/mysqlnd mysqlnd_structs.h mysqlnd_wireprotocol.c
| From: | Andrey Hristov | Date: | Mon, 15 Sep 2008 18:07:58 +0000 |
| Subject: | cvs: php-src /ext/mysqli mysqli.c /ext/mysqlnd mysqlnd_structs.h mysqlnd_wireprotocol.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-53161@lists.php.net to get a copy of this message | ||
andrey Mon Sep 15 18:07:58 2008 UTC
Modified files:
/php-src/ext/mysqli mysqli.c
/php-src/ext/mysqlnd mysqlnd_structs.h mysqlnd_wireprotocol.c
Log:
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.132&r2=1.133&diff_format=u
Index: php-src/ext/mysqli/mysqli.c
diff -u php-src/ext/mysqli/mysqli.c:1.132 php-src/ext/mysqli/mysqli.c:1.133
--- php-src/ext/mysqli/mysqli.c:1.132 Fri Jul 25 08:53:11 2008
+++ php-src/ext/mysqli/mysqli.c Mon Sep 15 18:07:58 2008
@@ -17,7 +17,7 @@
| Ulf Wendel <uw@php.net> |
+----------------------------------------------------------------------+
- $Id: mysqli.c,v 1.132 2008/07/25 08:53:11 dmitry Exp $
+ $Id: mysqli.c,v 1.133 2008/09/15 18:07:58 andrey Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -783,7 +783,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_structs.h?r1=1.15&r2=1.16&diff_format=u
Index: php-src/ext/mysqlnd/mysqlnd_structs.h
diff -u php-src/ext/mysqlnd/mysqlnd_structs.h:1.15 php-src/ext/mysqlnd/mysqlnd_structs.h:1.16
--- php-src/ext/mysqlnd/mysqlnd_structs.h:1.15 Thu Apr 24 14:04:58 2008
+++ php-src/ext/mysqlnd/mysqlnd_structs.h Mon Sep 15 18:07:58 2008
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_structs.h,v 1.15 2008/04/24 14:04:58 andrey Exp $ */
+/* $Id: mysqlnd_structs.h,v 1.16 2008/09/15 18:07:58 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.20&r2=1.21&diff_format=u
Index: php-src/ext/mysqlnd/mysqlnd_wireprotocol.c
diff -u php-src/ext/mysqlnd/mysqlnd_wireprotocol.c:1.20
php-src/ext/mysqlnd/mysqlnd_wireprotocol.c:1.21
--- php-src/ext/mysqlnd/mysqlnd_wireprotocol.c:1.20 Mon Sep 15 14:02:55 2008
+++ php-src/ext/mysqlnd/mysqlnd_wireprotocol.c Mon Sep 15 18:07:58 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) {