Re: locale - Mailing list pgsql-hackers
| From | Bruce Momjian |
|---|---|
| Subject | Re: locale |
| Date | |
| Msg-id | 200404071728.i37HSjI13944@candle.pha.pa.us Whole thread Raw |
| In response to | locale (Dennis Bjorklund <db@zigo.dhs.org>) |
| Responses |
Re: locale
|
| List | pgsql-hackers |
Dennis Bjorklund wrote:
> Is anyone working to make the locale support in pg better? Running initdb
> to set the locale is a bit heavy. It would be nice to at least be able to
> set it per database.
Oops, I confused locale and multibyte. Yes, I don't see a way to change
locale for new databases, but I don't see why we can't.
The initdb manual page says:
initdb initializes the database cluster's default locale and character set encoding. Some locale
categoriesare fixed for the lifetime of the cluster, so it is important to make the right choice when
runninginitdb. Other locale categories can be changed later when the server is started. initdb will write
thoselocale settings into the postgresql.conf configuration file so they are the default, but they
canbe changed by editing that file. To set the locale that initdb uses, see the description of the
--localeoption. The character set encoding can be set separately for each database as it is created. initdb
determines the encoding for the template1 database, which will serve as the default for all other
databases. To alter the default encoding use the --encoding option.
and
--locale=locale Sets the default locale for the database cluster. If this option is
not specified, the locale is inherited from the environment that initdb runs in.
--lc-collate=locale
--lc-ctype=locale
--lc-messages=locale
--lc-monetary=locale
--lc-numeric=locale
--lc-time=locale Like --locale, but only sets the locale in the specified category.
My only guess is that you can use ALTER DATABASE SET to set some of the
values when someone connects to the database.
Looking at guc.c I see:
{ {"lc_collate", PGC_INTERNAL, CLIENT_CONN_LOCALE, gettext_noop("Shows the collation order
locale."), NULL, GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE }, &locale_collate, "C",
NULL,NULL },
{ {"lc_ctype", PGC_INTERNAL, CLIENT_CONN_LOCALE, gettext_noop("Shows the character classification
andcase conversion locale."), NULL, GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE },
&locale_ctype, "C", NULL, NULL },
{ {"lc_messages", PGC_SUSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the language in which messages
aredisplayed."), NULL }, &locale_messages, "", locale_messages_assign, NULL },
{ {"lc_monetary", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the locale for formatting
monetaryamounts."), NULL }, &locale_monetary, "C", locale_monetary_assign, NULL },
{ {"lc_numeric", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the locale for formatting
numbers."), NULL }, &locale_numeric, "C", locale_numeric_assign, NULL },
{ {"lc_time", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the locale for formatting date and
timevalues."), NULL }, &locale_time, "C", locale_time_assign, NULL },
You can't change the internal ones, but you can modify some of the others.
Anyone know why we don't allow locale to be set per database?
-- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610)
359-1001+ If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square,
Pennsylvania19073
pgsql-hackers by date: