Make collation not depend on setlocale(). Now that the result of pg_newlocale_from_collation() is always non-NULL, then we can move the collate_is_c and ctype_is_c flags into pg_locale_t. That simplifies the logic in lc_collate_is_c() and lc_ctype_is_c(), removing the dependence on setlocale().
This commit also eliminates the multi-stage initialization of the collation cache. As long as we have catalog access, then it's now safe to call pg_newlocale_from_collation() without checking lc_collate_is_c() first. Discussion: https://postgr.es/m/cfd9eb85-c52a-4ec9-a90e-a5e4de56e...@eisentraut.org Reviewed-by: Peter Eisentraut, Andreas Karlsson Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/72fe6d24a38c88e112d5e63a8e907c3e96ae46ad Modified Files -------------- src/backend/utils/adt/pg_locale.c | 180 +++++------------------------ src/include/utils/pg_locale.h | 14 +++ src/test/regress/expected/collate.utf8.out | 26 +++++ src/test/regress/sql/collate.utf8.sql | 15 +++ 4 files changed, 81 insertions(+), 154 deletions(-)