Re: Thread-safe nl_langinfo() and localeconv()
Thomas Munro <thomas.munro@gmail.com>
From: Thomas Munro <thomas.munro@gmail.com>
To: Heikki Linnakangas <hlinnaka@iki.fi>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2024-08-19T06:29:06Z
Lists: pgsql-hackers
Attachments
- v5-0001-Provide-thread-safe-pg_localeconv_r.patch (text/x-patch) patch v5-0001
- v5-0002-Use-thread-safe-strftime_l-instead-of-strftime.patch (text/x-patch) patch v5-0002
- v5-0003-Remove-setlocale-from-check_locale.patch (text/x-patch) patch v5-0003
Here is a slightly better version of patch 0003. I removed some unnecessary refactoring, making the patch smaller. FTR I wrote a small program[1] for CI to test the assumptions about Windows in 0001. I printed out the addresses of the objects, to confirm that different threads were looking at different objects once the thread local mode was activated, and also assert that the struct contents were as expected while 8 threads switched locales in a tight loop, and the output[2] looked OK to me. [1] https://github.com/macdice/hello-windows/blob/793eb2fe3e6738c200781f681a22a7e6358f39e5/test.c [2] https://cirrus-ci.com/task/4650412253380608
Commits
-
Fix "‘static’ is not at beginning of declaration" warning
- 116e851db5b3 18.0 landed
-
Use thread-safe strftime_l() instead of strftime().
- 890fc826c91f 18.0 landed
-
Provide thread-safe pg_localeconv_r().
- b98be8a2a2a6 18.0 landed
-
Harmonize MinGW CODESET lookup with MSVC.
- bf3401fe813a 18.0 landed
-
Include <xlocale.h> for macOS, take II.
- 2488058dc356 18.0 landed
-
Use thread-safe nl_langinfo_l(), not nl_langinfo().
- 35eeea623022 18.0 landed
-
All POSIX systems have langinfo.h and CODESET.
- 14c648ff0094 18.0 landed