Always use our own versions of *printf().

Tom Lane <tgl@sss.pgh.pa.us>

Commit: 96bf88d52711ad3a0a4cc2d1d9cb0e2acab85e63
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2018-09-26T17:13:57Z
Releases: 12.0
Always use our own versions of *printf().

We've spent an awful lot of effort over the years in coping with
platform-specific vagaries of the *printf family of functions.  Let's just
forget all that mess and standardize on always using src/port/snprintf.c.
This gets rid of a lot of configure logic, and it will allow a saner
approach to dealing with %m (though actually changing that is left for
a follow-on patch).

Preliminary performance testing suggests that as it stands, snprintf.c is
faster than the native printf functions for some tasks on some platforms,
and slower for other cases.  A pending patch will improve that, though
cases with floating-point conversions will doubtless remain slower unless
we want to put a *lot* of effort into that.  Still, we've not observed
that *printf is really a performance bottleneck for most workloads, so
I doubt this matters much.

Patch by me, reviewed by Michael Paquier

Discussion: https://postgr.es/m/2975.1526862605@sss.pgh.pa.us

Files

PathChange+/−
config/c-compiler.m4 modified +2 −9
config/c-library.m4 modified +0 −100
configure modified +0 −254
configure.in modified +0 −83
src/include/c.h modified +0 −8
src/include/pg_config.h.in modified +0 −17
src/include/pg_config.h.win32 modified +0 −17
src/include/port.h modified +6 −2
src/interfaces/ecpg/compatlib/Makefile modified +2 −1
src/interfaces/ecpg/ecpglib/Makefile modified +2 −2
src/interfaces/ecpg/pgtypeslib/Makefile modified +2 −2
src/interfaces/libpq/Makefile modified +2 −2
src/pl/plperl/plperl.h modified +0 −5
src/pl/plpython/plpython.h modified +0 −5
src/port/Makefile modified +2 −1
src/port/README modified +1 −1

Discussion