Обсуждение: 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