php.net |  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
Votes:1
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
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: dave dot lane at gmx dot net
New email:
PHP Version: OS:

 

 [2007-08-31 12:34 UTC] dave dot lane at gmx dot net
Description:
------------
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. 


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2010-05-20 12:37 UTC] mike@php.net
-Status: Open +Status: Bogus
 [2010-05-20 12:37 UTC] mike@php.net
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);
odbc_pconnect(...)
SQL: select current_timestamp from ... result: date in german format
setlocale(LC_ALL, en_EN);
odbc_pconnect(...)
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] mike@php.net
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-2025 The PHP Group
All rights reserved.
Last updated: Wed Jul 09 11:01:34 2025 UTC