Обсуждение: where is the locale set for each server instance?
Hi!
I'm pluggin ICU into PostgreSQL for unicode collation, since FreeBSD has no
support for unicode collation. It works fine, but I cannot find out where
to set the default locale for each backend instance. I want to use the
LC_COLLATE used in initdb, now I've just hard wired it for my own needs. I
tried backend/access/transam/xlog.c:ReadControlFile, but it is not
sufficient.
in backend/main/main.c:
/*
* Set up locale information from environment. Note that LC_CTYPE and
* LC_COLLATE will be overridden later from pg_control if we are in an
* already-initialized database.
So, I'm trying to find out where LC_COLLATE is overridden. Any tips?
Thanks,
Palle
Palle Girgensohn <girgen@pingpong.net> writes:
> So, I'm trying to find out where LC_COLLATE is overridden. Any tips?
access/transam/xlog.c (which is the only file that touches pg_control,
I believe).
regards, tom lane
--On söndag, mars 13, 2005 17.01.31 -0500 Tom Lane <tgl@sss.pgh.pa.us> wrote: > Palle Girgensohn <girgen@pingpong.net> writes: >> So, I'm trying to find out where LC_COLLATE is overridden. Any tips? > > access/transam/xlog.c (which is the only file that touches pg_control, > I believe). OK, seems my problem is with ICU. The xlog.c:ReadConfigFile() is not run for each backend, it seems, I assume it is forked after that. Seems ICU cannot "remember" a setDefault(locale) call for some reason. I'll just have to do a setlocale(LC_COLLATE, NULL) when I need one, I guess... It'll work fine. Thanks! Palle
Palle Girgensohn <girgen@pingpong.net> writes:
> OK, seems my problem is with ICU. The xlog.c:ReadConfigFile() is not run
> for each backend, it seems, I assume it is forked after that.
No, it is run once in the postmaster, as indeed the comments in it say.
> Seems ICU
> cannot "remember" a setDefault(locale) call for some reason.
Curious. You'd expect whatever state that sets to persist across a fork.
You should probably ping the ICU people about it.
regards, tom lane
--On söndag, mars 13, 2005 18.37.24 -0500 Tom Lane <tgl@sss.pgh.pa.us> wrote: > Palle Girgensohn <girgen@pingpong.net> writes: >> OK, seems my problem is with ICU. The xlog.c:ReadConfigFile() is not run >> for each backend, it seems, I assume it is forked after that. > > No, it is run once in the postmaster, as indeed the comments in it say. > >> Seems ICU >> cannot "remember" a setDefault(locale) call for some reason. > > Curious. You'd expect whatever state that sets to persist across a fork. > You should probably ping the ICU people about it. You're right, I will. Thanks, Palle