> oe> Try setting the environment variable LANG before starting the
> oe> postmaster:
> oe> $ export LANG=en_US
> Unfortunately, this doesn't prevent the backend problem; the backend
> still complains about the money format the and front-end gets a broken
> pipe. Not sure what about the locale postgres doesn't like. For now,
> I guess I'll just stick with my home-built version that doesn't use
> the locale at all.
I tried this at my clean RH5.0 machine at work, with the RH5.0 rpm
installation of Postgres. It didn't help, and I guess I would have been
suprised if it did since the locale environment should have defaulted to
the "C" (same as "POSIX"?) conventions. I didn't get a backend crash,
just the usual symptom.
Didn't find a new Postgres package in Cristian's directory when I looked
this morning, but _did_ find a glibc2.0.7-2. Unfortunately it didn't seem
to fix the rounding problem in date/time. I stopped and restarted the
Postgres backend, but did not reboot the machine; was that sufficient?
Seems like 2.0.7-2 should have the features (and fixes) Oliver reported
for Debian, so don't know the story :(
My little test program, which also fails on my RH4.2 system, is included
below. It should return some characters related to locale; in this
version it tries the numeric decimal point (which does print) and the
money decimal point, which doesn't. Used to work, though as I mentioned
the code as it is currently may be damaged by my trial and error attempts
to get locale support working.
- Tom
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <locale.h>
struct lconv *lc;
int main(int argc, char **argv) {
if (argc > 1)
printf( "environment variable is %s\n", getenv(argv[1]));
printf( "locale set to %s\n", setlocale(LC_MONETARY, "C"));
lc = localeconv();
printf("%c %c\n", *lc->decimal_point, *lc->mon_decimal_point);
exit(0);
}