Do not return NULL from pg_newlocale_from_collation().
Jeff Davis <jdavis@postgresql.org>
Do not return NULL from pg_newlocale_from_collation(). Previously, pg_newlocale_from_collation() returned NULL as a special case for the DEFAULT_COLLATION_OID if the provider was libc. In that case the behavior would depend on the last call to setlocale(). Now, consistent with the other providers, it will return a pointer to default_locale, which is not dependent on setlocale(). Note: for the C and POSIX locales, the locale_t structure within the pg_locale_t will still be zero, because those locales are implemented with internal logic and do not use libc at all. lc_collate_is_c() and lc_ctype_is_c() still depend on setlocale() to determine the current locale, which will be removed in a subsequent commit. Discussion: https://postgr.es/m/cfd9eb85-c52a-4ec9-a90e-a5e4de56e57d@eisentraut.org Reviewed-by: Peter Eisentraut, Andreas Karlsson
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/utils/adt/pg_locale.c | modified | +110 −81 |
Discussion
- tiny step toward threading: reduce dependence on setlocale() 33 messages · 2024-06-06 → 2025-10-28