| From: | ITAGAKI Takahiro <itagaki(dot)takahiro(at)oss(dot)ntt(dot)co(dot)jp> | 
|---|---|
| To: | Magnus Hagander <magnus(at)hagander(dot)net> | 
| Cc: | Hiroshi Inoue <inoue(at)tpf(dot)co(dot)jp>, Hiroshi Saito <z-saito(at)guitar(dot)ocn(dot)ne(dot)jp>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> | 
| Subject: | Re: Solve a problem of LC_TIME of windows. | 
| Date: | 2009-01-08 02:54:36 | 
| Message-ID: | 20090108113242.8B96.52131E4D@oss.ntt.co.jp | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers pgsql-patches | 
Magnus Hagander <magnus(at)hagander(dot)net> wrote:
> ITAGAKI Takahiro wrote:
> > Ok, wcsftime() requries both LC_TIME and LC_CTYPE are the same setting
> > (at least encoding) on Windows.
> > 
> Hmm. Is this actually cleaner than using the original method as
> suggested? Because if I understand things right, that version did *not*
> require the setting of LC_CTYPE? (this is the version that uses strftime
> and does two conversions)
No, we can't. I found strftime doesn't work if the database is
initialized with non-C locale. It works only when lc_ctype = C and
the encoding of lc_time is matched with Windows' one.
On the other hand, wcsftime seems to be more robust.
(The reason might come from mysterious msvcrt implementation.)
[For reviewers and testers]
For the above reason, please test the patch with some combinations
of locales and encodings, some of that might be different from
Windows' native ones.
[error result of strftime version]
$ initdb --locale=Japanese_Japan.20932 --encoding=eucjp
postgres=# SELECT name, setting FROM pg_settings WHERE name LIKE 'lc%';
    name     |       setting
-------------+----------------------
 lc_collate  | Japanese_Japan.20932
 lc_ctype    | Japanese_Japan.20932
 lc_messages | Japanese_Japan.20932
 lc_monetary | Japanese_Japan.20932
 lc_numeric  | Japanese_Japan.20932
 lc_time     | Japanese_Japan.20932
(6 rows)
postgres=# SELECT to_char(now(), 'TMday');
ERROR:  invalid byte sequence for encoding "UTF8": 0x00
HINT:  This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".
Regards,
---
ITAGAKI Takahiro
NTT Open Source Software Center
| From | Date | Subject | |
|---|---|---|---|
| Next Message | KaiGai Kohei | 2009-01-08 02:55:08 | Re: Updates of SE-PostgreSQL 8.4devel patches (r1389) | 
| Previous Message | Bruce Momjian | 2009-01-08 02:49:51 | Re: text search patch status update? | 
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Hiroshi Inoue | 2009-01-08 21:31:48 | Re: Solve a problem of LC_TIME of windows. | 
| Previous Message | Hiroshi Inoue | 2009-01-07 21:47:38 | Re: Solve a problem of LC_TIME of windows. |