Hi everybody,

I'm currently working on https://github.com/php/php-src/pull/186, which fixes a 
problem with PostgreSQL when passing a float to pg_query_params() with a locale 
setting that uses "," as a decimal point. pg_query_params() uses 
convert_to_string(), which uses %G as a format string for floats, which is 
locale sensitive (and therefore converts e.g. in hr_HR or de_DE to "1,1"). The 
proposed fix is to introduce a new API convert_to_cstring() in the Zend Engine 
to allow converting types to C-locale strings.

This kind of fix is very likely needed in other places, where floats are 
converted using convert_to_string(). I haven’t found time to try e.g. mysqlnd, 
but I suspect we’ll find similar issues there. I don’t think the proposed 
workaround of burden users with explicitly converting floats to a numeric 
representation is a good solution and I think we should fix bugs like that in 
places they occur.

What’s your take on the proposed fix of introducing convert_to_cstring() and 
using it where external protocols require a locale insensitive float conversion?

cu,
Lars
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to