postgresql/src/include
Tom Lane eb3e90cad1 Avoid thread-safety problem in ecpglib.
ecpglib attempts to force the LC_NUMERIC locale to "C" while reading
server output, to avoid problems with strtod() and related functions.
Historically it's just issued setlocale() calls to do that, but that
has major problems if we're in a threaded application.  setlocale()
itself is not required by POSIX to be thread-safe (and indeed is not,
on recent OpenBSD).  Moreover, its effects are process-wide, so that
we could cause unexpected results in other threads, or another thread
could change our setting.

On platforms having uselocale(), which is required by POSIX:2008,
we can avoid these problems by using uselocale() instead.  Windows
goes its own way as usual, but we can make it safe by using
_configthreadlocale().  Platforms having neither continue to use the
old code, but that should be pretty much nobody among current systems.

(Subsequent buildfarm results show that recent NetBSD versions still
lack uselocale(), but it's not a big problem because they also do not
support non-"C" settings for LC_NUMERIC.)

Back-patch of commits 8eb4a9312 and ee27584c4.

Michael Meskes and Tom Lane; thanks also to Takayuki Tsunakawa.

Discussion: https://postgr.es/m/31420.1547783697@sss.pgh.pa.us
2019-01-21 23:18:58 -05:00
..
access Check for conflicting queries during replay of gistvacuumpage() 2018-12-21 02:33:37 +03:00
bootstrap Update copyright for 2016 2016-01-02 13:33:40 -05:00
catalog Fix missing role dependencies for some schema and type ACLs. 2018-11-09 20:42:03 -05:00
commands Mark assorted variables PGDLLIMPORT. 2017-12-05 09:27:20 -05:00
common Fix integer-overflow problems in interval comparison. 2017-04-05 23:51:28 -04:00
datatype Be more careful about out-of-range dates and timestamps. 2016-03-16 19:09:28 -04:00
executor Fix failure with initplans used conditionally during EvalPlanQual rechecks. 2018-09-15 13:42:34 -04:00
fe_utils Empty search_path in Autovacuum and non-psql/pgbench clients. 2018-02-26 07:39:48 -08:00
foreign Remove GetUserMappingId() and GetUserMappingById(). 2016-07-22 11:32:23 -04:00
lib Revert "Permit dump/reload of not-too-large >1GB tuples" 2016-12-06 12:46:03 -03:00
libpq Give nicer error message when connecting to a v10 server requiring SCRAM. 2017-05-05 11:24:02 +03:00
mb Update copyright for 2016 2016-01-02 13:33:40 -05:00
nodes Change more places to be less trusting of RestrictInfo.is_pushed_down. 2018-04-20 15:19:17 -04:00
optimizer Avoid sharing PARAM_EXEC slots between different levels of NestLoop. 2019-01-11 15:53:34 -05:00
parser Fix INSERT ON CONFLICT UPDATE through a view that isn't just SELECT *. 2018-08-04 19:38:58 -04:00
port Remove overzeleous assertions in pg_atomic_flag code. 2018-04-07 18:30:15 -07:00
portability Update copyright for 2016 2016-01-02 13:33:40 -05:00
postmaster Mark assorted variables PGDLLIMPORT. 2017-12-05 09:27:20 -05:00
regex Suppress compiler warnings about useless comparison of unsigned to zero. 2016-02-15 17:12:16 -05:00
replication Fix "base" snapshot handling in logical decoding 2018-06-26 16:38:34 -04:00
rewrite Fix creation of resjunk tlist entries for inherited mixed UPDATE/DELETE. 2017-11-27 17:54:10 -05:00
snowball Update copyright for 2016 2016-01-02 13:33:40 -05:00
storage PANIC on fsync() failure. 2018-11-19 13:54:00 +13:00
tcop Fix event triggers for partitioned tables 2018-10-06 19:17:46 -03:00
tsearch Fix typos in comments. 2017-02-06 11:34:15 +02:00
utils Fix missing role dependencies for some schema and type ACLs. 2018-11-09 20:42:03 -05:00
.gitignore Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
c.h Allow btree comparison functions to return INT_MIN. 2018-10-05 16:01:30 -04:00
fmgr.h Revert addition of PGDLLEXPORT in PG_FUNCTION_INFO_V1 macro. 2016-10-12 18:01:52 -04:00
funcapi.h Add a utility function to extract variadic function arguments 2017-10-25 07:19:59 -04:00
getaddrinfo.h Update copyright for 2016 2016-01-02 13:33:40 -05:00
getopt_long.h Update copyright for 2016 2016-01-02 13:33:40 -05:00
Makefile Create src/fe_utils/, and move stuff into there from pg_dump's dumputils. 2016-03-24 15:55:57 -04:00
miscadmin.h Mark assorted variables PGDLLIMPORT. 2017-12-05 09:27:20 -05:00
pg_config.h.in Avoid thread-safety problem in ecpglib. 2019-01-21 23:18:58 -05:00
pg_config.h.win32 Avoid thread-safety problem in ecpglib. 2019-01-21 23:18:58 -05:00
pg_config_ext.h.in Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
pg_config_ext.h.win32 Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
pg_config_manual.h Bring some clarity to the defaults for the xxx_flush_after parameters. 2016-11-25 18:36:10 -05:00
pg_getopt.h Use our own getopt() on OpenBSD. 2019-01-18 15:06:26 -05:00
pg_trace.h Update copyright for 2016 2016-01-02 13:33:40 -05:00
pgstat.h Fix typos in comments. 2016-10-26 11:13:17 +03:00
pgtar.h Update copyright for 2016 2016-01-02 13:33:40 -05:00
pgtime.h Mark assorted variables PGDLLIMPORT. 2017-12-05 09:27:20 -05:00
port.h Run the postmaster's signal handlers without SA_RESTART. 2017-04-24 13:00:23 -04:00
postgres.h Adjust DatumGetBool macro, this time for sure. 2016-04-28 11:50:58 -04:00
postgres_ext.h Add a nonlocalized version of the severity field to client error messages. 2016-08-26 16:20:24 -04:00
postgres_fe.h Update copyright for 2016 2016-01-02 13:33:40 -05:00
rusagestub.h Update copyright for 2016 2016-01-02 13:33:40 -05:00
windowapi.h Update copyright for 2016 2016-01-02 13:33:40 -05:00