Thread: Locale problem with psqlODBC under Fedora 16

Locale problem with psqlODBC under Fedora 16

From
Zoltan Boszormenyi
Date:
Hi,

I just installed Fedora 16 and it has PostgreSQL 9.1.1 and
postgresql-odbc-09.00.0200 (which is psqlODBC).

My problem comes from this code:

    SQLBindParameter(hStmt,13,
      SQL_PARAM_INPUT, SQL_C_DOUBLE, SQL_NUMERIC, 0, 0,
      (SQLPOINTER)&co2, sizeof(co2), NULL);

New value of "co2" is 99.47 but as my Hungarian locale uses comma
instead of dot for a decimal separator, this pops up:

ERROR:  invalid input syntax for type numeric: "99,47" at character 210
STATEMENT:  update al set

megr=1,fpont=1478,csopvez=79,datum='2011-09-05'::date,d1='2011-09-04'::date,t1='21:30:00'::time,d2='2011-09-05'::date,t2='03:00:00'::time,temp=113,n_beepites=1,n_sikeres=1,kutfejnyomas='300',co2='99,47',h2sppm=0,hibajel=E''
where id=2805;

With my previous system when this code was used (PostgreSQL 8.2,
psqlodbc-08.02.xxxx era), the above code worked.

convert.c in psqlODBC hasn't changed much with regard to floating point
handling so it still uses setlocale() to  switch to "C" locale and I also
recompiled the SRPM for Fedora 16 and config.h indeed contains
"#define HAVE_LOCALE_H 1" so the relevant code with setlocale() gets
compiled in. Still, something broke the locales where something else than
a decimal-dot is used for decimal separator.

Best regards,
Zoltán Böszörményi

--
----------------------------------
Zoltán Böszörményi
Cybertec Schönig & Schönig GmbH
Gröhrmühlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
     http://www.postgresql.at/


Re: Locale problem with psqlODBC under Fedora 16

From
Boszormenyi Zoltan
Date:
2011-11-06 04:49 keltezéssel, Zoltan Boszormenyi írta:
> Hi,
>
> I just installed Fedora 16 and it has PostgreSQL 9.1.1 and
> postgresql-odbc-09.00.0200 (which is psqlODBC).
>
> My problem comes from this code:
>
>     SQLBindParameter(hStmt,13,
>       SQL_PARAM_INPUT, SQL_C_DOUBLE, SQL_NUMERIC, 0, 0,
>       (SQLPOINTER)&co2, sizeof(co2), NULL);
>
> New value of "co2" is 99.47 but as my Hungarian locale uses comma
> instead of dot for a decimal separator, this pops up:
>
> ERROR:  invalid input syntax for type numeric: "99,47" at character 210
> STATEMENT:  update al set
>
megr=1,fpont=1478,csopvez=79,datum='2011-09-05'::date,d1='2011-09-04'::date,t1='21:30:00'::time,d2='2011-09-05'::date,t2='03:00:00'::time,temp=113,n_beepites=1,n_sikeres=1,kutfejnyomas='300',co2='99,47',h2sppm=0,hibajel=E''
> where id=2805;
>
> With my previous system when this code was used (PostgreSQL 8.2,
> psqlodbc-08.02.xxxx era), the above code worked.
>
> convert.c in psqlODBC hasn't changed much with regard to floating point
> handling so it still uses setlocale() to  switch to "C" locale and I also
> recompiled the SRPM for Fedora 16 and config.h indeed contains
> "#define HAVE_LOCALE_H 1" so the relevant code with setlocale() gets
> compiled in. Still, something broke the locales where something else than
> a decimal-dot is used for decimal separator.

Same error after I bootstrapped and compiled psqlodbc-09.00.0310 from CVS.

>
> Best regards,
> Zoltán Böszörményi
>


--
----------------------------------
Zoltán Böszörményi
Cybertec Schönig & Schönig GmbH
Gröhrmühlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
     http://www.postgresql.at/


Re: Locale problem with psqlODBC under Fedora 16

From
"Inoue, Hiroshi"
Date:
Hi Zoltan,

