diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c index 37e1ccd9a9..74e2db6082 100644 --- a/src/backend/utils/adt/formatting.c +++ b/src/backend/utils/adt/formatting.c @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------- * formatting.c * - * $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.122 2007/02/09 04:17:58 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.123 2007/02/13 02:00:55 momjian Exp $ * * * Portions Copyright (c) 1999-2007, PostgreSQL Global Development Group @@ -3834,14 +3834,6 @@ NUM_prepare_locale(NUMProc *Np) else Np->L_positive_sign = "+"; - /* - * Number thousands separator - */ - if (lconv->thousands_sep && *lconv->thousands_sep) - Np->L_thousands_sep = lconv->thousands_sep; - else - Np->L_thousands_sep = ","; - /* * Number decimal point */ @@ -3850,6 +3842,21 @@ NUM_prepare_locale(NUMProc *Np) else Np->decimal = "."; + if (!IS_LDECIMAL(Np->Num)) + Np->decimal = "."; + + /* + * Number thousands separator + * + * Some locales (e.g. broken glibc pt_BR), have a comma for + * decimal, but "" for thousands_sep, so we might make the + * thousands_sep comma too. 2007-02-12 + */ + if (lconv->thousands_sep && *lconv->thousands_sep) + Np->L_thousands_sep = lconv->thousands_sep; + else + Np->L_thousands_sep = ","; + /* * Currency symbol */ @@ -3857,9 +3864,6 @@ NUM_prepare_locale(NUMProc *Np) Np->L_currency_symbol = lconv->currency_symbol; else Np->L_currency_symbol = " "; - - if (!IS_LDECIMAL(Np->Num)) - Np->decimal = "."; } else {