Bug #73436 format() with locale it_IT return wrong format
Submitted: 30 Jul 2014 13:55 Modified: 31 Jul 2014 7:59
Reporter: Mario Bianchi Bianchi Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: DML Severity:S3 (Non-critical)
Version:5.5.38, 5.6.19, 5.6.21 OS:Linux (debian-linux-gnu (x86_64))
Assigned to: CPU Architecture:Any

[30 Jul 2014 13:55] Mario Bianchi Bianchi
Description:
Hi folks!
Is possible that mysql have some racist behavior against Italians, or a positive one for Deutschland?

Whereas format(float(9,2), 2, 'de_DE') return the correct number where ',' is the decimal separator and '.' is group separator, format(float(9,2), 2, 'it_IT') return the number without grouping the thousands.

Is that a problem of mysql or my system locale? I have no clue.

mysql Ver 14.14 Distrib 5.5.38, for debian-linux-gnu (x86_64)

How to repeat:
- format(123456.56, 2, 'de_DE') -> 123.456,56
- format(123456.56, 2, 'it_IT') -> 123456,56
[30 Jul 2014 18:18] Peter Laursen
also see

http://bugs.mysql.com/bug.php?id=73439
and 
http://bugs.mysql.com/bug.php?id=73440

-- Peter
-- not a MySQL/Oracle person
[31 Jul 2014 7:59] MySQL Verification Team
Hello Mario,

Thank you for the bug report.
Verified as described.

Thanks,
Umesh
[31 Jul 2014 8:01] MySQL Verification Team
// 5.6.21

mysql> select format(123456.56, 2, 'de_DE');
+-------------------------------+
| format(123456.56, 2, 'de_DE') |
+-------------------------------+
| 123.456,56                    |
+-------------------------------+
1 row in set (0.00 sec)

mysql> select format(123456.56, 2, 'it_IT');
+-------------------------------+
| format(123456.56, 2, 'it_IT') |
+-------------------------------+
| 123456,56                     |
+-------------------------------+
1 row in set (0.00 sec)
[31 Jul 2014 8:06] MySQL Verification Team
Bug #73439 is marked as duplicate of this
[31 Jul 2014 8:07] MySQL Verification Team
Bug #73440 is marked as duplicate of this
[31 Jul 2014 18:36] Peter Laursen
@Umesh .. I don't think the two bugs are *exact dupicates* of this,

*this*: is about missing formatting of Italian before the decimal sign.

whereas mine are 

*one*: Danish (and a lot of other continenatal European locales) are treated as 'anglo-american'.

*two*: Nobdoy at Mysql has (and never had) any clue about South Asian locales.

'In my understanding they are valid as 3 different independent bug reports.  You mark them as duplilcates.  This must mean that you intend to solve them all in one patch.  Do you have developer accept of this?

Besides I will have to ask you to 'economize' the use of this stupid and offending saved standard reply "Please do not submit the same bug more than once. An existing bug report .. already describes this very problem ..". Such reply does not encourage me to help Oracle with bug reports in the future. I can post to MariaDB mailing list instead. I dont' care mcuh if the issue gets resolved in Oracle/MSYQL as I don't use it anymore.

Your former colleague coud teach you a lesson about such 'standard replies':
http://mys qlentomologist.blogspot.dk/2014/04/fun-with-bugs-32-some-bugs-ive-reported.html "I probably has to be insulted by, as a person who had not only reported many dozens of good "Verified" valid bugs, but also the one who had a chance to use the same boilerplate standard reply for 7+ years and hardly used it more than maybe 10 times over these years... "
[1 Aug 2014 4:11] MySQL Verification Team
Hello Peter,

My apologies if the "standard text" offended you, I'll check internally on this and would discuss on the same. Coming to the bugs, imho - even if they look different in nature ( messed formatting etc) all fix would be done to "format()"  only.. Let me cross check once again and process those as well.

Regards,
Umesh
[6 Sep 2015 12:02] Rick Novak
Hi,
It looks like that it is very serious and hard to work arround bug... For over one year it can't be fixed...

SELECT FORMAT(1200300400.123456789, 2, 'it_IT'); -- gives WRONG: 1200300400.12
SELECT FORMAT(1200300400.123456789, 2, 'pl_PL'); -- gives WRONG: 1200300400.12
SELECT FORMAT(1200300400.123456789, 2, 'en_US'); -- gives OK: 1,200,300,400.12
SELECT FORMAT(1200300400.123456789, 2, 'de_DE'); -- gives OK: 1.200.300.400,12

Regards,
Rick