(2011/11/06 12:49), Zoltan Boszormenyi wrote:
> Hi,
>
> I just installed Fedora 16 and it has PostgreSQL 9.1.1 and
> postgresql-odbc-09.00.0200 (which is psqlODBC).
>
> My problem comes from this code:
>
>      SQLBindParameter(hStmt,13,
>        SQL_PARAM_INPUT, SQL_C_DOUBLE, SQL_NUMERIC, 0, 0,
>        (SQLPOINTER)&co2, sizeof(co2), NULL);
>
> New value of "co2" is 99.47 but as my Hungarian locale uses comma
> instead of dot for a decimal separator, this pops up:
>
> ERROR:  invalid input syntax for type numeric: "99,47" at character 210
> STATEMENT:  update al set
>
megr=1,fpont=1478,csopvez=79,datum='2011-09-05'::date,d1='2011-09-04'::date,t1='21:30:00'::time,d2='2011-09-05'::date,t2='03:00:00'::time,temp=113,n_beepites=1,n_sikeres=1,kutfejnyomas='300',co2='99,47',h2sppm=0,hibajel=E''
> where id=2805;

OK I would try to fix it.
Please wait for a day or so.

regards,
Inoue, Hiroshi

> With my previous system when this code was used (PostgreSQL 8.2,
> psqlodbc-08.02.xxxx era), the above code worked.
>
> convert.c in psqlODBC hasn't changed much with regard to floating point
> handling so it still uses setlocale() to  switch to "C" locale and I also
> recompiled the SRPM for Fedora 16 and config.h indeed contains
> "#define HAVE_LOCALE_H 1" so the relevant code with setlocale() gets
> compiled in. Still, something broke the locales where something else than
> a decimal-dot is used for decimal separator.
>
> Best regards,
> Zoltán Böszörményi

Re: Locale problem with psqlODBC under Fedora 16

From
Hiroshi Inoue
Date:
Hi Zoltan,

(2011/11/08 8:53), Inoue, Hiroshi wrote:
> Hi Zoltan,
>
> (2011/11/06 12:49), Zoltan Boszormenyi wrote:
>> Hi,
>>
>> I just installed Fedora 16 and it has PostgreSQL 9.1.1 and
>> postgresql-odbc-09.00.0200 (which is psqlODBC).
>>
>> My problem comes from this code:
>>
>> SQLBindParameter(hStmt,13,
>> SQL_PARAM_INPUT, SQL_C_DOUBLE, SQL_NUMERIC, 0, 0,
>> (SQLPOINTER)&co2, sizeof(co2), NULL);
>>
>> New value of "co2" is 99.47 but as my Hungarian locale uses comma
>> instead of dot for a decimal separator, this pops up:
>>
>> ERROR: invalid input syntax for type numeric: "99,47" at character 210
>> STATEMENT: update al set
>>
megr=1,fpont=1478,csopvez=79,datum='2011-09-05'::date,d1='2011-09-04'::date,t1='21:30:00'::time,d2='2011-09-05'::date,t2='03:00:00'::time,temp=113,n_beepites=1,n_sikeres=1,kutfejnyomas='300',co2='99,47',h2sppm=0,hibajel=E''
>>
>> where id=2805;
>
> OK I would try to fix it.
> Please wait for a day or so.

Could you please try the attached patch?

regards,
Inoue, Hiroshi

Attachment

Re: Locale problem with psqlODBC under Fedora 16

From
Boszormenyi Zoltan
Date:
Hi,

2011-11-09 18:57 keltezéssel, Hiroshi Inoue írta:
> Hi Zoltan,
>
> (2011/11/08 8:53), Inoue, Hiroshi wrote:
>>
>> OK I would try to fix it.
>> Please wait for a day or so.
>
> Could you please try the attached patch?
>
> regards,
> Inoue, Hiroshi

it seems to work for me, thanks. I patched 09.00.311 and
tested it on the same query.

Best regards,
Zoltán Böszörményi

--
----------------------------------
Zoltán Böszörményi
Cybertec Schönig & Schönig GmbH
Gröhrmühlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
     http://www.postgresql.at/