Always use our own versions of *printf().
Tom Lane <tgl@sss.pgh.pa.us>
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
| Path | Change | +/− |
|---|---|---|
| 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
- Allowing printf("%m") only where it actually works 50 messages · 2018-05-21 → 2018-10-09