Re: [HACKERS] Re: pgsql: setlocale() on Windows doesn't work correctly if the locale name

Hiroshi Inoue <inoue@tpf.co.jp>

From: Hiroshi Inoue <inoue@tpf.co.jp>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Heikki Linnakangas <heikki.linnakangas@iki.fi>, pgsql-hackers@postgresql.org, pgsql-committers@postgresql.org
Date: 2011-04-20T01:42:35Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. setlocale() on Windows doesn't work correctly if the locale name contains

(2011/04/20 9:22), Tom Lane wrote:
> Hiroshi Inoue<inoue@tpf.co.jp>  writes:
>> (2011/04/16 2:56), Heikki Linnakangas wrote:
>>> setlocale() on Windows doesn't work correctly if the locale name contains
>>> apostrophes or dots.
> 
>> As for apostrophes, isn't the cause that initdb loses the single quote
>> of locale? ([BUGS] BUG #5818: initdb lose the single quote of locale)
> 
>> As the bug reporter mentions, initdb loses the single quote in reality.
>> Concretely speaking, scanstr() called from bootscanner.l loses it.
>> I'm not sure if it's suitable for the bootstrap code to call scanstr().
> 
> Huh?  Bootstrap mode just deals with the data found in
> src/include/catalog/*.h.  The locale names found by initdb.c are stuck
> in there afterwards, using regular SQL commands.

bootstrap_template1() in initdb runs the BKI script in bootstrap
mode to create template1. Some symbols (LC_COLLATE, LC_CTYPE in
pg_database etc) in the BKI script are substituted by actual values
using replace_token(). Isn't it correct?
ISTM replace_token() takes care of nothing about single quotes
in its input values but the comment in scanstr() says
                        /*
                         * Note: if scanner is working right, unescaped
quotes can only
                         * appear in pairs, so there should be another
character.
                         */

regards,
Hiroshi Inoue

> I don't know where the
> problem really comes from, but I doubt the connection you're trying to
> make above.
> 
> 			regards, tom lane