|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #42493 odbc_pconnect: persistent connections with different locales
Submitted: 2007-08-31 12:34 UTC Modified: 2010-05-20 15:06 UTC
Avg. Score:5.0 ± 0.0
Reproduced:1 of 1 (100.0%)
Same Version:1 (100.0%)
Same OS:1 (100.0%)
From: dave dot lane at gmx dot net Assigned:
Status: Not a bug Package: ODBC related
PHP Version: 5.2.4 OS: Linux
Private report: No CVE-ID: None
 [2007-08-31 12:34 UTC] dave dot lane at gmx dot net
We have an environment where we both use odbc_pconnect and different locales. DB2 recognises the locale and returns data formatted based on this locale. That means when we do a setlocale(LC_ALL, de_DE); before we connect we get float formatted so: 1,23541200000000E+004 and when we do a setlocale(LC_ALL, en_GB); we get float formatted so 1.23541200000000E+004. This works fine when we use odbc_connect. The problem is when we use odbc_pconnect connections are recycled without taking the locale into account. Sometimes we get english when we have set german and vice versa. 


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2010-05-20 12:37 UTC]
-Status: Open +Status: Bogus
 [2010-05-20 12:37 UTC]
Unforutnately this cannot be influenced by PHP, you need to take care of your locale when useing ODBC.
 [2010-05-20 13:52 UTC] dave dot lane at gmx dot net
The bug is about odbc_pconnect i.e. take notice of the "p". As far as I know the persistence of the connection is handled by php. The problem is the following:
setlocale(LC_ALL, de_DE);
SQL: select current_timestamp from ... result: date in german format
setlocale(LC_ALL, en_EN);
SQL: select current_timestamp from ... result: date still in german format

So obviously odbc_pconnect is taking notice of the locale when connecting, but not when using persistence connections. Thanks for the speedy reply to the problem by the way (nearly three years...)
 [2010-05-20 14:08 UTC]
thanks for wasting our time, by the way. (You probably find such comments funny, eh?)

The connection is just opened once.
 [2010-05-20 15:06 UTC] dave dot lane at gmx dot net
Excuse me? No I don't find it funny. The fact is the reply took 3 years. If you don't want to fix the problem or even understand it then fine don't. It is still a Unified ODBC problem though. If the connect routine takes notice of the locale when first connecting and not by any subsequent connections that is a bug. End of story. A fix would be to set the current locale on the existing connection or to keep track of the locales corresponding to the open connections in the pool and open a new connection when the current locale doesn't fit any in the pool. We had to stop using pconnect and implemenent our own pool doing exactly this.
PHP Copyright © 2001-2022 The PHP Group
All rights reserved.
Last updated: Sat May 21 15:05:45 2022 UTC